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 mit 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 von OpenStack umfasst Folgendes:
Wenn Sie den Cluster erstellen, fügen Sie die Annotation
baremetal.cluster.gke.io/external-cloud-provider
hinzu.Durch diese Annotation fügt Google Distributed Cloud das kubelet-Flag
cloud-provider=external
hinzu.Das Kubelet fügt den Clustern dann
node.cloudprovider.kubernetes.io/uninitialized:NoSchedule
-Markierungen hinzu.
Mit dieser Konfiguration können Sie und OpenStack die Knoteninitialisierungsprozesse verwalten. Sie können beispielsweise Google Distributed Cloud-Software auf OpenStack bereitstellen, um OpenStack-Load-Balancing-Ressourcen (Service as a Service) 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.
Ä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 beschrieben:
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.
Unter OpenStack Cloud Provider für Kubernetes konfigurieren wird beschrieben, 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.
Hinweise
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
Cluster-Konfigurationsdatei ä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 Annotation baremetal.cluster.gke.io/external-cloud-provider: "true"
vor der Erstellung 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.
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 die Clusternodes folgendermaßen geändert:
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.