Anthos-Cluster auf Bare-Metal unterstützen den Cloud-Anbieter von OpenStack Kubernetes. Verwenden Sie diese Funktion, um OpenStack-Load-Balancing-Ressourcen (Service as a Service) automatisch bereitzustellen. Diese Ressourcen ersetzen die Metall-LB-Ressourcen, um Dienste, die auf Anthos ausgeführt werden, auf Bare-Metal-Clustern für andere OpenStack-Mandanten oder außerhalb des OpenStack-Netzwerks verfügbar zu machen.
Hinweis
Legen Sie die Anthos-Cluster fest, die OpenStack-LBaaS-Ressourcen verwenden müssen.
Prüfen Sie, ob Sie Zugriff auf die Maschinen haben, die Sie konfigurieren möchten.
cloud-controller-manager in der Kubernetes-Dokumentation ausführen
Konfigurationsdatei Ihrer Cluster ändern
Der Cloud-Anbieter von OpenStack erfordert, dass kubelet
auf allen Knoten mit dem folgenden Argument ausgeführt wird:
cloud-provider: "external"
Damit Ihre Anthos-Cluster diese Anforderung einfach erfüllen, fügen Sie die Annotation baremetal.cluster.gke.io/external-cloud-provider: "true"
vor der Initialisierung der Metadatendatei Ihrer Cluster im Abschnitt "Metadaten" hinzu.
Der Eintrag in Ihrer Konfigurationsdatei sollte folgendermaßen aussehen:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
..
Einige Cloud-Anbieter auf anderen Cloud-Plattformen erfordern ein spezielles Format für providerID
. Anthos-Cluster auf Bare-Metal generieren eine providerID
für jede Maschine. Das Format dafür ist baremetal://MACHINE_ADDRESS
. Wenn Sie eine andere providerID
verwenden möchten, können Sie zusammen mit der IP-Adresse eine für jeden Knoten angeben. Die Konfiguration sieht so aus:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
clusterNetwork:
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/20
controlPlane:
nodePoolSpec:
nodes:
- address: 10.200.0.1
+ providerID: some-prefix://unique-string
- address: 10.200.0.2
+ providerID: some-prefix2://unique-string2
...
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-admin1
spec:
clusterName: admin1
nodes:
- address: 172.18.0.2
+ providerID: some-prefix3://unique-string3
Nachdem Sie die Konfigurationsdatei bearbeitet haben, können Sie den folgenden Befehl ausführen, um Ihren Cluster zu initialisieren:
bmctl create cluster -c cluster1
Jetzt werden alle Knoten in cluster1
mit dem erforderlichen Argument cloud-provider:
"external"
ausgeführt.
Alle Knoten enthalten außerdem die folgenden Felder in den Konfigurationsdateien:
taints:
- effect: NoSchedule
key: node.cloudprovider.kubernetes.io/uninitialized
value: "true"
Diese Felder werden entfernt, nachdem Sie den Cloudanbieter auf diesem Cluster initialisiert haben.
kubelet
wird mit der angegebenen providerID
ausgeführt, wenn Sie eine für diesen Knoten angegeben haben.