Anthos on Bare Metal-Administrator- und Nutzercluster auf Compute Engine-VMs erstellen

Auf dieser Seite wird beschrieben, wie Sie einen Anthos on Bare Metal-Nutzercluster und einen Administratorcluster auf Compute Engine-VMs erstellen. Mit dem bereitgestellten Skript werden Compute Engine-VMs für die Administrator- und Nutzerclusterknoten sowie eine Administratorworkstation erstellt.

Die Admin-Workstation hostet Befehlszeilentools und Konfigurationsdateien, um Cluster während der Installation bereitzustellen. Außerdem gibt es CLI-Tools, mit denen nach der Installation mit bereitgestellten Clustern interagiert werden kann. Das Skript installiert die Befehlszeilentools auf der VM der Administratorworkstation.

Ein Nutzercluster ist ein Kubernetes-Cluster, auf dem Ihre containerisierten Arbeitslasten ausgeführt werden. Die Instanz besteht aus Knoten der Steuerungsebene und Worker-Knoten. Nutzercluster müssen einen oder mehrere Worker-Knoten enthalten, die Nutzerarbeitslasten ausführen. Ein Administratorcluster ist ein Kubernetes-Cluster, der einen oder mehrere Nutzercluster verwaltet, um das Erstellen, Aktualisieren und Löschen von Nutzerclustern zu unterstützen. Ein Administratorcluster besteht nur aus Knoten der Steuerungsebene. Weitere Informationen finden Sie unter Deployment von Administrator- und Nutzerclustern.

Das Skript konfiguriert ein VXLAN-Overlay-Netzwerk (Virtual Extensible LAN) zwischen den VMs und bereitet die VMs für die Clustererstellung vor. Optional erstellt das Skript einen Administratorcluster. Sie können den Administratorcluster aber auch selbst erstellen, um mehr über die Tools zu erfahren, die Anthos-Cluster auf Bare Metal zum Erstellen von Administratorclustern bieten.

Mit dem bereitgestellten Skript können Sie Anthos-Cluster auf Bare Metal schnell und ohne vorherige Hardware testen. Durch das Ausführen der Schritte auf dieser Seite erhalten Sie eine funktionierende Anthos-Cluster-Umgebung auf einer Bare-Metal-Testumgebung, die in Compute Engine ausgeführt wird.

Was ist die Anthos On-Prem API?

Die Anthos On-Prem API ist eine von Google Cloud gehostete API, mit der Sie den Lebenszyklus Ihrer lokalen Cluster mithilfe von Terraform und Google Cloud-Standardanwendungen verwalten können. Die Anthos On-Prem API wird in der Infrastruktur von Google Cloud ausgeführt. Terraform, die Console und die gcloud CLI sind Clients der API und verwenden die API, um Cluster in Ihrem Rechenzentrum zu erstellen.

Zum Verwalten des Lebenszyklus Ihrer Cluster muss die Anthos On-Prem API Metadaten zum Clusterstatus in Google Cloud speichern. Dazu wird die Google Cloud-Region verwendet, die Sie beim Erstellen des Clusters angeben. Mit diesen Metadaten kann die API den Clusterlebenszyklus verwalten und enthält keine arbeitslastspezifischen Daten.

Wenn Sie einen Cluster mit einem Anthos On-Prem API-Client erstellen, geben Sie ein Google Cloud-Projekt an. Nachdem der Cluster erstellt wurde, wird er automatisch in der Flotte des angegebenen Projekts registriert. Dieses Projekt wird als Flotten-Hostprojekt bezeichnet. Das Flotten-Hostprojekt kann nicht mehr geändert werden, nachdem der Cluster erstellt wurde.

Hinweise

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Notieren Sie sich die Projekt-ID, damit Sie eine Umgebungsvariable festlegen können, die im Skript und in den Befehlen auf dieser Seite verwendet wird. Wenn Sie ein vorhandenes Projekt auswählen, müssen Sie entweder Projektinhaber oder -bearbeiter sein.
  7. Sie können das Skript in Cloud Shell oder auf Ihrem lokalen Computer ausführen, auf dem Linux oder macOS ausgeführt wird. Wenn Sie Cloud Shell nicht verwenden:
    1. Prüfen Sie, ob Sie die neueste Google Cloud CLI installiert haben, das Befehlszeilentool für die Interaktion mit Google Cloud. Dies gilt auch für die Beta-Komponenten der gcloud CLI.
    2. Wenn Sie die Betakomponenten noch nicht haben, installieren Sie sie mit dem folgenden Befehl:
      gcloud components install beta
    3. Aktualisieren Sie bei Bedarf die gcloud CLI-Komponenten:
      gcloud components update

      Je nachdem, wie die gcloud CLI installiert wurde, wird möglicherweise die folgende Meldung angezeigt: „Sie können diese Aktion nicht ausführen, da der Komponentenmanager der Google Cloud CLI für diese Installation deaktiviert ist. Sie können den folgenden Befehl ausführen, um dasselbe Ergebnis für die Installation zu erzielen: Folgen Sie der Anleitung, um den Befehl zu kopieren und einzufügen, um die Komponenten zu aktualisieren.

    4. Achten Sie darauf, dass kubectl installiert ist. Wenn Sie kubectl installieren müssen, führen Sie den folgenden Befehl aus:
      gcloud components install kubectl

VM-Infrastruktur und optional den Administratorcluster erstellen

Führen Sie die folgenden Schritte aus, um das Skript einzurichten und auszuführen. Das Skript, das Sie herunterladen und ausführen, stammt aus dem Repository anthos-samples. Weitere Informationen zum Skript vor dem Ausführen finden Sie im nächsten Abschnitt Skript.

  1. Richten Sie Umgebungsvariablen ein:

    export PROJECT_ID=PROJECT_ID
    export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME
    export ON_PREM_API_REGION=ON_PREM_API_REGION
    export ZONE=ZONE
    
    • ON_PREM_API_REGION: Die Google Cloud-Region, in der die Anthos On-Prem API ausgeführt wird und ihre Metadaten speichert. Geben Sie us-central1 oder eine andere unterstützte Region an.

    • ZONE: Die Google Cloud-Zone, in der die Compute Engine-VMs erstellt werden. Sie können us-central1-a oder eine der anderen Compute Engine-Zonen verwenden.

  2. Führen Sie die folgenden Befehle aus, um das Standardprojekt und die Zone festzulegen.

    gcloud config set project $PROJECT_ID
    gcloud config set compute/zone $ZONE
    

    Wenn Sie den Fehler PERMISSION_DENIED erhalten, prüfen Sie die eingegebene Projekt-ID. Wenn die Projekt-ID korrekt ist, führen Sie gcloud auth login aus, um sich mit dem Konto in der gcloud CLI anzumelden, das Zugriff auf das Projekt hat.

  3. Rufen Sie eine Liste der verfügbaren Versionen auf, die Sie installieren können:

    gcloud beta container bare-metal admin-clusters query-version-config \
          --location=ON_PREM_API_REGION
    
  4. Wählen Sie eine Version aus der Ausgabe des vorherigen Befehls aus und legen Sie sie in einer Umgebungsvariable fest:

    export BMCTL_VERSION=BMCTL_VERSION
    
  5. Klonen Sie das Repository anthos-samples und wechseln Sie in das Verzeichnis, in dem sich das Skript befindet:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-bash
    
  6. Führen Sie das Skript aus:

    bash install_admin_cluster.sh
    
  7. Wenn Sie dazu aufgefordert werden, geben Sie eine Zahl ein, um den Installationsmodus auszuwählen:

    • Geben Sie 1 ein, um das Skript die VM-Infrastruktur einzurichten und den Administratorcluster zu installieren.
    • Geben Sie 2 ein, wenn das Skript nur die VM-Infrastruktur einrichten soll.
  8. Bestätigen Sie Ihre Auswahl, wenn Sie dazu aufgefordert werden.

Das Skript gibt jeden ausgeführten Befehl und den Status aus. Sobald der Vorgang abgeschlossen ist, gibt das Skript Folgendes aus, je nachdem, ob Sie den Administratorcluster installiert haben:

Administratorcluster erstellt

✅ Installation complete. Please check the logs for any errors!!!
✅ If you do not see any errors in the output log, then you now have the following setup:

|---------------------------------------------------------------------------------------------------------|
| VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
|---------------------------------------------------------------------------------------------------------|
| abm-admin-cluster-cp1 | 10.200.0.3            | Has control plane of admin cluster running inside       |
| abm-user-cluster-cp1  | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
| abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
| abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
|---------------------------------------------------------------------------------------------------------|

Nur VMs einrichten

|---------------------------------------------------------------------------------------------------------|
| VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
|---------------------------------------------------------------------------------------------------------|
| abm-admin-cluster-cp1 | 10.200.0.3            | 🌟 Ready for use as control plane for the admin cluster |
| abm-user-cluster-cp1  | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
| abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
| abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
|---------------------------------------------------------------------------------------------------------|

Das Skript

Klicken Sie in der nächsten Zeile auf Über das Skript, um mehr über install_admin_cluster.sh zu erfahren.

Das Skript

Das Skript automatisiert die folgenden manuellen Schritte:

  1. Erstellt ein Dienstkonto mit dem Namen baremetal-gcr und gewährt dem Dienstkonto zusätzliche Berechtigungen, damit nicht mehrere Dienstkonten für verschiedene APIs und Dienste benötigt werden.
  2. Aktiviert die folgenden Google Cloud APIs:
      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
  3. Erstellt die folgenden VMs:
    • Eine VM für die Administratorworkstation. Die Administratorworkstation hat über SSH Zugriff auf alle anderen Clusterknoten.
    • Eine VM für den Knoten der Steuerungsebene des Administratorclusters.
    • Zwei VMs für die Worker-Knoten des Nutzerclusters.
    • Eine VM für den Knoten der Steuerungsebene des Nutzerclusters.
    Das Skript überprüft auch, ob SSH auf allen VMs aktiviert ist.
  4. Erstellt ein VXLAN-Overlay-Netzwerk (Virtual Extensible LAN) für die Ebene-2-Verbindung zwischen den VMs. VXLAN ist nicht dauerhaft, wenn Sie eine VM-Instanz neu starten, wird das Netzwerk gelöscht. Das Netzwerk befindet sich im Subnetz 10.200.0.0/24. Die Ebene-2-Konnektivität ist eine Voraussetzung für den gebündelten Load-Balancer.
  5. Installiert die folgenden Tools auf der Administratorworkstation:
    • bmctl
    • kubectl
    • Docker

    Das Skript lädt auch den Dienstkontoschlüssel für das Dienstkonto baremetal-gcr auf die Administrator-Workstation herunter.

  6. Sichert, dass root@10.200.0.x von der Administratorworkstation die folgenden Aufgaben ausführt:
    1. Generieren Sie einen neuen SSH-Schlüssel auf der Administratorworkstation.
    2. Fügt den öffentlichen Schlüssel allen anderen VMs in der Bereitstellung hinzu.
  7. Optional erstellt das Skript den Administratorcluster mit der folgenden Konfigurationsdatei:
      gcloud compute ssh root@"$VM_WS" --zone "${ZONE}" <<EOF
    set -x
    export PROJECT_ID=\$(gcloud config get-value project)
    ADMIN_CLUSTER_NAME=\$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster_id -H "Metadata-Flavor: Google")
    BMCTL_VERSION=\$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/bmctl_version -H "Metadata-Flavor: Google")
    export ADMIN_CLUSTER_NAME
    export BMCTL_VERSION
    bmctl create config -c \$ADMIN_CLUSTER_NAME
    cat > bmctl-workspace/\$ADMIN_CLUSTER_NAME/\$ADMIN_CLUSTER_NAME.yaml << EOB
    ---
    gcrKeyPath: /root/bm-gcr.json
    sshPrivateKeyPath: /root/.ssh/id_rsa
    gkeConnectAgentServiceAccountKeyPath: /root/bm-gcr.json
    gkeConnectRegisterServiceAccountKeyPath: /root/bm-gcr.json
    cloudOperationsServiceAccountKeyPath: /root/bm-gcr.json
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-\$ADMIN_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: \$ADMIN_CLUSTER_NAME
      namespace: cluster-\$ADMIN_CLUSTER_NAME
    spec:
      type: admin
      anthosBareMetalVersion: \$BMCTL_VERSION
      gkeConnect:
        projectID: \$PROJECT_ID
      controlPlane:
        nodePoolSpec:
          clusterName: \$ADMIN_CLUSTER_NAME
          nodes:
          - address: 10.200.0.3
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: 10.200.0.48
      clusterOperations:
        # might need to be this location
        location: us-central1
        projectID: \$PROJECT_ID
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: node-disk
        lvpShare:
          numPVUnderSharedPath: 5
          path: /mnt/localpv-share
          storageClassName: local-shared
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
    EOB
    
    bmctl create cluster -c \$ADMIN_CLUSTER_NAME
    EOF

    Wenn das Skript vom Administratorcluster erstellt werden soll, wird es über SSH verwendet, um sich bei der Administratorworkstation als Root-Nutzer anzumelden. Als Nächstes führt das Skript das bmctl-Befehlszeilentool aus, um den Administratorcluster zu erstellen. Dies ist eines der Tools, mit dem Sie Administratorcluster erstellen können.

    Wenn Anthos-Cluster auf Bare Metal Cluster erstellen, wird ein Kubernetes-in-Docker-Cluster (Art) auf der Administratorworkstation bereitgestellt. Dieser Bootstrap-Cluster hostet die Kubernetes-Controller, die zum Erstellen von Clustern erforderlich sind, und wird zum Erstellen des Administratorclusters verwendet. Bei der Erstellung werden relevante Controller aus dem Bootstrap-Cluster in den Administratorcluster verschoben. Wenn Sie nichts anderes angeben, wird der Bootstrap-Cluster nach Abschluss der Clustererstellung entfernt. Der Bootstrap-Cluster erfordert, dass Docker Container-Images abruft.

Optional: Administratorcluster erstellen

Wenn das Skript vom Administratorcluster erstellt wurde, fahren Sie mit dem nächsten Abschnitt Administratorcluster überprüfen fort. Andernfalls folgen Sie den Schritten in diesem Abschnitt, um einen Bootstrap-Cluster und den Administratorcluster zu erstellen.

Bevor Sie den Administratorcluster erstellen, müssen Sie den Befehl bmctl register bootstrap auf Ihrer Administratorworkstation ausführen. Mit diesem Befehl wird auf der Administrator-Workstation ein temporärer Cluster in Kubernetes in Docker (Art) bereitgestellt. Dieser Bootstrap-Cluster hostet die Kubernetes-Controller, die zum Erstellen des Administratorclusters erforderlich sind. Wenn Sie den Administratorcluster erstellen, stellen die Controller des Bootstrap-Clusters Knoten bereit, führen Preflight-Prüfungen aus und registrieren den Administratorcluster in der Flotte. Der Bootstrap-Cluster wird nach dem Erstellen des Clusters automatisch gelöscht.

Console

  1. Rufen Sie in der Google Cloud Console die Anthos-Seite Cluster auf.

    Zur Seite "Anthos-Cluster"

  2. Wählen Sie unbedingt PROJECT_ID aus der Projektliste aus.

  3. Klicken Sie auf Cluster erstellen.

  4. Klicken Sie im Dialogfeld auf Lokal.

  5. Klicken Sie neben Bare Metal auf Konfigurieren. Auf der Seite Voraussetzungen werden die Anforderungen für Ihre Administratorworkstation und Ihre Clusterknotenmaschinen angezeigt.

    Achten Sie darauf, dass Administratorcluster erstellen ausgewählt ist.

  6. Klicken Sie in der linken Navigationsleiste auf Bootstrap-Umgebung installieren.

  7. Geben Sie ADMIN_CLUSTER_NAME als Name des Administratorclusters ein. Der Name des Bootstrap-Clusters wird abgeleitet, indem startstrap- dem Namen des Administratorclusters vorangestellt wird.

  8. Wählen Sie VERSION als Version für Ihren Administratorcluster aus. Das Skript hat diese Version des bmctl-Befehlszeilentools auf die Administratorworkstation heruntergeladen. Die Anthos-Cluster auf Bare Metal-Version, die Sie installieren, müssen mit der Version bmctl übereinstimmen.

  9. Wählen Sie im Feld Google Cloud API-Standort ON_PREM_API_REGION aus der Liste aus. Diese Einstellung gibt die Region an, in der die Anthos On-Prem API ausgeführt wird, und die Region, in der Folgendes gespeichert wird:

    • Die Clustermetadaten, die die Anthos On-Prem API zum Verwalten des Clusterlebenszyklus benötigt
    • Cloud Logging- und Cloud Monitoring-Daten von Systemkomponenten
    • Das von Cloud-Audit-Logs erstellte Administrator-Audit-Log

    Der Clustername, das Projekt und der Standort geben den Cluster in Google Cloud eindeutig an.

Führen Sie die Schritte im nächsten Abschnitt anstelle der Schritte in der Console aus, um den Bootstrap-Cluster zu erstellen. Lassen Sie die Console-Seite geöffnet, da Sie hierher zurückkehren, um den Administratorcluster zu erstellen.

gcloud-CLI

Öffnen Sie ein neues Terminalfenster. Verwenden Sie das zweite Terminalfenster, um eine Verbindung zur Administratorworkstation herzustellen, um den Bootstrap-Cluster zu erstellen. Verwenden Sie das erste Terminalfenster, um den gcloud CLI-Befehl auszuführen und den Administratorcluster zu erstellen.

Bootstrap-Cluster erstellen

Führen Sie auf der Administratorworkstation die folgenden Schritte aus.

  1. Stellen Sie eine SSH-Verbindung zur Administrator-Workstation als Root her:

    gcloud compute ssh root@abm-ws --zone ZONE
    

    Sie können alle Meldungen zum Aktualisieren der VM ignorieren und diese Anleitung ausführen. Wenn Sie die VMs als Testumgebung behalten möchten, sollten Sie das Betriebssystem aktualisieren oder auf den nächsten Release upgraden, wie in der Ubuntu-Dokumentation beschrieben.

  2. Legen Sie die Nutzeranmeldedaten als Standardanmeldedaten für Anwendungen fest:

    gcloud auth application-default login
    

    Folgen Sie der Anleitung, um Ihr Google-Konto für ADC auszuwählen.

  3. Erstellen Sie den Bootstrap-Cluster.

    bmctl register bootstrap \
      --ssh-key=/root/.ssh/id_rsa \
      --name=bootstrap-ADMIN_CLUSTER_NAME \
      --project-id=PROJECT_ID
    

Nachdem bmctl den Bootstrap-Cluster erstellt hat, sollte die Ausgabe in etwa so aussehen:

[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
[2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
[2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..

Erstellen Sie den Administratorcluster.

Console

  1. Klicken Sie auf der Seite Bootstrap-Umgebung installieren im Abschnitt Bootstrap-Umgebung von der Administratorworkstation auf Verbindung prüfen.

    Bei Erfolg wird in der Konsole Verbindung hergestellt angezeigt.

    Die Verbindung zum Bootstrap-Cluster muss hergestellt werden, bevor Sie fortfahren können. Wenn die Verbindung nicht hergestellt wurde, prüfen Sie die Argumente, die Sie für den Befehl bmctl register bootstrap angegeben haben:

    • Achten Sie darauf, dass der Wert für --name mit dem abgeleiteten Bootstrap-Namen übereinstimmt, der im Abschnitt Bootstrap-Umgebung – Grundlagen angezeigt wird.

    • Achten Sie darauf, dass der Wert für --project-id mit der ID des Projekts übereinstimmt, das Sie in der Console ausgewählt haben.

    Wenn Sie den Bootstrap-Clusternamen oder die Projekt-ID ändern müssen, geben Sie Ctrl-C ein, um bmctl register bootstrap zu beenden und den Befehl noch einmal auszuführen.

  2. Klicken Sie in der linken Navigationsleiste auf Netzwerk.

  3. Geben Sie im Abschnitt Steuerungsebene Folgendes in das Feld IP-Adresse 1 der Steuerungsebene ein:

    10.200.0.3
    

    Dies ist die IP-Adresse der VM „abm-admin-cluster-cp“ im VXLAN, das vom Skript erstellt wurde.

  4. Im Abschnitt Load-Balancer muss Gebündelt ausgewählt sein.

  5. Geben Sie im Abschnitt Virtuelle IP-Adressen (VIPs) Folgendes in das Feld Virtuelle IP-Adresse der Steuerungsebene ein:

    10.200.0.48
    
  6. Klicken Sie auf Bestätigen und erstellen.

    In der Console werden Statusmeldungen angezeigt, während die Einstellungen geprüft und der Cluster erstellt wird.

gcloud-CLI

  1. Achten Sie darauf, dass die zuvor definierten Umgebungsvariablen die richtigen Werte haben. Auch wenn der Beispielbefehl Platzhalter enthält, müssen diese mit den Umgebungsvariablen übereinstimmen, die das Skript verwendet hat.

    echo $PROJECT_ID
    echo $ADMIN_CLUSTER_NAME
    echo $ON_PREM_API_REGION
    echo $BMCTL_VERSION
    
  2. Prüfen Sie, ob der Bootstrap-Cluster als Mitglied der Flotte registriert wurde:

    gcloud container fleet memberships list \
      --project=PROJECT_ID
    

    Wenn der Bootstrap-Cluster nicht aufgeführt ist, prüfen Sie den Namen des Bootstrap-Clusters und die Projekt-ID, die Sie für bmctl register bootstrap angegeben haben. Wenn Sie den Namen des Bootstrap-Clusters oder die Projekt-ID ändern müssen, geben Sie Ctrl-C ein, um bmctl register bootstrap zu beenden und den Befehl noch einmal auszuführen.

  3. Erstellen Sie den Administratorcluster mit dem gebündelten Load-Balancer:

    gcloud beta container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=ON_PREM_API_REGION \
      --version=BMCTL_VERSION \
      --max-pods-per-node=110 \
      --control-plane-vip=10.200.0.48 \
      --control-plane-load-balancer-port=443 \
      --control-plane-node-configs node-ip=10.200.0.3 \
      --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
      --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
      --lvp-share-path=/mnt/localpv-share \
      --lvp-share-storage-class=local-shared \
      --lvp-node-mounts-config-path=/mnt/localpv-disk \
      --lvp-node-mounts-config-storage-class=local-disks
    

    Gehen Sie im vorherigen Befehl so vor:

    • --control-plane-vip: Ist auf 10.200.0.48 festgelegt. Dies ist die virtuelle IP-Adresse (VIP) auf dem Load-Balancer für den Kubernetes API-Server des Clusters.

    • --control-plane-node-configs: node-ip ist auf 10.200.0.3 gesetzt. Dies ist die IP-Adresse der VM „abm-admin-cluster-cp“ in dem vom Skript erstellten VXLAN.

    Eine vollständige Liste der Flags und ihrer Beschreibungen finden Sie in der Referenz zur gcloud CLI.

    Die Ausgabe des Befehls sieht in etwa so aus:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    In der Beispielausgabe ist der String operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 der OPERATION_ID des Vorgangs mit langer Ausführungszeit. Sie können den Status des Vorgangs ermitteln, indem Sie den folgenden Befehl in einem anderen Terminalfenster ausführen:

    gcloud beta container bare-metal operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=ON_PREM_API_REGION
    

Details zum Clustererstellungsprozess werden auf Ihrer Administratorworkstation ausgegeben. Vor dem Erstellen des Clusters führt bmctl eine Reihe von Preflight-Prüfungen aus, um die Konfiguration zu überprüfen. Wenn die Preflight-Prüfungen erfolgreich sind, wird Folgendes angezeigt:

[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK
[2023-03-22 23:15:47+0000] Writing kubeconfig file
[2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig
[2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster.
[2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK
[2023-03-22 23:20:17+0000] Please run
[2023-03-22 23:20:17+0000] kubectl --kubeconfig bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes
[2023-03-22 23:20:17+0000] to get cluster nodes status.
[2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK
[2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK
[2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK
[2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster
[2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK
[2023-03-22 23:27:41+0000] Flushing logs... OK
[2023-03-22 23:27:41+0000] Deleting membership... OK
[2023-03-22 23:27:42+0000] Deleting bootstrap cluster.

Administratorcluster prüfen

Sie finden die Datei kubeconfig Ihres Administratorclusters auf der Administratorworkstation im Verzeichnis bmctl-workspace des Stammkontos. Führen Sie die folgenden Schritte aus, um Ihre Bereitstellung zu überprüfen.

  1. Wenn das Skript vom Administratorcluster erstellt wurde, stellen Sie eine SSH-Verbindung zur Workstation des Administrators her:

    gcloud compute ssh root@abm-ws --zone ZONE
    

    Sie können alle Meldungen zum Aktualisieren der VM ignorieren und diese Anleitung ausführen. Wenn Sie die VMs als Testumgebung behalten möchten, sollten Sie das Betriebssystem aktualisieren oder auf den nächsten Release upgraden, wie in der Ubuntu-Dokumentation beschrieben.

  2. Legen Sie die Umgebungsvariable KUBECONFIG mit dem Pfad zur Konfigurationsdatei des Clusters fest, um kubectl-Befehle für den Cluster auszuführen.

    export clusterid=ADMIN_CLUSTER_NAME
    export KUBECONFIG=$HOME/bmctl-workspace/$clusterid/$clusterid-kubeconfig
    kubectl get nodes
    

    Die Ausgabe sieht in etwa so aus:

    NAME                   STATUS   ROLES                  AGE   VERSION
    abm-admin-cluster-cp   Ready    control-plane,master   91m   v1.24.2-gke.1900
    
  3. Legen Sie den aktuellen Kontext in einer Umgebungsvariablen fest:

    export CONTEXT="$(kubectl config current-context)"
    
  4. Führen Sie dazu den folgenden gcloud-Befehl aus. Mit diesem Befehl wird Folgendes ausgeführt:

    • Gewährt Ihrem Nutzerkonto die Rolle clusterrole/cluster-admin von Kubernetes im Cluster.
    • Konfiguriert den Cluster so, dass Sie kubectl-Befehle auf Ihrem lokalen Computer ausführen können, ohne eine SSH-Verbindung zur Administratorworkstation herstellen zu müssen.
    • Ermöglicht die Anmeldung im Cluster in der Console mit Ihrer Google-Identität.

    Ersetzen Sie YOUR_EMAIL_ADDRESS durch die E-Mail-Adresse, die mit Ihrem Google Cloud-Konto verknüpft ist. Beispiel: --users=alex@example.com.

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=ADMIN_CLUSTER_NAME \
        --role=clusterrole/cluster-admin \
        --users=YOUR_EMAIL_ADDRESS \
        --project=PROJECT_ID \
        --kubeconfig=$KUBECONFIG \
        --context=$CONTEXT\
        --apply
    

    Die Ausgabe dieses Befehls sieht so aus, weil er gekürzt wurde:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    
    Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig, context: ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME
    Writing RBAC policy for user: YOUR_EMAIL_ADDRESS to cluster.
    Successfully applied the RBAC policy to cluster.
    
  5. Wenn Sie fertig sind, geben Sie exit ein, um sich von der Administratorworkstation abzumelden.

  6. Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um den Eintrag „kubeconfig“ abzurufen, der über das Connect-Gateway auf den Cluster zugreifen kann:

    gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME
    

    Die Ausgabe sieht in etwa so aus:

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.
    
  7. Sie können jetzt kubectl-Befehle über das Connect-Gateway ausführen:

    kubectl get nodes
    

    Die Ausgabe sieht in etwa so aus:

    NAME                   STATUS   ROLES                  AGE   VERSION
    abm-admin-cluster-cp   Ready    control-plane,master   94m   v1.24.2-gke.1900
    
  8. Wenn das Skript vom Administratorcluster erstellt wurde, führen Sie den folgenden Befehl aus, um den Cluster für die Anthos On-Prem API zu registrieren:

    gcloud beta container bare-metal admin-clusters enroll ADMIN_CLUSTER_NAME  \
        --project=PROJECT_ID \
        --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
        --location=ON_PREM_API_REGION
    

    Wenn Sie den Cluster erstellt haben, wird er automatisch für die Anthos On-Prem API registriert.

Nutzercluster erstellen

Beim Erstellen des L2-VXLAN für die VMs hat er die folgenden IP-Adressen im Netzwerk 10.200.0.0/24 zugewiesen. Sie verwenden diese IP-Adressen, wenn Sie Netzwerk- und Knotenpooleinstellungen für den Nutzercluster konfigurieren.

VM-Name Netzwerk-IP-Adresse Knotenbeschreibung
abm-admin-cluster-cp1 10.200.0.3 Knoten der Steuerungsebene für den Administratorcluster
abm-user-cluster-cp1 10.200.0.4 Knoten der Steuerungsebene für den Nutzercluster
abm-user-cluster-w1 10.200.0.5 Worker-Knoten für den Nutzercluster
abm-user-cluster-w2 10.200.0.6 Einen anderen Worker-Knoten für den Nutzercluster

Sie können die Google Cloud Console, die Google Cloud CLI oder Terraform verwenden, um den Nutzercluster zu erstellen.

Console

So erstellen Sie einen Nutzercluster in der Console:

  1. Rufen Sie in der Console die Seite "Anthos-Cluster" auf.

    Zur Seite "Anthos-Cluster"

  2. Achten Sie darauf, dass das Google Cloud-Projekt ausgewählt ist, in dem Sie den Administratorcluster erstellt haben. Der Administratorcluster sollte in der Liste angezeigt werden.

  3. Klicken Sie auf Cluster erstellen.

  4. Klicken Sie im Dialogfeld auf Lokal.

  5. Klicken Sie neben Bare Metal auf Konfigurieren.

  6. Klicken Sie in der linken Navigationsleiste auf Clustergrundlagen.

Clustergrundlagen

  1. Geben Sie einen Namen für den Nutzercluster ein oder verwenden Sie den Standardwert.

  2. Achten Sie darauf, dass der neu erstellte Administratorcluster ausgewählt ist. Für die restlichen Einstellungen auf dieser Seite können Sie die Standardeinstellungen verwenden.

  3. Klicken Sie in der linken Navigationsleiste auf Netzwerk.

Netzwerk

  1. Geben Sie im Abschnitt Steuerungsebene Folgendes in das Feld Knoten der Steuerungsebene 1 ein:

    10.200.0.4
    

    Dies ist die IP-Adresse der VM „abm-user-cluster-cp1“ im VXLAN, das vom Skript erstellt wurde.

  2. Verwenden Sie im Abschnitt Load-Balancer den Standard-Load-Balancer, der mit MetalLB gebündelt ist.

  3. Geben Sie im Abschnitt Neuer Adresspool den folgenden IP-Adressbereich in das Feld IP-Adressbereich 1 ein:

    10.200.0.51-10.200.0.70
    
  4. Klicken Sie auf Fertig.

  5. Geben Sie im Abschnitt Virtuelle IP-Adressen die folgende IP-Adresse in das Feld Virtuelle IP-Adresse der Steuerungsebene ein:

    10.200.0.50
    
  6. Geben Sie für die Ingress VIP die folgende IP-Adresse ein:

    10.200.0.51
    
  7. Verwenden Sie die Standard-IP-Adressen im Abschnitt Dienst- und Pod-CIDRs.

  8. Klicken Sie in der linken Navigationsleiste auf Standardpool.

Knotenpool erstellen

Ihr Cluster muss mindestens einen Knotenpool für Worker-Knoten haben. Ein Knotenpool ist eine Vorlage für die in diesem Cluster erstellten Gruppen von Worker-Knoten.

Geben Sie in das Feld Knotenadresse 1 die folgende IP-Adresse ein:

10.200.0.5

Dies ist die IP-Adresse der VM „abm-user-cluster-w1“ im VXLAN, das vom Skript erstellt wurde.

Cluster erstellen

  1. Klicken Sie auf Bestätigen und erstellen, um den Nutzercluster zu erstellen.

    Das Erstellen des Nutzerclusters dauert 15 Minuten oder länger. In der Console werden Statusmeldungen angezeigt, während die Einstellungen geprüft und der Cluster erstellt wird.

    Wenn bei der Konfiguration ein Problem auftritt, wird in der Console eine Fehlermeldung angezeigt. Diese sollte klar genug sein, dass Sie das Konfigurationsproblem beheben können, und noch einmal versuchen, den Cluster zu erstellen.

    Klicken Sie auf Details anzeigen, um eine Seitenleiste aufzurufen. Klicken Sie auf , um den Detailbereich zu schließen.

    Beim Erstellen des Clusters wird Clusterstatus: aktiv angezeigt.

    Screenshot-Cluster bereit

  2. Nachdem der Cluster erstellt wurde, klicken Sie auf Cluster, um zur Seite Cluster zurückzukehren.

gcloud-CLI

Verwenden Sie den folgenden Befehl, um einen Nutzercluster zu erstellen:

gcloud beta container bare-metal clusters create

Nachdem Sie den Cluster erstellt haben, müssen Sie mit dem folgenden Befehl mindestens einen Knotenpool erstellen:

gcloud beta container bare-metal node-pools create

So erstellen Sie den Nutzercluster:

  1. Achten Sie darauf, dass die zuvor definierten Umgebungsvariablen die richtigen Werte haben. Auch wenn der Beispielbefehl Platzhalter enthält, müssen diese mit den Umgebungsvariablen übereinstimmen, die das Skript verwendet hat.

    echo $PROJECT_ID
    echo $ADMIN_CLUSTER_NAME
    echo $ON_PREM_API_REGION
    echo $BMCTL_VERSION
    
  2. Führen Sie den folgenden Befehl aus, um den Nutzercluster zu erstellen. Ersetzen Sie Folgendes:

    • USER_CLUSTER_NAME: Der Name des Clusters.

    • Achten Sie darauf, dass --admin-users auf die E-Mail-Adresse festgelegt ist, die mit Ihrem Google-Konto verknüpft ist, damit Sie den Cluster verwalten können.

    Die restlichen Flag-Werte wurden für Sie ausgefüllt. Scrollen Sie bei Bedarf, um zu prüfen, ob das Flag --admin-cluster-membership den richtigen Wert für den Namen des Administratorclusters hat. Dies ist das letzte Segment im vollständig angegebenen Mitgliedschaftsnamen.

    gcloud beta container bare-metal clusters create USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
      --location=ON_PREM_API_REGION \
      --version=BMCTL_VERSION \
      --admin-users=YOUR_EMAIL_ADDRESS \
      --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \
      --control-plane-node-configs='node-ip=10.200.0.4' \
      --control-plane-vip=10.200.0.50 \
      --control-plane-load-balancer-port=443 \
      --ingress-vip=10.200.0.51 \
      --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
      --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
      --lvp-share-path=/mnt/localpv-share \
      --lvp-share-storage-class=local-shared \
      --lvp-node-mounts-config-path=/mnt/localpv-disk \
      --lvp-node-mounts-config-storage-class=local-disks
    

In der folgenden Liste werden die Flags beschrieben:

  • --project: Die ID des Projekts, in dem der Nutzercluster registriert wird. Dieses Projekt wird als Flotten-Hostprojekt bezeichnet.

  • --admin-cluster-membership: Der vollständig angegebene Name des Administratorclusters, der den Administratorcluster in der Flotte identifiziert.

  • --location: Die Google Cloud-Region, in der die Anthos On-Prem API ausgeführt wird und ihre Metadaten speichert.

  • --version: Die Version von Anthos-Clustern auf Bare Metal.

  • --admin-users: Geben Sie Ihre E-Mail-Adresse an, um die Kubernetes-Richtlinien für die rollenbasierte Zugriffssteuerung (Role-based Access Control, RBAC) zu erhalten, die Ihnen vollständigen Administratorzugriff auf den Cluster gewähren.

  • --metal-lb-address-pools: Die Adresspoolkonfiguration für den gebündelten MetalLB-Load-Balancer. Der IP-Adressbereich muss sich in dem Netzwerk 10.200.0.0/24 befinden, das vom Skript erstellt wurde. Der Adressbereich darf weder die IP-Adressen enthalten, die den VMs zugewiesen sind, noch die IP-Adresse der Steuerungsebene. Die virtuelle IP-Adresse für eingehenden Traffic muss sich in diesem Bereich befinden.

  • --control-plane-node-configs: Die Knotenkonfiguration der Steuerungsebene für den Nutzercluster. Der Wert für node-ip ist 10.200.0.4. Das ist die IP-Adresse, die das Skript der VM abm-user-cluster-cp1 zugewiesen hat.

  • --control-plane-vip: Die virtuelle IP-Adresse für die Steuerungsebene. Der Wert 10.200.0.50 befindet sich im 10.200.0.0/24-Netzwerk, das vom Skript erstellt wurde. Es überschneidet sich jedoch nicht mit dem IP-Adressbereich, der für die Metal-Load-Balancer-Adresspools verwendet wird.

  • --control-plane-load-balancer-port: Der Port, über den der Load-Balancer die Steuerungsebene bereitstellt. Sie können einen anderen Wert konfigurieren. Port 443 ist jedoch der Standardport für HTTPS-Verbindungen.

  • --ingress-vip: Die virtuelle IP-Adresse für den Dienst für eingehenden Traffic. Diese IP-Adresse muss sich im IP-Adressbereich befinden, der für die MetalLB-Load-Balancer-Adresspools verwendet wird.

  • --island-mode-service-address-cidr-blocks: Ein Bereich von IP-Adressen im CIDR-Format, der für Dienste im Nutzercluster verwendet werden soll. Im Beispielbefehl wurde 10.96.0.0/20 verwendet. Dies ist der von der Console bereitgestellte Standardwert. Der CIDR-Bereich muss zwischen /24 und /12 liegen, wobei /12 die meisten IP-Adressen bietet. Für IP-Adressen empfehlen wir einen Bereich im IP-Adressbereich für private Internets, wie unter RFC 1918 definiert.

  • --island-mode-pod-address-cidr-blocks: Ein Bereich von IP-Adressen im CIDR-Format, der für Pods im Nutzercluster verwendet werden soll. Im Beispielbefehl wurde 192.168.0.0/16 verwendet. Dies ist der von der Console bereitgestellte Standardwert. Der CIDR-Bereich muss zwischen /18 und /8 liegen, wobei /8 die meisten IP-Adressen bietet. Wir empfehlen die Verwendung eines Bereichs im IP-Adressbereich für private Internets, wie in RFC 1918 definiert.

  • --lvp-share-path: Dies ist der Hostcomputer-Pfad, unter dem Unterverzeichnisse erstellt werden können. Für jedes Unterverzeichnis wird ein lokales PersistentVolume (PV) erstellt.

  • --lvp-share-storage-class: Dies ist die AppEngine, die zum Erstellen von nichtflüchtigen Volumes verwendet werden soll. Die StorageClass wird während der Clustererstellung erstellt.

  • --lvp-node-mounts-config-path: Dies ist der Pfad zum Hostcomputer, in dem bereitgestellte Laufwerke erkannt werden können. Für jede Bereitstellung wird ein lokales PersistentVolume (PV) erstellt.

  • --lvp-node-mounts-config-storage: Die Speicherklasse, mit der PVs bei der Clustererstellung erstellt werden.

Nachdem Sie den Befehl ausgeführt haben, sieht die Ausgabe so aus:

Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...

In der Beispielausgabe ist der String operation-1678304606537-5f668bde5c57e-341effde-b612ff8a der OPERATION_ID des Vorgangs mit langer Ausführungszeit.

Kopieren Sie den OPERATION_ID aus der Ausgabe in den folgenden Befehl, um den Status des Vorgangs zu ermitteln. Öffnen Sie ein weiteres Terminalfenster und führen Sie den Befehl aus.

gcloud beta container bare-metal operations describe OPERATION_ID \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION

Das Erstellen des Clusters dauert etwa 15 Minuten oder länger. Während der Cluster erstellt wird, können Sie den vorherigen Befehl immer wieder ausführen, um den aktuellen Status abzurufen.

Wenn der Cluster erstellt wurde, wird eine Ausgabe wie diese angezeigt:

Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/USER_CLUSTER_NAME].

Knotenpool erstellen

Nachdem der Cluster erstellt wurde, führen Sie den folgenden Befehl aus, um einen Knotenpool zu erstellen. Ersetzen Sie NODE_POOL_NAME durch einen Namen für den Knotenpool und achten Sie darauf, dass der Platzhalter für das Flag --cluster weiterhin auf den Namen des Nutzerclusters festgelegt ist.

gcloud beta container bare-metal node-pools create NODE_POOL_NAME \
  --cluster=USER_CLUSTER_NAME \
  --project=PROJECT_ID \
  --location=ON_PREM_API_REGION \
  --node-configs='node-ip=10.200.0.5'
  • -node-configs: Der node-ip zugewiesene Wert ist die IP-Adresse der VM „abm-user-cluster-w1“ im VXLAN, der vom Skript erstellt wurde.

Nachdem Sie den Befehl ausgeführt haben, sieht die Ausgabe so aus:

Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...

Das Erstellen des Knotenpools dauert etwa fünf Minuten. Wenn der Knotenpool erstellt wird, sollte die Ausgabe so aussehen:

Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/USER_CLUSTER_NAME/bareMetalNodePools/NODE_POOL_NAME].

Weitere Befehle für Nutzercluster

Neben dem Erstellen von Clustern gibt es weitere gcloud CLI-Befehle, die Sie ausführen können:

  • So listen Sie Nutzercluster auf:
gcloud beta container bare-metal clusters list \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION
  • So beschreiben Sie einen Nutzercluster:
gcloud beta container bare-metal clusters describe USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION

Weitere Informationen finden Sie unter gcloud beta container bare-metalcluster.

Weitere Knotenpoolbefehle

Neben dem Erstellen von Knotenpools können Sie auch andere gcloud CLI-Befehle verwenden, zum Beispiel:

  • So listen Sie Knotenpools auf:
gcloud beta container bare-metal node-pools list \
    --cluster=USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION
  • So beschreiben Sie einen Knotenpool:
gcloud beta container bare-metal node-pools describe NODE_POOL_NAME \
    --cluster=USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION

Weitere Informationen finden Sie unter gcloud beta container bare-metal node-pools.

Terraform

Mit dem folgenden grundlegenden Konfigurationsbeispiel können Sie einen Nutzercluster mit gebündeltem MetalLB-Load-Balancer erstellen. Weitere Informationen finden Sie in der Referenzdokumentation zu google_gkeonprem_bare_metal_cluster.

  1. Wechseln Sie in dem Verzeichnis, in dem Sie anthos-samples geklont haben, in das Verzeichnis, in dem sich das Terraform-Beispiel befindet:

    cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
    

    Das Beispiel enthält eine Beispielvariablendatei, die an main.tf übergeben wird.

  2. Erstellen Sie eine Kopie der Datei terraform.tfvars.sample:

    cp terraform.tfvars.sample terraform.tfvars
    
    
    project_id          = "PROJECT_ID"
    region              = "ON_PREM_API_REGION"
    admin_cluster_name  = "ADMIN_CLUSTER_NAME"
    bare_metal_version  = "VERSION"
    admin_user_emails   = ["YOUR_EMAIL_ADDRESS", "ADMIN_2_EMAIL_ADDRESS"]
    cluster_name        = "abm-user-cluster-metallb"
    control_plane_ips   = ["10.200.0.4"]
    worker_node_ips     = ["10.200.0.5", "10.200.0.6"]
    control_plane_vip   = "10.200.0.50"
    ingress_vip         = "10.200.0.51"
    lb_address_pools    = [
        { name = "lbpool_1", addresses = ["10.200.0.51-10.200.0.70"] }
    ]
    
  3. Ändern Sie die Parameterwerte in terraform.tfvars und speichern Sie die Datei.

    In der folgenden Liste werden die Variablen beschrieben:

    • project_id: Die ID des Projekts, in dem der Nutzercluster registriert wird. Dieses Projekt wird als Flotten-Hostprojekt bezeichnet.

    • region: Die Google Cloud-Region, die Sie zu Beginn der Anleitung festgelegt haben. Führen Sie echo $ON_PREM_API_REGION aus, um den Wert zu erhalten.

    • admin_cluster_name: Der Name des Administratorclusters, den Sie zu Beginn dieser Anleitung festgelegt haben. Führen Sie echo $ADMIN_CLUSTER_NAME aus, um den Wert zu erhalten.

    • bare_metal_version: Die Anthos-Cluster auf Bare Metal-Version für Ihren Nutzercluster. Führen Sie echo $BMCTL_VERSION aus, um den Wert zu erhalten, den Sie für den Administratorcluster verwendet haben. Wenn Sie möchten, können Sie eine Version angeben, die maximal eine Nebenversion älter als die Version des Administratorclusters ist. Die Version des Nutzerclusters darf nicht höher als die Version des Administratorclusters sein.

    • cluster_name: Sie können den Namen entweder in der TVARS-Datei für den Nutzercluster verwenden oder einen Namen Ihrer Wahl angeben. Der Name kann nach dem Erstellen des Clusters nicht mehr geändert werden.

    • admin_user_emails: Eine Liste der E-Mail-Adressen der Nutzer, denen Administratorberechtigungen für den Cluster gewährt werden sollen. Fügen Sie unbedingt Ihre E-Mail-Adresse hinzu, damit Sie den Cluster verwalten können.

      Wenn der Cluster erstellt wird, wendet die Anthos On-Prem API die rollenbasierte Zugriffssteuerung von Kubernetes (Role-based Access Control, RBAC) auf den Cluster an, um den Administratoren die Rolle clusterrole/cluster-admin zu gewähren. Diese Rolle bietet uneingeschränkten Zugriff auf jede Ressource im Cluster in allen Namespaces. Außerdem können sich Nutzer so mit ihrer Google-Identität in der Console anmelden.

    Verwenden Sie für die restlichen Variablen die in terraform.tvars definierten Standardwerte. Das Skript hat diese Werte beim Erstellen der VMs und des Administratorclusters verwendet.

    • control_plane_ips: Eine Liste mit einer oder mehreren IPv4-Adressen für die Knoten der Steuerungsebene. Verwenden Sie den Standardwert. Das ist die IP-Adresse, die das Skript der VM abm-user-cluster-cp1 zugewiesen hat.

    • worker_node_ips: Eine Liste mit einer oder mehreren IPv4-Adressen für die Worker-Knotenmaschinen. Verwenden Sie die Standardwerte. Dies sind die IP-Adressen, die dem Skript den VMs abm-user-cluster-w1 und abm-user-cluster-w2 zugewiesen werden.

    • control_plane_vip: Die virtuelle IP-Adresse (VIP) für die Steuerungsebene. Verwenden Sie den Standardwert 10.200.0.50 im Netzwerk 10.200.0.0/24, das vom Skript erstellt wurde. Diese IP-Adresse überschneidet sich nicht mit dem IP-Adressbereich, der für die MetalLB-Load-Balancer-Adresspools verwendet wird.

    • ingress_vip: Die virtuelle IP-Adresse, die auf dem Load-Balancer für den Ingress-Proxy konfiguriert werden soll. Verwenden Sie den Standardwert 10.200.0.51. Er befindet sich im 10.200.0.0/24-Netzwerk, das vom Skript erstellt wurde. Diese IP-Adresse liegt im IP-Adressbereich, der für die MetalLB-Load-Balancer-Adresspools verwendet wird.

    • lb_address_pools: Eine Liste der Karten, die die Adresspools für den MetalLB-Load-Balancer definieren. Verwenden Sie den Standardwert.

  4. Speichern Sie die Änderungen in terraform.tfvars.

  5. Initialisieren und erstellen Sie den Terraform-Plan:

    terraform init
    

    Terraform installiert alle erforderlichen Bibliotheken, z. B. den Google Cloud-Anbieter.

  6. Prüfen Sie die Konfiguration und nehmen Sie bei Bedarf Änderungen vor:

    terraform plan
    
  7. Wenden Sie den Terraform-Plan an, um den Nutzercluster zu erstellen:

    terraform apply
    

    Das Erstellen des Nutzerclusters dauert 15 Minuten oder länger. Sie können sich den Cluster in der Google Cloud Console auf der Seite Anthos-Cluster ansehen.

Verbindung zum Nutzercluster herstellen

Wenn Sie einen Nutzercluster über die Console oder die gcloud CLI erstellen, wird der Cluster mit denselben Kubernetes-Richtlinien für die rollenbasierte Zugriffssteuerung (RBAC) konfiguriert, die Sie beim Ausführen von gcloud container fleet memberships generate-gateway-rbac für den Administratorcluster konfiguriert haben. Mit diesen RBAC-Richtlinien können Sie mit Ihrer Google Cloud-Identität eine Verbindung zum Cluster herstellen. Das ist die E-Mail-Adresse, die mit Ihrem Google Cloud-Konto verknüpft ist. Mit diesen RBAC-Richtlinien können Sie sich ohne zusätzliche Konfiguration in der Konsole anmelden.

Verbindung zum Cluster in der Console herstellen

Wenn Sie den Nutzercluster mit der gcloud CLI erstellt haben, rufen Sie die Seite „Anthos-Cluster“ in der Console auf:

Zur Seite "Anthos-Cluster"

Achten Sie darauf, dass das Projekt ausgewählt ist, in dem Sie den Nutzercluster erstellt haben. Sie sollten sowohl den Administrator- als auch den Nutzercluster in der Liste sehen.

Beachten Sie, dass der Nutzercluster in der Spalte Typ Anthos (Bare Metal: Nutzer) enthält. Dies zeigt an, dass der Cluster von der Anthos On-Prem API verwaltet wird.

Der Administratorcluster hat in der Spalte Type den Wert External. Dies zeigt an, dass der Cluster nicht von der Anthos On-Prem API verwaltet wird.

Screenshot-Clusterliste

Obwohl der Administratorcluster mit bmctl vom Skript erstellt wurde, können Sie den Administratorcluster so konfigurieren, dass er von der Anthos On-Prem API verwaltet wird.

So melden Sie sich in einem Cluster an:

  1. Klicken Sie auf den Link neben dem Clusternamen und dann in der Seitenleiste auf Anmelden.

  2. Mit Google-Identität anmelden auswählen

  3. Klicken Sie auf Login.

Wiederholen Sie dieselben Schritte, um sich auch im Administratorcluster anzumelden.

Screenshot-Clusterliste

Verbindung zum Cluster über die Befehlszeile herstellen

Die Anthos On-Prem API konfiguriert die RBAC-Richtlinien für Sie als Nutzercluster-Ersteller. Mit diesen Richtlinien können Sie kubectl-Befehle auf dem lokalen Computer mit dem kubeconfig-Gateway ausführen.

Über den lokalen Computer:

  1. Rufen Sie den Eintrag kubeconfig ab, der über das Connect-Gateway auf den Cluster zugreifen kann.

    gcloud container fleet memberships get-credentials USER_CLUSTER_NAME
    

    Die Ausgabe sieht in etwa so aus:

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_USER_CLUSTER_NAME" has been generated and set as the current context.
    
  2. Sie können jetzt kubectl-Befehle über das Connect-Gateway ausführen:

    kubectl get nodes
    

    Die Ausgabe sieht in etwa so aus:

    NAME                  STATUS   ROLES                  AGE     VERSION
    abm-user-cluster-cp   Ready    control-plane,master   14m     v1.24.2-gke.1900
    abm-user-cluster-w1   Ready    worker                 8m28s   v1.24.2-gke.1900
    

Weiteren Knotenpool zum Nutzercluster hinzufügen

Console

  1. Rufen Sie in der Google Cloud Console die Anthos-Seite Cluster auf.

    Zur Seite "Anthos-Cluster"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Bereich Details auf Weitere Details.

  3. Klicken Sie auf den Tab Knoten.

  4. Klicken Sie auf Knotenpool hinzufügen .

  5. Geben Sie einen Namen für den Knotenpool ein.

  6. Geben Sie in das Feld Knotenadresse 1 die folgende IP-Adresse ein:

    10.200.0.6
    

    Dies ist die IP-Adresse der VM „abm-user-cluster-w2“, die vom Skript erstellt wurde.

  7. Klicke auf Erstellen.

  8. Klicken Sie bei Bedarf noch einmal auf den Tab Knoten.

  9. Der neue Knotenpool zeigt den Status Abgleich an.

  10. Klicken Sie rechts oben auf , um den Status der Knotenpoolerstellung aufzurufen. Möglicherweise müssen Sie die Seite aktualisieren, um den aktualisierten Status in der Liste der Knotenpools zu sehen.

gcloud-CLI

Führen Sie den folgenden Befehl aus, um einen weiteren Knotenpool zu erstellen. Ersetzen Sie NODE_POOL_NAME_2 durch einen Namen für den Knotenpool und achten Sie darauf, dass der Platzhalter für das Flag --cluster weiterhin auf den Namen des Nutzerclusters festgelegt ist.

gcloud beta container bare-metal node-pools create NODE_POOL_NAME_2 \
  --cluster=USER_CLUSTER_NAME \
  --project=PROJECT_ID \
  --location=ON_PREM_API_REGION \
  --node-configs='node-ip=10.200.0.6'
  • -node-configs: Der Wert node-ip ist die IP-Adresse der VM „abm-user-cluster-w2“ im VXLAN, der vom Skript erstellt wurde.

Terraform

Wenn Sie den Cluster mit Terraform erstellt haben, wurde der Cluster mit zwei Knoten erstellt. Es sind also keine zusätzlichen VMs in VXLAN verfügbar, um einen weiteren Knoten hinzuzufügen. Informationen zum Hinzufügen von Knotenpools finden Sie in der Referenzdokumentation zu google_gkeonprem_bare_metal_cluster.

Sie können den neuen Knoten auch mit kubectl bestätigen. Sie müssen zuerst den Befehl gcloud container fleet memberships get-credentials ausführen, wie zuvor gezeigt, um die Clusterkonfiguration abzurufen:

kubectl get nodes

Die Ausgabe sieht in etwa so aus:

NAME                  STATUS   ROLES                  AGE     VERSION
abm-user-cluster-cp   Ready    control-plane,master   24m   v1.24.2-gke.1900
abm-user-cluster-w1   Ready    worker                 18m   v1.24.2-gke.1900
abm-user-cluster-w2   Ready    worker                 52s   v1.24.2-gke.1900

Bereinigen

Nutzercluster löschen

Console

  1. Rufen Sie in der Console die Seite "Anthos-Cluster" auf.

    Zur Seite "Anthos-Cluster"

  2. Klicken Sie in der Liste der Cluster auf den Nutzercluster.

  3. Klicken Sie im Bereich Details auf Weitere Details.

  4. Klicken Sie oben im Fenster auf Löschen.

  5. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den Clusternamen ein und klicken Sie auf Bestätigen.

  6. Klicken Sie rechts oben auf , um den Status des Löschvorgangs aufzurufen. Möglicherweise müssen Sie die Seite aktualisieren, um die Clusterliste zu aktualisieren.

gcloud-CLI

Führen Sie den folgenden Befehl aus, um den Cluster zu löschen:

gcloud beta container bare-metal clusters delete USER_CLUSTER_NAME \
  --project=PROJECT_ID \
  --location=ON_PREM_API_REGION \
  --force

Mit dem Flag --force können Sie einen Cluster löschen, der Knotenpools hat. Ohne das Flag --force müssen Sie zuerst die Knotenpools löschen und dann den Cluster löschen.

Informationen zu anderen Flags finden Sie unter gcloud beta container bare-metal cluster delete.

Terraform

Führen Sie dazu diesen Befehl aus:

terraform destroy

Warten Sie, bis der Nutzercluster gelöscht wurde, bevor Sie den Administratorcluster und die VMs löschen.

Administratorcluster und VMs löschen

  1. Melden Sie den Administratorcluster von der Anthos On-Prem API ab:

    gcloud beta container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION
    
  2. Stellen Sie eine Verbindung zur Administratorworkstation her:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  3. Löschen Sie den Administratorcluster:

    bmctl reset -c ADMIN_CLUSTER_NAME
    

    bmctl hebt die Registrierung des Clusters bei der Flotte auf und löscht dann den Cluster. Warten Sie, bis der Cluster gelöscht wurde, bevor Sie die VMs löschen.

  4. Beenden Sie die Administratorworkstation.

  5. Listen Sie alle VMs auf, deren Name abm enthält:

    gcloud compute instances list | grep 'abm'
    
  6. Prüfen Sie, ob Sie mit dem Löschen aller VMs einverstanden sind, die abm im Namen enthalten.

    Nach der Bestätigung können Sie abm-VMs mit dem folgenden Befehl löschen:

    gcloud compute instances list --format="value(name)" | \
      grep 'abm'  | \
      xargs gcloud --quiet compute instances delete
    
  7. Löschen Sie das Dienstkonto:

    gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    

    Geben Sie in der Bestätigungsmeldung y ein.

    Nächste Schritte