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

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

Die Administratorworkstation hostet Befehlszeilentools und Konfigurationsdateien zum Bereitstellen von Clustern während der Installation sowie Befehlszeilentools für die Interaktion mit bereitgestellten Clustern nach der Installation. Mit dem Skript werden die Befehlszeilentools auf der VM der Administratorworkstation installiert.

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, auf denen Nutzerarbeitslasten ausgeführt werden. Ein Administratorcluster ist ein Kubernetes-Cluster, der einen oder mehrere Nutzercluster verwaltet und beim Erstellen, Aktualisieren und Löschen von Nutzerclustern hilft. Ein Administratorcluster besteht nur aus Knoten der Steuerungsebene. Weitere Informationen finden Sie unter Administrator- und Nutzercluster bereitstellen.

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 oder Sie erstellen den Administratorcluster selbst, um mehr über die Tools zu erfahren, die GKE on Bare Metal zum Erstellen von Administratorclustern bietet.

Mit dem bereitgestellten Skript können Sie GKE on Bare Metal schnell und ohne Vorbereitung ausprobieren. Wenn Sie die Schritte auf dieser Seite ausführen, erhalten Sie eine funktionierende GKE on Bare Metal-Testumgebung, die in Compute Engine ausgeführt wird.

Was ist die GKE On-Prem API?

Die GKE 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 GKE 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 GKE On-Prem API Metadaten zum Status Ihres Clusters in Google Cloud speichern. Dabei wird die Google Cloud-Region verwendet, die Sie beim Erstellen des Clusters angeben. Mit diesen Metadaten kann die API den Clusterlebenszyklus verwalten. Sie enthalten keine arbeitslastspezifischen Daten.

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

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. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

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

    Go to project selector

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Notieren Sie sich die Projekt-ID. Sie benötigen sie zum Festlegen einer Umgebungsvariable, die im Skript und in den Befehlen auf dieser Seite verwendet wird. Wenn Sie ein vorhandenes Projekt ausgewählt haben, müssen Sie entweder Projektinhaber oder -bearbeiter sein.
  7. Sie können das Skript in Cloud Shell oder auf Ihrem lokalen Computer mit Linux oder macOS ausführen. 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. Aktualisieren Sie bei Bedarf die Komponenten der gcloud CLI:
      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 gcloud CLI für diese Installation deaktiviert ist. Mit dem folgenden Befehl können Sie bei dieser Installation dasselbe Ergebnis erzielen:“. Folgen Sie der Anleitung zum Kopieren und Einfügen des Befehls zum Aktualisieren der Komponenten.

    2. Achte 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 folgende Schritte aus, um das Skript einzurichten und auszuführen. Das Skript, das Sie herunterladen und ausführen, stammt aus dem Repository anthos-samples. Wenn Sie mehr über das Skript erfahren möchten, bevor Sie es ausführen, lesen Sie den nächsten Abschnitt Informationen zum 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 GKE 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. Legen Sie das Standardprojekt und die -zone fest:

    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 in der gcloud CLI mit dem Konto anzumelden, das Zugriff auf das Projekt hat.

  3. Rufen Sie eine Liste der GKE on Bare Metal-Versionen ab, die Sie installieren können:

    gcloud container bare-metal admin-clusters query-version-config \
        --location=ON_PREM_API_REGION
    

    Einige Anleitungen in diesem Dokument hängen von der GKE On-Prem API ab, die einen Teil der verfügbaren GKE on Bare Metal-Versionen unterstützt.

  4. Wählen Sie eine Version aus der Ausgabe des vorherigen Befehls aus und legen Sie sie in einer Umgebungsvariablen fest:

    export BMCTL_VERSION=BMCTL_VERSION
    

    Wir empfehlen, die höchste kompatible Version auszuwählen, um die neuesten Features und Fehlerkorrekturen von GKE on Bare Metal zu erhalten.

  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, damit das Skript die VM-Infrastruktur einrichten und den Administratorcluster installiert.
    • Geben Sie 2 ein, damit das Skript nur die VM-Infrastruktur einrichtet.
  8. Bestätigen Sie Ihre Auswahl, wenn Sie dazu aufgefordert werden.

Das Skript gibt jeden ausgeführten Befehl und den Status aus. Wenn die Installation 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         |
|---------------------------------------------------------------------------------------------------------|

Informationen zum Skript

Für weitere Informationen zu install_admin_cluster.sh klicken Sie in der nächsten Zeile auf Informationen zum Skript.

Informationen zum 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 erforderlich sind.
  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 prüft außerdem, ob SSH auf allen VMs aktiviert ist.
  4. Erstellt ein VXLAN-Overlay-Netzwerk (Virtual Extensible LAN) für Ebene-2-Verbindungen zwischen den VMs. Die VXLAN ist nicht dauerhaft. Wenn Sie eine VM-Instanz neu starten, wird das Netzwerk also zerstört. Das Netzwerk ist so eingerichtet, dass es sich im Subnetz 10.200.0.0/24 befindet. Die Ebene-2-Verbindung 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 Administratorworkstation herunter.

  6. Stellt sicher, dass root@10.200.0.x auf der Administratorworkstation funktioniert, indem die folgenden Aufgaben ausgeführt werden:
    1. Generieren Sie einen neuen SSH-Schlüssel auf der Administratorworkstation.
    2. Fügt allen anderen VMs in der Bereitstellung den öffentlichen Schlüssel 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 Sie festgelegt haben, dass das Skript den Administratorcluster erstellen soll, verwendet das Skript SSH, um sich als Root-Nutzer bei der Administratorworkstation anzumelden. Als Nächstes führt das Skript das bmctl-Befehlszeilentool aus, um den Administratorcluster zu erstellen. Dies ist eines der Tools, mit denen Sie Administratorcluster erstellen können.

    Wenn GKE on Bare Metal Cluster erstellt, wird ein Kubernetes-Cluster in Docker (Art) auf der Administratorworkstation bereitgestellt. Dieser Bootstrap-Cluster hostet die zum Erstellen von Clustern erforderlichen Kubernetes-Controller und wird zum Erstellen des Administratorclusters verwendet. Nach der Erstellung werden die relevanten Controller aus dem Bootstrap-Cluster in den Administratorcluster verschoben. Wenn nicht anders angegeben, wird der Bootstrap-Cluster entfernt, wenn die Clustererstellung erfolgreich abgeschlossen wurde. Der Bootstrap-Cluster benötigt Docker, um Container-Images abzurufen.

Administratorcluster erstellen (optional)

Wenn der Administratorcluster durch das Skript erstellt wurde, fahren Sie mit dem nächsten Abschnitt Administratorcluster prüfen fort. Andernfalls führen Sie die Schritte in diesem Abschnitt aus, um einen Bootstrap-Cluster und den Administratorcluster zu erstellen.

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

Console

  1. Rufen Sie in der Console die Seite GKE on Bare Metal-Cluster erstellen auf.

    Zur Seite „GKE on Bare Metal-Cluster erstellen“

  2. Achten Sie darauf, PROJECT_ID aus der Projektliste auszuwählen.

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

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

  5. Wählen Sie VERSION als Version für Ihren Administratorcluster aus. Das Skript hat diese Version des bmctl-Befehlszeilentools auf die Administratorworkstation heruntergeladen. Die von Ihnen installierte GKE on Bare Metal-Version muss mit der Version bmctl übereinstimmen.

  6. Wählen Sie im Feld Standort der Google Cloud API die Option ON_PREM_API_REGION aus der Liste aus. Diese Einstellung gibt die Region an, in der die GKE On-Prem API ausgeführt wird, und die Region, in der die folgenden Daten gespeichert sind:

    • Die Clustermetadaten, die die GKE 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 identifizieren zusammen den Cluster in Google Cloud eindeutig.

Führen Sie zum Erstellen des Bootstrap-Clusters die Schritte im nächsten Abschnitt anstelle der in der Konsole angezeigten Schritte aus. Lassen Sie die Konsolenseite angezeigt, da Sie dorthin zurückkehren und den Administratorcluster erstellen.

gcloud-CLI

Öffnen Sie ein neues Terminalfenster. Im zweiten Terminalfenster stellen Sie eine Verbindung zur Administratorworkstation her und erstellen den Bootstrap-Cluster. Im ersten Terminalfenster führen Sie den gcloud CLI-Befehl aus, um den Administratorcluster zu erstellen.

Bootstrap-Cluster erstellen

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

  1. Verwenden Sie SSH, um als Root auf die Administratorworkstation zuzugreifen:

    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 beibehalten möchten, sollten Sie das Betriebssystem aktualisieren oder ein Upgrade auf den nächsten Release durchführen, wie in der Ubuntu-Dokumentation beschrieben.

  2. Legen Sie Ihre Nutzeranmeldedaten als Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) 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 erfolgreich erstellt hat, sieht die Ausgabe in etwa so aus:

[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 Administratorworkstation installieren auf Verbindung prüfen.

    Bei Erfolg wird in der Konsole Verbindung hergestellt angezeigt.

    Die Verbindung zum Bootstrap-Cluster muss hergestellt werden, bevor Sie fortfahren. Wenn keine Verbindung hergestellt wird, prüfen Sie die Argumente, die Sie im Befehl bmctl register bootstrap angegeben haben:

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

    • Der Wert für --project-id muss mit der ID des Projekts übereinstimmen, das Sie in der Console ausgewählt 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.

  2. Klicken Sie in der linken Navigationsleiste auf Netzwerk.

  3. Geben Sie im Abschnitt Steuerungsebene Folgendes in das Feld IP 1 des Knotens 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. Achten Sie darauf, dass im Abschnitt Load-Balancer die Option Gebündelt ausgewählt ist.

  5. Geben Sie im Abschnitt Virtuelle IP-Adressen (VIPs) Folgendes in das Feld VIP 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 überprüft und der Cluster erstellt wird.

gcloud-CLI

  1. Achten Sie darauf, dass die zuvor definierten Umgebungsvariablen die richtigen Werte haben. Im Beispielbefehl werden zwar Platzhalter verwendet, diese müssen aber den Umgebungsvariablen entsprechen, die im Skript verwendet wurden.

    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 und die Projekt-ID des Bootstrap-Clusters, 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 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
    

    Im vorherigen Befehl:

    • --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 festgelegt. Dies ist die IP-Adresse der VM „abm-admin-cluster-cp“ in der 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 container bare-metal operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=ON_PREM_API_REGION
    

Details zur Clustererstellung werden auf Ihrer Administrator-Workstation ausgegeben. Vor dem Erstellen des Clusters führt bmctl eine Reihe von Preflight-Prüfungen aus, um die Konfiguration zu prüfen. Wenn die Preflight-Prüfungen bestanden sind, wird in etwa 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 prüfen.

  1. Wenn der Administratorcluster durch das Skript erstellt wurde, verwenden Sie SSH, um als Root auf die Administrator-Workstation zuzugreifen:

    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 beibehalten möchten, sollten Sie das Betriebssystem aktualisieren oder ein Upgrade auf den nächsten Release durchführen, wie in der Ubuntu-Dokumentation beschrieben.

  2. Legen Sie die Umgebungsvariable KUBECONFIG mit dem Pfad zur Konfigurationsdatei des Clusters fest, um kubectl-Befehle im 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 Kubernetes-Rolle clusterrole/cluster-admin für den 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.
    • Hiermit können Sie sich mit Ihrer Google-Identität in der Console beim Cluster anmelden.

    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 in etwa so aus und ist zur besseren Lesbarkeit gekürzt:

    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 die Untersuchung abgeschlossen haben, geben Sie exit ein, um sich von der Administrator-Workstation abzumelden.

  6. Führen Sie den folgenden Befehl auf Ihrem lokalen Computer aus, um den kubeconfig-Eintrag 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 Verbindungsgateway 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
    

In GKE on Bare Metal 1.16 und höher wird der Cluster automatisch bei der GKE On-Prem API registriert. So können Sie die gcloud CLI und die Konsole verwenden, um den Administratorcluster zu aktualisieren und zu aktualisieren.

Nutzercluster erstellen

Als das Skript die L2-VXLAN für die VMs erstellt hat, wurden die folgenden IP-Adressen im Netzwerk 10.200.0.0/24 zugewiesen. Sie verwenden diese IP-Adressen, wenn Sie die 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 weiteren Worker-Knoten für den Nutzercluster

Sie können den Nutzercluster mit der Google Cloud Console, der Google Cloud CLI oder Terraform erstellen.

Console

Führen Sie die folgenden Schritte aus, um einen Nutzercluster in der Console zu erstellen:

  1. Rufen Sie in der Console die Seite GKE on Bare Metal-Cluster erstellen auf.

    Zur Seite „GKE on Bare Metal-Cluster erstellen“

  2. Achten Sie darauf, dass das Google Cloud-Projekt ausgewählt ist, in dem Sie den Administratorcluster erstellt haben.

  3. Klicken Sie auf Cluster erstellen.

  4. Klicken Sie im Dialogfeld auf Lokal.

  5. Klicken Sie neben Bare Metal auf Konfigurieren. Die Seite Voraussetzungen wird angezeigt.

  6. Wählen Sie unter Clustertyp auswählen die Option Nutzercluster für einen vorhandenen Administratorcluster erstellen aus.

  7. Klicken Sie auf Next (Weiter).

Clustergrundlagen

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

  2. Prüfen Sie, ob 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-IP-Adresse 1 der Steuerungsebene 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 Bundled with MetalLB.

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

    10.200.0.51-10.200.0.70
    
  4. Klicken Sie auf Fertig.

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

    10.200.0.50
    
  6. Geben Sie die folgende IP-Adresse als VIP für eingehenden Traffic 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

Der Cluster muss mindestens einen Knotenpool für Worker-Knoten haben. Ein Knotenpool ist eine Vorlage für die Gruppen von Worker-Knoten, die in diesem Cluster erstellt werden.

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“ in der vom Skript erstellten VXLAN.

Cluster erstellen

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

    Das Erstellen des Nutzerclusters dauert mindestens 15 Minuten. Die Konsole zeigt Statusmeldungen an, während die Einstellungen überprüft und der Cluster erstellt wird.

    Wenn ein Problem mit der Konfiguration auftritt, wird in der Console eine Fehlermeldung angezeigt, die klar genug verständlich ist, damit Sie das Konfigurationsproblem beheben und noch einmal versuchen können, den Cluster zu erstellen.

    Wenn Sie zusätzliche Informationen zum Erstellungsprozess sehen möchten, klicken Sie auf Details anzeigen, um eine Seitenleiste einzublenden. Klicken Sie auf , um den Detailbereich zu schließen.

    Nachdem der Cluster erstellt wurde, wird er als Clusterstatus: wird ausgeführt angezeigt.

    Screenshot-Cluster bereit

  2. Klicken Sie nach dem Erstellen des Clusters auf Cluster, um zur Seite Cluster zurückzukehren.

gcloud-CLI

Mit dem folgenden Befehl erstellen Sie einen Nutzercluster:

gcloud container bare-metal clusters create

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

gcloud container bare-metal node-pools create

So erstellen Sie den Nutzercluster:

  1. Achten Sie darauf, dass die zuvor definierten Umgebungsvariablen die richtigen Werte haben. Im Beispielbefehl werden zwar Platzhalter verwendet, diese müssen aber den Umgebungsvariablen entsprechen, die im Skript verwendet wurden.

    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 dabei 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 bereits 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. Das ist das letzte Segment im vollständig angegebenen Mitgliedschaftsnamen.

    gcloud 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 GKE On-Prem API ausgeführt wird und ihre Metadaten speichert.

  • --version: Die GKE on Bare Metal-Version.

  • --admin-users: Geben Sie Ihre E-Mail-Adresse an, damit die Richtlinien für die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) von Kubernetes gewährt werden, die Ihnen vollständigen Administratorzugriff auf den Cluster gewährt.

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

  • --control-plane-node-configs: Die Knotenkonfiguration der Steuerungsebene für den Nutzercluster. Der Wert für node-ip ist 10.200.0.4. Dies 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 das Skript erstellt hat, überschneidet sich jedoch nicht mit dem IP-Adressbereich, der für die Adresspools des MetalLB-Load-Balancers verwendet wird.

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

  • --ingress-vip: Die virtuelle IP-Adresse für den Ingress-Dienst. Diese IP-Adresse muss sich in dem 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 wird. In dem Beispielbefehl wurde 10.96.0.0/20 verwendet. Dies ist der Standardwert, der von der Konsole bereitgestellt wird. Der CIDR-Bereich muss zwischen /24 und /12 liegen, wobei /12 die meisten IP-Adressen bietet. Wir empfehlen die Verwendung eines Bereichs im IP-Adressbereich für private Internets, wie in RFC 1918 definiert.

  • --island-mode-pod-address-cidr-blocks: Ein Bereich von IP-Adressen im CIDR-Format, der für Pods im Nutzercluster verwendet wird. In dem Beispielbefehl wurde 192.168.0.0/16 verwendet. Dies ist der Standardwert, der von der Konsole bereitgestellt wird. 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 Pfad zum Hostcomputer, in dem Unterverzeichnisse erstellt werden können. Für jedes Unterverzeichnis wird ein lokales nichtflüchtiges Volume (PV) erstellt.

  • --lvp-share-storage-class: Dies ist die Speicherklasse, die zum Erstellen nichtflüchtiger Volumes verwendet wird. 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 nichtflüchtiges Volume (PV) erstellt.

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

Nachdem Sie den Befehl ausgeführt haben, sehen Sie eine Ausgabe wie die folgende:

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 anderes Terminalfenster und führen Sie den Befehl aus.

gcloud 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 hin und wieder ausführen, um den aktuellen Status abzurufen.

Wenn der Cluster erstellt wurde, sehen Sie in etwa folgende Ausgabe:

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 erfolgreich 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 prüfen Sie, ob als Platzhalter für das Flag --cluster weiterhin der Name des Nutzerclusters festgelegt ist.

gcloud 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“ in der vom Skript erstellten VXLAN.

Nachdem Sie den Befehl ausgeführt haben, sehen Sie eine Ausgabe wie die folgende:

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

Das Erstellen des Knotenpools dauert maximal 5 Minuten. Nachdem der Knotenpool erstellt wurde, sieht die Ausgabe in etwa so aus:

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].

Andere Befehle für Nutzercluster

Neben dem Erstellen von Clustern können Sie auch andere gcloud CLI-Befehle ausführen, z. B.:

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

Weitere Informationen finden Sie unter gcloud container bare-metal Clusters.

Andere Knotenpoolbefehle

Neben dem Erstellen von Knotenpools können Sie auch andere gcloud CLI-Befehle ausführen, z. B.:

  • So listen Sie Knotenpools auf:
gcloud container bare-metal node-pools list \
    --cluster=USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION
  • So beschreiben Sie einen Knotenpool:
gcloud 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 container bare-metal node-pools.

Terraform

Sie können das folgende grundlegende Konfigurationsbeispiel verwenden, um einen Nutzercluster mit einem gebündelten MetalLB-Load-Balancer zu erstellen. Weitere Informationen finden Sie in der Referenzdokumentation zu google_gkeonprem_bare_metal_cluster.

  1. Wechseln Sie in dem Verzeichnis, in das 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 abzurufen.

    • 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 abzurufen.

    • bare_metal_version: Die GKE on Bare Metal-Version für Ihren Nutzercluster. Wenn Sie dieselbe Version verwenden möchten, die Sie für den Administratorcluster verwendet haben, führen Sie echo $BMCTL_VERSION aus, um den Wert abzurufen. Wenn Sie möchten, können Sie auch eine Version angeben, die nicht mehr als eine Nebenversion niedriger 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 entweder den Namen 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 GKE On-Prem API die Richtlinien für die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) von Kubernetes auf den Cluster an, um den Administratoren die Kubernetes-Rolle clusterrole/cluster-admin zu gewähren. Diese gewährt vollständigen Zugriff auf jede Ressource im Cluster in allen Namespaces. Dadurch können sich Nutzer auch mit ihrer Google-Identität in der Console anmelden.

    Verwenden Sie für die verbleibenden 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, also die IP-Adressen, die das Skript den VMs abm-user-cluster-w1 und abm-user-cluster-w2 zugewiesen hat.

    • control_plane_vip: Die virtuelle IP (VIP) für die Steuerungsebene. Verwenden Sie den Standardwert 10.200.0.50, der sich im 10.200.0.0/24-Netzwerk befindet, das vom Skript erstellt wurde. Beachten Sie, dass sich diese IP-Adresse nicht mit dem IP-Adressbereich überschneidet, der für die Adresspools des MetalLB-Load-Balancers 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, der sich im 10.200.0.0/24-Netzwerk befindet, das vom Skript erstellt wurde. Beachten Sie, dass sich diese IP-Adresse im IP-Adressbereich befindet, der für die Adresspools des MetalLB-Load-Balancers verwendet wird.

    • lb_address_pools: Eine Liste von Zuordnungen, 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. Überprü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 mindestens 15 Minuten. Sie können den Cluster in der Google Cloud Console auf der Seite GKE-Cluster ansehen.

Verbindung zum Nutzercluster herstellen

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

Stellen Sie in der Console eine Verbindung zum Cluster her

Wenn Sie den Nutzercluster mit der gcloud CLI oder Terraform erstellt haben, rufen Sie in der Console die Seite GKE-Cluster auf:

Zu GKE-Clustern

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

Beachten Sie, dass für den Nutzercluster in der Spalte Typ der Eintrag Bare Metal: Nutzer angezeigt wird. Dies weist darauf hin, dass der Cluster von der GKE On-Prem API verwaltet wird.

Wenn Sie das Skript zum Erstellen des Administratorclusters verwendet haben, wird in der Spalte Typ der Eintrag Extern angezeigt. Dies weist darauf hin, dass der Cluster nicht von der GKE On-Prem API verwaltet wird. Sie können den Administratorcluster so konfigurieren, dass er von der GKE On-Prem API verwaltet wird, nachdem der Cluster erstellt wurde.

Screenshot-Clusterliste

So melden Sie sich bei einem Cluster an:

  1. Klicken Sie auf den Link für den Clusternamen und dann in der Seitenleiste auf Login (Anmelden).

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

  3. Klicken Sie auf Anmelden.

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

Screenshot-Clusterliste

Verbindung zum Cluster über die Befehlszeile herstellen

Die GKE On-Prem API konfiguriert die RBAC-Richtlinien für Sie als Ersteller des Nutzerclusters. Mit diesen Richtlinien können Sie kubectl-Befehle auf Ihrem lokalen Desktop über das Verbindungsgateway kubeconfig ausführen.

Auf dem lokalen Computer:

  1. Rufen Sie den Eintrag kubeconfig ab, der über das Verbindungsgateway 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 Verbindungsgateway 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 Console die Seite GKE-Cluster auf.

    Zu GKE-Clustern

  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 im 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 anzusehen. 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 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 node-ip zugewiesene Wert ist die IP-Adresse der VM „abm-user-cluster-w2“ im VXLAN, die vom Skript erstellt wurde.

Terraform

Wenn Sie den Cluster mit Terraform erstellt haben, enthält er zwei Knoten, sodass im VXLAN keine zusätzlichen VMs zum Hinzufügen eines weiteren Knotens verfügbar sind. 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 prüfen. Sie müssen zuerst den Befehl gcloud container fleet memberships get-credentials wie oben gezeigt ausführen, 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

Die folgenden Abschnitte enthalten Anweisungen zum Entfernen der Cluster und VMs, die Sie mit dieser Anleitung erstellt haben.

Nutzercluster löschen

Console

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

    Zu GKE-Clustern

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

  3. Klicken Sie im Steuerfeld 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 anzusehen. 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 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 mit Knotenpools löschen. 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 container bare-metal Clusters delete.

Terraform

Führen Sie dazu diesen Befehl aus:

terraform destroy

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

Administratorcluster und VMs löschen

  1. Heben Sie die Registrierung des Administratorclusters von der GKE On-Prem API auf:

    gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION
    
  2. Stellen Sie eine Verbindung zur Administrator-Workstation 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 den Cluster dann. Warten Sie, bis der Cluster gelöscht ist, bevor Sie die VMs löschen.

  4. Beenden Sie die Administrator-Workstation.

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

    gcloud compute instances list | grep 'abm'
    
  6. Prüfen Sie, ob Sie alle VMs löschen können, deren Namen abm enthält.

    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 --zone ZONE
    
  7. Löschen Sie das Dienstkonto:

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

    Geben Sie in der Bestätigungsaufforderung y ein.

    Nächste Schritte