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-providerhinzu.Diese Annotation bewirkt, dass Google Distributed Cloud ein kubelet-Flag
cloud-provider=externalhinzufügt.Das kubelet fügt den Clusterknoten dann die Markierungen
node.cloudprovider.kubernetes.io/uninitialized:NoSchedulehinzu.
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.
Zugehörige Beispiele
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
cluster1mit 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.
kubeletwird mit derproviderIDausgeführt, die Sie in der Clusterkonfigurationsdatei angegeben haben.