GKE on Bare Metal unterstützt die Verwendung von OpenStack als private Cloud-Plattform. In dieser Anleitung wird beschrieben, wie Sie einen GKE on Bare Metal-Cluster für die Zusammenarbeit mit einem externen Cloud-Anbieter konfigurieren. Wenn Sie GKE in Bare-Metal-Clustern in OpenStack ausführen, können Sie die folgenden OpenStack-Dienste verwenden:
Infrastructure as a Service (IaaS)
Load balancing as a Service (LBaaS)
Speicher
So konfigurieren Sie einen Cluster für OpenStack:
Beim Erstellen des Clusters fügen Sie die Annotation
baremetal.cluster.gke.io/external-cloud-provider
hinzu.Durch diese Annotation fügt GKE on Bare Metal das Kubelet-Flag
cloud-provider=external
hinzu.Das Kubelet fügt dann den Clusterknoten
node.cloudprovider.kubernetes.io/uninitialized:NoSchedule
-Markierungen hinzu.
Durch diese Konfiguration sind Sie und OpenStack die Inhaber der Knoten-Init-Prozesse. Beispielsweise können Sie GKE on Bare Metal in OpenStack bereitstellen, um automatisch OpenStack Load Balancing-as-a-Service-Ressourcen (LBaaS) bereitzustellen oder andere OpenStack-Funktionen zu nutzen. Die LBaaS-Ressourcen können die MetalLB-Ressourcen ersetzen, um Dienste, die in Ihren GKE on Bare-Metal-Clustern ausgeführt werden, für andere OpenStack-Mandanten oder außerhalb des OpenStack-Netzwerks verfügbar zu machen. Weitere Informationen zu den Features und Vorteilen von OpenStack finden Sie in der OpenStack-Dokumentation.
Weitere Beispiele
In diesem Dokument wird nur die Konfiguration eines Clusters für die Verwendung mit OpenStack beschrieben. Die folgenden Anleitungen führen Sie durch eine Beispielbereitstellung:
Unter GKE on Bare Metal-Cluster auf OpenStack bereitstellen werden Sie durch eine Beispielbereitstellung eines GKE on Bare Metal-Hybridclusters auf virtuellen OpenStack-Maschinen (VMs) geführt. Bei der Bereitstellung wird ein Skript zur Vereinfachung der Installation verwendet. Der Leitfaden zeigt Ihnen auch eine Möglichkeit, das Load Balancing as a Service (LBaaS) zu aktivieren.
Unter OpenStack Cloud Provider für Kubernetes konfigurieren erfahren Sie, wie Sie den OpenStack Cloud Provider in einem GKE on Bare Metal-Cluster installieren, der auf OpenStack bereitgestellt wurde. Der OpenStack Cloud-Anbieter ist nicht erforderlich, um GKE on Bare Metal mit OpenStack zu verwenden.
Hinweise
Entscheiden Sie, welche GKE-Cluster OpenStack-LBaaS-Ressourcen verwenden müssen.
Nachdem Sie einen Cluster für die Verwendung von OpenStack-LBaaS-Ressourcen erstellt haben, können Sie die Konfiguration nicht mehr ändern, um zu MetalLB-Ressourcen zu wechseln. Achten Sie darauf, Ihre Cluster mit der richtigen Konfiguration des Cloud-Anbieters zu initialisieren.
Sie müssen Zugriff auf die Maschinen haben, die Sie konfigurieren möchten.
Weitere Informationen zum Ausführen von cloud-controller-manager finden Sie in der Kubernetes-Dokumentation.
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 GKE-Cluster diese Anforderung erfüllt, fügen Sie der Clusterkonfigurationsdatei im Abschnitt „Metadaten“ die Annotation baremetal.cluster.gke.io/external-cloud-provider: "true"
hinzu, bevor Sie den Cluster erstellen.
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 benötigen ein spezielles Format für providerID
. GKE on Bare Metal generiert für jede Knotenmaschine ein providerID
mit einem Format wie baremetal://MACHINE_ADDRESS
. Wenn Sie einen anderen providerID
verwenden möchten, können Sie für jeden Knoten einen Wert zusammen mit der IP-Adresse angeben.
Das folgende Beispiel für eine Clusterkonfigurationsdatei 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 Clustererstellung – Übersicht.
Knotenkonfiguration
Wenn Sie einen für OpenStack konfigurierten Cluster erstellen, ändern sich an den Clusterknoten die folgenden Änderungen:
Alle Knoten in
cluster1
werden mit dem erforderlichen Argument ausgeführt:cloud-provider: "external"
.Den Konfigurationsdateien aller Knoten wurde außerdem die folgende Markierung hinzugefügt:
taints: - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: "true"
Diese Markierungen werden entfernt, nachdem Sie Ihren Cloud-Anbieter auf diesem Cluster initialisiert haben.
kubelet
wird mit demproviderID
ausgeführt, den Sie in der Clusterkonfigurationsdatei angegeben haben.