Anthos-Cluster auf Bare-Metal-Servern auf Compute Engine-VMs mit Terraform testen

In diesem Dokument wird gezeigt, wie Sie VMs mit Terraform auf Compute Engine einrichten, um Anthos-Cluster auf Bare Metal im Hochverfügbarkeitsmodus (High Availability, HA) zu installieren und zu testen. Informationen zur Verwendung des Google Cloud CLI finden Sie unter Anthos-Cluster auf Bare-Metal auf Compute Engine-VMs testen.

Sie können Anthos-Cluster auf Bare Metal testen, ohne Hardware vorbereiten zu müssen. Mit den bereitgestellten Terraform-Skripts wird in Compute Engine ein Netzwerk von VMs erstellt, mit denen Anthos-Cluster auf Bare Metal ausgeführt werden können. In dieser Anleitung wird das Modell für das Deployment von Hybridclustern verwendet.

Zum Ausführen eines Beispielclusters führen Sie die folgenden Schritte aus:

  1. Terraform-Skript ausführen, um ein Netzwerk von VMs in Compute Engine einzurichten
  2. Hybridcluster bereitstellen
  3. Cluster überprüfen

Hinweis

Für das Deployment sind die folgenden Ressourcen erforderlich:

VM-Netzwerk in Compute Engine einrichten

In diesem Abschnitt verwenden Sie die Terraform-Skripts aus dem anthos-samples-Repository. Die Skripts konfigurieren Compute Engine mit den folgenden Ressourcen:

  • Sechs VMs für das Deployment des Hybridclusters:
    • Eine Administrator-VM für das Deployment des Hybridclusters auf den anderen Maschinen.
    • Drei VMs für die drei Knoten der Steuerungsebene, die zum Ausführen der Steuerungsebene des Hybridclusters erforderlich sind.
    • Zwei VMs für die beiden Worker-Knoten, die zum Ausführen von Arbeitslasten im Hybridcluster erforderlich sind.
  • Ein VxLAN-Overlay-Netzwerk zwischen allen Knoten, um die L2-Konnektivität zu emulieren.
  • SSH-Zugriff auf die Knoten control-plane und worker über die Administrator-VM.

Bare-Metal-Infrastruktur in Google Cloud mit Compute Engine-VMs

Sie können die Anzahl der Knoten im Cluster ändern. Dazu fügen Sie der Terraform-Variablen instance_count neue Knotennamen hinzu:

###################################################################################
# The recommended instance count for High Availability (HA) is 3 for Control plane
# and 2 for Worker nodes.
###################################################################################
variable "instance_count" {
  description = "Number of instances to provision per layer (Control plane and Worker nodes) of the cluster"
  type        = map(any)
  default = {
    "controlplane" : 3
    "worker" : 2
  }
}

  1. Laden Sie die Terraform-Skripts für das Beispiel anthos-bm-gcp-terraform herunter:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-terraform
    
  2. Aktualisieren Sie die Datei terraform.tfvars.sample so, dass sie die für Ihre Umgebung spezifischen Variablen enthält:

    project_id       = "PROJECT_ID"
    region           = "GOOGLE_CLOUD_REGION"
    zone             = "GOOGLE_CLOUD_ZONE"
    credentials_file = "PATH_TO_GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY_FILE"
    
  3. Benennen Sie die Datei terraform.tfvars.sample in den Standardnamen um, der von Terraform für die Variablendatei verwendet wird:

    mv terraform.tfvars.sample terraform.tfvars
    
  4. Initialisieren Sie das Beispielverzeichnis als Terraform-Arbeitsverzeichnis. Dadurch werden die erforderlichen Konfigurationen der Terraform-Statusverwaltung eingerichtet, ähnlich wie bei git init:

    terraform init
    
  5. Erstellen Sie einen Terraform-Ausführungsplan. In diesem Schritt werden der Status der Ressourcen verglichen, die Skripts geprüft und ein Ausführungsplan erstellt:

    terraform plan
    
  6. Wenden Sie die im Terraform-Skript beschriebenen Änderungen an. Mit diesem Schritt wird der Plan für den angegebenen Anbieter (in diesem Fall Google Cloud) ausgeführt, um den gewünschten Status der Ressourcen herzustellen:

    terraform apply  # when prompted to confirm the Terraform plan, type 'Yes' and enter
    

Hybridcluster bereitstellen

Wenn die Terraform-Ausführung abgeschlossen ist, können Sie den Hybridcluster bereitstellen.

  1. Stellen Sie eine SSH-Verbindung zum Administratorhost her:

    gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
    
  2. Führen Sie den folgenden Codeblock aus, um den Hybridcluster cluster1 auf den konfigurierten Compute Engine-VMs zu erstellen:

    sudo ./run_initialization_checks.sh && \
    sudo bmctl create config -c cluster1 && \
    sudo cp ~/cluster1.yaml bmctl-workspace/cluster1 && \
    sudo bmctl create cluster -c cluster1
    

Mit dem Befehl bmctl wird ein neuer Hybridcluster eingerichtet. Dazu gehören Preflight-Prüfungen auf den Knoten, das Erstellen der Administrator- und Nutzercluster und die Registrierung des Clusters bei Google Cloud mit Connect. Die Einrichtung kann bis zu 15 Minuten dauern. Wenn der Cluster erstellt wird, wird die folgende Ausgabe angezeigt:

    Created config: bmctl-workspace/cluster1/cluster1.yaml
    Creating bootstrap cluster... OK
    Installing dependency components... OK
    Waiting for preflight check job to finish... OK
    - Validation Category: machines and network
            - [PASSED] 10.200.0.3
            - [PASSED] 10.200.0.4
            - [PASSED] 10.200.0.5
            - [PASSED] 10.200.0.6
            - [PASSED] 10.200.0.7
            - [PASSED] gcp
            - [PASSED] node-network
    Flushing logs... OK
    Applying resources for new cluster
    Waiting for cluster to become ready OK
    Writing kubeconfig file
    kubeconfig of created cluster is at bmctl-workspace/cluster1/cluster1-kubeconfig, please run
    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig get nodes
    to get cluster node status.
    Please restrict access to this file as it contains authentication credentials of your cluster.
    Waiting for node pools to become ready OK
    Moving admin cluster resources to the created admin cluster
    Flushing logs... OK
    Deleting bootstrap cluster... OK

Cluster prüfen und damit interagieren

Sie finden die Datei kubeconfig des Clusters auf der Administratormaschine im Verzeichnis bmctl-workspace. Führen Sie die folgenden Schritte aus, um Ihr Deployment zu überprüfen.

  1. Wenn Sie die Verbindung zum Administratorhost getrennt haben, stellen Sie eine SSH-Verbindung zum Host her:

    # You can copy the command from the output of the Terraform execution above
    gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
    
  2. Legen Sie die Umgebungsvariable KUBECONFIG auf den Pfad zur Konfigurationsdatei des Clusters fest, um kubectl-Befehle im Cluster auszuführen:

    export CLUSTER_ID=cluster1
    export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig
    kubectl get nodes
    

    Es sollten die Knoten des ausgegebenen Clusters angezeigt werden, etwa wie in der folgenden Ausgabe:

    NAME          STATUS   ROLES    AGE   VERSION
    cluster1-abm-cp1-001   Ready    master   17m   v1.18.6-gke.6600
    cluster1-abm-cp2-001   Ready    master   16m   v1.18.6-gke.6600
    cluster1-abm-cp3-001   Ready    master   16m   v1.18.6-gke.6600
    cluster1-abm-w1-001    Ready    <none>   14m   v1.18.6-gke.6600
    cluster1-abm-w2-001    Ready    <none>   14m   v1.18.6-gke.6600
    

Über die Google Cloud Console beim Cluster anmelden

Damit Sie Ihre Arbeitslasten in der Google Cloud Console beobachten können, müssen Sie sich beim Cluster anmelden.

Eine Anleitung und weitere Informationen zum Anmelden bei Ihrem Cluster finden Sie unter Über die Google Cloud Console bei einem Cluster anmelden.

Bereinigen

Sie haben zwei Möglichkeiten, die Clustereinrichtung zu bereinigen.

Console

Terraform

  • Heben Sie die Registrierung des Clusters auf, bevor Sie alle von Terraform erstellten Ressourcen löschen.
# Use SSH to connect to the admin host
gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE

# Reset the cluster
export CLUSTER_ID=cluster1
export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig
sudo bmctl reset --cluster $CLUSTER_ID

# log out of the admin host
exit
  • Löschen Sie mit Terraform alle Ressourcen.
terraform destroy --auto-approve