Dieser Leitfaden führt Sie durch eine Beispielbereitstellung von Google Distributed Cloud auf virtuellen OpenStack-Maschinen (VMs) mit unterstützten Betriebssystemen. Bei der Bereitstellung wird ein Skript verwendet, um die Installation eines Hybridclusters in OpenStack-VMs zu vereinfachen. Außerdem erfahren Sie, wie Sie Load Balancing as a Service (LBaaS) aktivieren können. Sie können OpenStack LBaaS und den OpenStack-Cloud-Anbieter von Kubernetes in Google Distributed Cloud verwenden, um die Kubernetes-Dienste außerhalb des OpenStack-Clusters verfügbar zu machen.
Google Distributed Cloud stellt die OpenStack-VMs nicht automatisch bereit und die Bereitstellung der VMs wird in diesem Leitfaden nicht behandelt. Weitere Informationen zu den VM-Anforderungen und eine Beispielbereitstellung finden Sie im Terraform-Beispiel zum Erstellen von OpenStack-VMs.
Die Anleitung besteht aus folgenden Abschnitten:
Google Distributed Cloud bereitstellen
OpenStack Cloud Provider für Kubernetes in Google Distributed Cloud für die Einbindung in die Octavia-Load-Balancer konfigurieren
Integration von OpenStack Cloud Provider für Kubernetes validieren
In dieser Anleitung wird OpenStack Ussuri verwendet. Für Google Distributed Cloud sind jedoch keine bestimmten Versionen von OpenStack erforderlich. In diesem Leitfaden werden OpenStack-VMs verwendet, um Ihnen eine Google Distributed Cloud-Proof-of-Concept-Umgebung mit zwei Knoten bereitzustellen, die auf OpenStack ausgeführt wird. Informationen zum Erstellen einer Produktionsumgebung mit einer Steuerungsebene mit Hochverfügbarkeit finden Sie in der Google Distributed Cloud-Dokumentation zu Anforderungen der Produktionsumgebung.
Beispiel für ein Deployment
Dieser Leitfaden enthält eine Beispielbereitstellung von Google Distributed Cloud auf OpenStack, die sich in OpenStack LBaaS einbinden lässt. Sie müssen die Befehle und Konfigurationswerte verstehen und an Ihre OpenStack-Umgebung anpassen. Das folgende Diagramm zeigt die resultierende Bereitstellung:
Vorbereitung
- OpenStack Ussuri mit LBaaS v2, das bereitgestellt und funktionsfähig ist
- Dienstkonto zum Herunterladen des bmctl-Tools
- Konfigurieren Sie Ihre OpenStack-VMs und Ihr Netzwerk wie in der Beispielbereitstellung gezeigt.
Sie haben folgende Möglichkeiten, eine ähnliche Einrichtung in Ihrer OpenStack-Umgebung bereitzustellen:
- Mit diesem Terraform-Script können Sie die Ressourcen automatisch bereitstellen.
- Stellen Sie die Ressourcen manuell bereit.
- Die folgenden OpenStack-VMs müssen bereit und über SSH verfügbar sein:
Name | IP-Adresse | Zweck |
---|---|---|
abm-ws |
10.200.0.10 (private IP-Adresse) floating_ip (öffentliche IP-Adresse) |
Funktion der Administratorworkstation: Wird verwendet, um Google Distributed Cloud auf den anderen Maschinen bereitzustellen. |
abm-cp1 | 10.200.0.11 | Steuerungsebene des GKE-Clusters: Dieser Host führt die Kubernetes-Steuerungsebene und den Kubernetes-Load-Balancer aus. |
abm-w1 | 10.200.0.12 | GKE-Cluster-Worker-Knoten: Auf diesem Host werden die Kubernetes-Arbeitslasten ausgeführt. |
Google Distributed Cloud bereitstellen
In diesem Abschnitt werden die folgenden Aufgaben erläutert:
- Tools installieren, die Sie auf der
abm-ws
-Administrator-Workstation-VM benötigen - Konfigurieren Sie die Projekt-ID und das Dienstkonto, die für den sicheren Abschluss der Bereitstellung erforderlich sind.
- Cluster-Konfigurationsdatei erstellen
- Cluster erstellen
Benötigte Tools installieren
Rufen Sie die öffentliche Floating-IP-Adresse der VM
abm-ws
ab:export OPENSTACK_IPS=$(openstack floating ip list --tags=abm_ws_floatingip -f json) export FLOATING_IP=$(jq -c '.[]."Floating IP Address"' <<< $OPENSTACK_IPS | tr -d '"')
Sorgen Sie dafür, dass Sie über SSH eine sichere Verbindung zur VM
abm-ws
herstellen und sich alsroot
-Nutzer anmelden können. Der von den Terraform-Skripts konfigurierte Nutzerroot
istabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Prüfen Sie, ob Sie über SSH eine Verbindung zu den anderen Knoten herstellen können:
ssh abm@10.200.0.11 'echo SSH to $HOSTNAME succeeded' ssh abm@10.200.0.12 'echo SSH to $HOSTNAME succeeded'
Die erwarteten Antworten für die vorherigen Befehle sind:
SSH to abm-cp1 succeeded SSH to abm-w1 succeeded
Laden Sie das
kubectl
-Befehlszeilendienstprogramm auf dieabm-ws
-VM herunter.curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/sbin/
Installieren Sie Docker auf der VM
abm-ws
:curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh sudo usermod -aG docker abm newgrp docker
Google Cloud-Projekt und -Dienstkonto konfigurieren
Rufen Sie Anmeldedaten für Google Cloud CLI für Ihr Nutzerkonto ab.
Diese Anmeldedaten werden für nachfolgende
gcloud
-Befehle verwendet.gcloud auth login
Die Google Cloud CLI muss für die Verwendung des Google Cloud-Projekts konfiguriert sein, in dem Ihre Google Distributed Cloud registriert werden soll.
gcloud config set project PROJECT_ID
Legen Sie die Standardanmeldedaten für Anwendungen für Ihr Nutzerkonto auf der Administratorworkstation fest. Diese wird verwendet, wenn das
bmctl
-Tool zum Erstellen von Clustern verwendet wird.gcloud auth application-default login
Erstellen Sie das Dienstkonto
bm-gcr
. Mit diesem Dienstkonto authentifizieren Sie sich über den Google Distributed Cloud-Cluster.gcloud iam service-accounts create bm-gcr gcloud iam service-accounts keys create bm-gcr.json \ --iam-account=bm-gcr@PROJECT_ID.iam.gserviceaccount.com
Aktivieren Sie die erforderlichen APIs:
gcloud services enable \ anthos.googleapis.com \ anthosaudit.googleapis.com \ anthosgke.googleapis.com \ cloudresourcemanager.googleapis.com \ connectgateway.googleapis.com \ container.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ gkeonprem.googleapis.com \ iam.googleapis.com \ logging.googleapis.com \ monitoring.googleapis.com \ opsconfigmonitoring.googleapis.com \ serviceusage.googleapis.com \ stackdriver.googleapis.com \ storage.googleapis.com
Erteilen Sie dem
bm-gcr
-Dienstkonto zusätzliche Berechtigungen. Wenn Sie die Berechtigungen hinzufügen, müssen Sie nicht mehrere Dienstkonten für einzelne Dienste erstellen.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/gkehub.connect" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/gkehub.admin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.dashboardEditor" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/stackdriver.resourceMetadata.writer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/opsconfigmonitoring.resourceMetadata.writer"
Cluster-Konfigurationsdatei erstellen
Laden Sie das
bmctl
-Befehlszeilentool herunter.mkdir baremetal && cd baremetal gsutil cp gs://anthos-baremetal-release/bmctl/1.29.100-gke.251/linux-amd64/bmctl . chmod a+x bmctl sudo mv bmctl /usr/local/sbin/
Erstellen Sie einen Google Distributed Cloud-Arbeitsbereich für Ihren Cluster.
bmctl create config -c CLUSTER_NAME
Erstellen Sie die Konfigurationsdatei für Ihren Google Distributed Cloud-Cluster.
cat > bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml << EOB --- gcrKeyPath: /home/abm/bm-gcr.json sshPrivateKeyPath: /home/abm/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: /home/abm/bm-gcr.json gkeConnectRegisterServiceAccountKeyPath: /home/abm/bm-gcr.json cloudOperationsServiceAccountKeyPath: /home/abm/bm-gcr.json --- apiVersion: v1 kind: Namespace metadata: name: openstack-cluster-ns --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: CLUSTER_NAME namespace: openstack-cluster-ns annotations: baremetal.cluster.gke.io/external-cloud-provider: "true" spec: type: hybrid anthosBareMetalVersion: 1.29.100-gke.251 gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: clusterName: CLUSTER_NAME nodes: - address: 10.200.0.11 clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: manual ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: 10.200.0.101 ingressVIP: 10.200.0.102 clusterOperations: location: us-central1 projectID: PROJECT_ID storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: node-disk lvpShare: numPVUnderSharedPath: 5 path: /mnt/localpv-share storageClassName: standard nodeAccess: loginUser: abm --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: node-pool-1 namespace: openstack-cluster-ns spec: clusterName: CLUSTER_NAME nodes: - address: 10.200.0.12 EOB
Cluster erstellen
Erstellen Sie den Cluster:
bmctl create cluster -c CLUSTER_NAME
Wenn Sie den Befehl bmctl
ausführen, wird ein neuer Hybridcluster eingerichtet. Dazu gehören die Durchführung von Preflight-Prüfungen auf den Knoten, das Erstellen der Administrator- und Nutzercluster und das Registrieren des Clusters in Google Cloud über Connect.
Die Einrichtung kann bis zu 15 Minuten dauern. Wenn der Cluster erstellt wird, wird die folgende Ausgabe angezeigt:
Please check the logs at bmctl-workspace/CLUSTER_NAME/log/create-cluster-20210926-020741/create-cluster.log
[2021-09-26 02:07:59+0000] Creating bootstrap cluster... ⠦ kind get kubeconfig --name bmctl > ~/.kube/config && k get pods --all-namespaces
[2021-09-26 02:07:59+0000] Creating bootstrap cluster... OK
[2021-09-26 02:10:48+0000] Installing dependency components... OK
[2021-09-26 02:13:42+0000] Waiting for preflight check job to finish... OK
[2021-09-26 02:15:22+0000] - Validation Category: machines and network
[2021-09-26 02:15:22+0000] - [PASSED] gcp
[2021-09-26 02:15:22+0000] - [PASSED] node-network
[2021-09-26 02:15:22+0000] - [PASSED] 10.200.0.11
[2021-09-26 02:15:22+0000] - [PASSED] 10.200.0.11-gcp
[2021-09-26 02:15:22+0000] - [PASSED] 10.200.0.12
[2021-09-26 02:15:22+0000] - [PASSED] 10.200.0.12-gcp
[2021-09-26 02:15:22+0000] Flushing logs... OK
[2021-09-26 02:15:23+0000] Applying resources for new cluster
[2021-09-26 02:15:24+0000] Waiting for cluster to become ready OK
[2021-09-26 02:25:04+0000] Writing kubeconfig file
[2021-09-26 02:25:04+0000] kubeconfig of created cluster is at bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig, please run
[2021-09-26 02:25:04+0000] kubectl --kubeconfig bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig get nodes
[2021-09-26 02:25:04+0000] to get cluster node status.
[2021-09-26 02:25:04+0000] Please restrict access to this file as it contains authentication credentials of your cluster.
[2021-09-26 02:25:04+0000] Waiting for node pools to become ready OK
[2021-09-26 02:25:24+0000] Moving admin cluster resources to the created admin cluster
[2021-09-26 02:25:53+0000] Flushing logs... OK
[2021-09-26 02:25:53+0000] Deleting bootstrap cluster...
Cluster prüfen und damit interagieren
Sie finden die Clusterdatei kubeconfig
auf der VM abm-ws
im Verzeichnis bmctl-workspace
. Führen Sie die folgenden Schritte aus, um Ihre Bereitstellung zu prüfen:
Legen Sie die Umgebungsvariable
KUBECONFIG
mit dem Pfad zur Clusterkonfigurationsdatei fest, umkubectl
-Befehle auf dem Cluster auszuführen:export KUBECONFIG=$HOME/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig kubectl get nodes
Es sollten die Knoten des Clusters ähnlich wie in der folgenden Ausgabe angezeigt werden:
NAME STATUS ROLES AGE VERSION abm-cp1 Ready control-plane,master 5m24s v1.20.5-gke.1301 abm-w1 Ready <none> 2m17s v1.20.5-gke.1301
Über die Google Cloud Console bei Ihrem Cluster anmelden
Damit Sie Ihre Arbeitslasten in der Google Cloud Console beobachten können, müssen Sie sich beim Cluster anmelden. Eine Anleitung und weitere Informationen zum Anmelden bei Ihrem Cluster finden Sie unter Über die Google Cloud Console mit Clustern arbeiten.
Bereinigen
Sie können den Cluster bereinigen, indem Sie auf der Administratorworkstation-VM (abm-ws
) den folgenden Befehl ausführen:
export KUBECONFIG=$HOME/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
bmctl reset --cluster CLUSTER_NAME
Nächste Schritte
- Folgen Sie der Anleitung OpenStack Cloud Provider for Kubernetes konfigurieren, um den OpenStack Cloud Provider im neu erstellten Google Distributed Cloud-Cluster zu installieren.