Cluster für die Verwendung von OpenStack konfigurieren

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.