Google Distributed Cloud unterstützt die Verwendung von OpenStack als private Cloud-Plattform. In diesem Leitfaden wird beschrieben, wie Sie einen Google Distributed Cloud-Cluster für die Zusammenarbeit mit einem externen Cloud-Anbieter konfigurieren. Wenn Sie Google Distributed Cloud-Cluster 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 die folgenden Schritte:
Beim Erstellen des Clusters fügen Sie eine
baremetal.cluster.gke.io/external-cloud-provider
-Anmerkung hinzu.Durch diese Anmerkung fügt Google Distributed Cloud ein kubelet-Flag hinzu.
cloud-provider=external
Das Kubelet fügt den Clusterknoten dann
node.cloudprovider.kubernetes.io/uninitialized:NoSchedule
-Markierungen hinzu.
Mit dieser Konfiguration können Sie und OpenStack die Knoteninitialisierungsprozesse verwalten. Sie können Google Distributed Cloud beispielsweise auf OpenStack bereitstellen, um OpenStack-Load Balancing as a Service-Ressourcen (LBaaS) automatisch bereitzustellen oder andere OpenStack-Funktionen zu nutzen. Die LBaaS-Ressourcen können die MetalLB-Ressourcen ersetzen, um Dienste, die auf Ihren Google Distributed Cloud-Clustern ausgeführt werden, für andere OpenStack-Mandanten oder außerhalb des OpenStack-Netzwerks verfügbar zu machen. Weitere Informationen zu den Funktionen und Vorteilen von OpenStack finden Sie in der OpenStack-Dokumentation.
Ähnliche Beispiele
In diesem Dokument wird nur beschrieben, wie Sie Ihren Cluster für die Verwendung mit OpenStack konfigurieren. In den folgenden Anleitungen wird eine Beispielbereitstellung veranschaulicht:
Im Artikel Google Distributed Cloud-Cluster auf OpenStack bereitstellen wird eine Beispielbereitstellung eines Google Distributed Cloud-Hybridclusters auf OpenStack-VMs veranschaulicht. Bei der Bereitstellung wird ein Script verwendet, um die Installation zu vereinfachen. In dieser Anleitung wird außerdem beschrieben, wie Sie das Load Balancing als Dienst (LBaaS) aktivieren können.
In der Anleitung OpenStack Cloud Provider für Kubernetes konfigurieren erfahren Sie, wie Sie den OpenStack Cloud Provider auf einem Google Distributed Cloud-Cluster installieren, der auf OpenStack bereitgestellt wurde. Der OpenStack-Cloud-Anbieter muss Google Distributed Cloud nicht mit OpenStack verwenden.
Hinweise
Legen Sie fest, welche GKE-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 ändern, um zu MetalLB-Ressourcen zu wechseln. Achten Sie darauf, Ihre Cluster mit der richtigen Konfiguration für den Cloud-Anbieter zu initialisieren.
Sie benötigen Zugriff auf die Maschinen, 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 GKE-Cluster diese Anforderung erfüllt, fügen Sie die Annotation baremetal.cluster.gke.io/external-cloud-provider: "true"
vor dem Erstellen des Clusters der Clusterkonfigurationsdatei 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
. Google Distributed Cloud generiert für jeden Knotencomputer einen providerID
im Format 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.
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 Cluster erstellen – Übersicht.
Knotenkonfiguration
Wenn Sie einen für OpenStack konfigurierten Cluster erstellen, werden an den Clusterknoten die folgenden Änderungen vorgenommen:
Alle Knoten werden in
cluster1
mit dem erforderlichen Argumentcloud-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 demproviderID
ausgeführt, das Sie in der Clusterkonfigurationsdatei angegeben haben.