Cluster für die Verwendung von OpenStack konfigurieren

Google Distributed Cloud (nur Software) unterstützt OpenStack als private Cloud-Plattform. In dieser Anleitung wird beschrieben, wie Sie einen Cluster für die Verwendung mit einem externen Cloud-Anbieter konfigurieren. Wenn Sie eine Installation von Google Distributed Cloud-Clustern (nur Software) auf OpenStack ausführen, können Sie die folgenden OpenStack-Dienste verwenden:

  • Infrastructure as a Service (IaaS)

  • Load balancing as a Service (LBaaS)

  • Speicher

Die Konfiguration eines Clusters für die Verwendung mit OpenStack umfasst Folgendes:

  • Wenn Sie den Cluster erstellen, fügen Sie die Annotation baremetal.cluster.gke.io/external-cloud-provider hinzu.

  • Diese Annotation bewirkt, dass Google Distributed Cloud ein kubelet-Flag cloud-provider=external hinzufügt.

  • Das kubelet fügt den Clusterknoten dann die Markierungen node.cloudprovider.kubernetes.io/uninitialized:NoSchedule hinzu.

Mit dieser Konfiguration können Sie und OpenStack die Knoteninitialisierungsprozesse besitzen. Sie können beispielsweise Google Distributed Cloud-Software auf OpenStack bereitstellen, um OpenStack-Load-Balancing-Ressourcen (LBaaS) automatisch bereitzustellen oder andere OpenStack-Funktionen zu nutzen. Die LBaaS-Ressourcen können die MetalLB-Ressourcen ersetzen, um Dienste, die auf Ihren Clustern ausgeführt werden, für andere OpenStack-Mandanten oder außerhalb des OpenStack-Netzwerks verfügbar zu machen. Weitere Informationen zu OpenStack-Funktionen und -Vorteilen finden Sie in der OpenStack-Dokumentation.

In diesem Dokument wird nur beschrieben, wie Sie Ihren Cluster für die Verwendung mit OpenStack konfigurieren. Die folgenden Anleitungen führen Sie durch eine Beispielbereitstellung:

  • Cluster auf OpenStack bereitstellen führt Sie durch eine Beispielbereitstellung eines Hybridclusters auf virtuellen OpenStack- Maschinen (VMs). Die Bereitstellung verwendet ein Skript, um die Installation zu vereinfachen. In dieser Anleitung wird außerdem beschrieben, wie Sie das Load Balancing als Dienst (LBaaS) aktivieren können.

  • OpenStack Cloud Provider für Kubernetes konfigurieren zeigt, wie Sie den OpenStack Cloud Provider auf einem Cluster installieren, der auf OpenStack bereitgestellt wurde. Der OpenStack Cloud Provider ist nicht erforderlich, um Google Distributed Cloud-Software mit OpenStack zu verwenden.

Hinweis

  • Legen Sie fest, welche Cluster OpenStack-LBaaS-Ressourcen verwenden müssen.

    Nachdem Sie einen Cluster erstellt haben, der für die Verwendung von OpenStack-LBaaS-Ressourcen konfiguriert ist, können Sie die Konfiguration nicht mehr ändern, um zu MetalLB-Ressourcen zu wechseln. Achten Sie darauf, Ihre Cluster mit der richtigen Konfiguration für den Cloud-Anbieter zu initialisieren.

  • Prüfen Sie, ob Sie Zugriff auf die Maschinen haben, die Sie konfigurieren möchten.

cloud-controller-manager in der Kubernetes-Dokumentation ausführen

Clusterkonfigurationsdatei ändern

Der Cloud-Anbieter von OpenStack erfordert, dass kubelet auf allen Knoten mit dem folgenden Argument ausgeführt wird:

cloud-provider: "external"

Damit Ihr Cluster diese Anforderung erfüllt, fügen Sie die baremetal.cluster.gke.io/external-cloud-provider: "true" Annotation vor dem Erstellen des Clusters im Abschnitt „Metadaten“ der Clusterkonfigurationsdatei 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. Google Distributed Cloud generiert für jede Knotenmaschine eine providerID mit einem Format wie 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 folgende Beispielkonfigurationsdatei für einen Cluster zeigt, wie Sie providerID für Ihre Clusterknoten angeben:

 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-cluster1
 spec:
   clusterName: cluster1
   nodes:
   - address: 172.18.0.2
+    providerID: some-prefix3://unique-string3

Cluster erstellen

Nachdem Sie die Konfigurationsdatei bearbeitet haben, können Sie den folgenden Befehl ausführen, um Ihren Cluster zu initialisieren:

bmctl create cluster -c cluster1

Weitere Informationen zum Erstellen von Clustern finden Sie unter Cluster erstellen – Übersicht.

Knotenkonfiguration

Wenn Sie einen für OpenStack konfigurierten Cluster erstellen, werden die folgenden Änderungen an den Clusterknoten vorgenommen:

  • Alle Knoten werden in cluster1 mit dem erforderlichen Argument cloud-provider: "external" ausgeführt.

  • Alle Knoten enthalten außerdem die folgende Markierung in den Konfigurationsdateien:

    taints:
    - effect: NoSchedule
      key: node.cloudprovider.kubernetes.io/uninitialized
      value: "true"
    

    Diese Markierungen werden entfernt, nachdem Sie den Cloudanbieter auf diesem Cluster initialisiert haben.

  • kubelet wird mit der providerID ausgeführt, die Sie in der Clusterkonfigurationsdatei angegeben haben.

Nächste Schritte