Anthos-Cluster auf Bare Metal unterstützt OpenStack als private Cloud-Plattform. Diese Unterstützung ermöglicht Ihnen die Verwendung der folgenden OpenStack-Dienste:
- Infrastructure as a Service (IaaS)
- Load balancing as a Service (LBaaS)
- Speicher
Sie können Anthos-Cluster auf Bare Metal bereitstellen, das auf virtuellen OpenStack-Maschinen mit unterstützten Betriebssystemen ausgeführt wird. Anthos-Cluster auf Bare Metal stellt die VMs nicht automatisch bereit. Die Bereitstellung der VMs wird in diesem Leitfaden nicht behandelt. Informationen zu den VM-Anforderungen und eine Beispielbereitstellung finden Sie im Terraform-Beispiel zum Erstellen von OpenStack-VMs.
Sie können den OpenStack-LBaaS und den Kubernetes OpenStack Cloud Provider in Anthos-Cluster auf Bare Metal verwenden, um die Kubernetes-Dienste außerhalb des OpenStack-Clusters verfügbar zu machen.
Die Anleitung besteht aus folgenden Abschnitten:
- Anthos-Cluster auf Bare Metal bereitstellen
- OpenStack Cloud Provider für Kubernetes in Anthos-Cluster auf Bare Metal konfigurieren, um ihn in den Octavi-Load-Balancer einzubinden
- Integration von OpenStack Cloud Provider für Kubernetes validieren
In dieser Anleitung wird OpenStack Ussuri verwendet, aber sie könnte auch mit älteren Versionen von OpenStack funktionieren. Ältere OpenStack-Versionen wurden nicht getestet. In dieser Anleitung werden OpenStack-VMs verwendet, um eine Anthos-Cluster auf Bare Metal-Proof-of-Concept-Umgebung mit zwei Knoten bereitzustellen, in der OpenStack ausgeführt wird. Informationen zum Erstellen einer Produktionsumgebung mit einer Steuerungsebene mit Hochverfügbarkeit finden Sie in der Anthos-Cluster auf Bare Metal-Dokumentation zur den Anforderungen an die Produktionsumgebung.
Beispiel für ein Deployment
In dieser Anleitung wird ein Beispiel für die Bereitstellung von Anthos-Cluster auf Bare Metal auf OpenStack beschrieben, das in den LBaaS von OpenStack integriert wird. 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:
- Verwenden Sie dieses Terraform-Skript, um die Ressourcen automatisch bereitzustellen.
- Stellen Sie die Ressourcen manuell bereit.
- Die folgenden OpenStack-VMs müssen bereit und über SSH verfügbar sein:
Name | Nutzung | IP-Adresse |
---|---|---|
abm-ws |
10.200.0.10 (private IP-Adresse) floating_ip (öffentliche IP-Adresse) |
Fungiert als Administrator-Workstation und wird verwendet, um Anthos auf Bare Metal auf den anderen Maschinen bereitzustellen. |
abm-cp1 | 10.200.0.11 | Anthos-Cluster-Steuerungsebene: Dieser Host führt die Kubernetes-Steuerungsebene und den Load-Balancer aus. |
abm-w1 | 10.200.0.12 | Anthos-Cluster-Worker-Knoten: Dieser Host führt die Kubernetes-Arbeitslasten aus. |
Anthos-Cluster auf Bare Metal bereitstellen
In diesem Abschnitt werden die folgenden Aufgaben erläutert:
- Tools installieren, die Sie auf der
abm-ws
-Administrator-Workstation-VM benötigen - Projekt-ID und Dienstkonto konfigurieren, um das Bereitstellung sicher abzuschließen
- Cluster-Konfigurationsdatei erstellen
- Anthos-Cluster auf Bare Metal bereitstellen
Benötigte Tools installieren
Rufen Sie die öffentliche Floating-IP-Adresse der
abm-ws
-VM 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 '"')
Prüfen Sie, ob Sie über SSH eine sichere Verbindung zur
abm-ws
-VM herstellen können und melden Sie sich alsroot
-Nutzer an. Derroot
-Nutzer gemäß der Konfiguration durch die Terraform-Skripts istabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Prüfen Sie, ob Sie eine SSH-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 erwartete Ausgabe für die obigen Befehle ist:
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
abm-ws
-VM.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 werden bei Verwendung der folgenden
gcloud
-Befehle verwendet.gcloud auth login
Achten Sie darauf, dass Google Cloud CLI für die Verwendung des Google Cloud-Projekts konfiguriert ist, in dem Ihre Anthos-Cluster auf Bare-Metal registriert werden sollen.
gcloud config set project PROJECT_ID
Legen Sie die Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) für Ihr Nutzerkonto auf der Administrator-Workstation fest. Diese werden verwendet, wenn das
bmctl
-Tool zum Erstellen von Clustern verwendet wird.gcloud auth application-default login
Erstellen Sie das Dienstkonto
bm-gcr
. Sie verwenden dieses Dienstkonto, um sich vom Anthos-Cluster auf Bare Metal-Cluster zu authentifizieren.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 \ anthosgke.googleapis.com \ cloudresourcemanager.googleapis.com \ container.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ serviceusage.googleapis.com \ stackdriver.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ opsconfigmonitoring.googleapis.com \ anthosaudit.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.11.8/linux-amd64/bmctl . chmod a+x bmctl sudo mv bmctl /usr/local/sbin/
Erstellen Sie einen Anthos-Cluster auf Bare Metal-Arbeitsbereich für Ihren Cluster.
bmctl create config -c CLUSTER_NAME
Erstellen Sie die Konfigurationsdatei für Ihren Anthos-Cluster auf Bare Metal-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.11.8 gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: clusterName: CLUSTER_NAME nodes: - address: 10.200.0.11 clusterNetwork: pods: cidrBlocks: - 10.202.0.0/16 services: cidrBlocks: - 10.203.0.0/16 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
Bereitstellung
Stellen Sie den Cluster bereit.
bmctl create cluster -c CLUSTER_NAME
Mit dem Befehl bmctl
wird ein neuer Hybridcluster eingerichtet. Dazu gehören Preflight-Prüfungen auf den Knoten, das Erstellen der Administrator- und Nutzercluster und die Registrierung des Clusters bei Google Cloud mit 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 kubeconfig
-Datei Ihres Clusters auf der abm-ws
-VM im Verzeichnis bmctl-workspace
. Führen Sie die folgenden Schritte aus, um Ihr Deployment zu überprüfen.
Legen Sie die Umgebungsvariable
KUBECONFIG
auf den Pfad zur Konfigurationsdatei des Clusters fest, umkubectl
-Befehle im 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 beim 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 bei einem Cluster anmelden.
Bereinigen
Sie können den Cluster bereinigen, indem Sie den folgenden Befehl auf Ihrer Administrator-Workstation-VM (abm-ws
) ausführen.
export KUBECONFIG=$HOME/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
bmctl reset --cluster CLUSTER_NAME
Nächste Schritte
Sie können jetzt den OpenStack Cloud Provider auf dem neu erstellten Anthos-Cluster auf Bare Metal-Cluster installieren. Folgen Sie dazu der Anleitung unter OpenStack Cloud Provider für Kubernetes konfigurieren. Auf diese Weise können Sie Ihre Anwendungen mithilfe eines Dienstes vom Typ LoadBalancer
mit LBaaS von OpenStack verfügbar machen.