Administratorcluster erstellen

In GKE on Bare Metal richten Sie Administratorcluster ein, um andere Cluster sicher zu verwalten. Sie können Nutzercluster erstellen, aktualisieren, upgraden oder aus Administratorclustern löschen. Die Nutzercluster führen Arbeitslasten getrennt von der Verwaltung aus, um vertrauliche Informationen zu schützen.

Administratorcluster, die Multi-Cluster-Arbeitslasten verwalten, können Hochverfügbarkeit gewährleisten. Wenn in einem Cluster mit Hochverfügbarkeit ein Knoten der Steuerungsebene ausfällt, funktionieren die anderen Knoten weiterhin.

Ein Administratorcluster in einer Multi-Cluster-Umgebung bietet die beste grundlegende Sicherheit. Da der Zugriff auf Verwaltungsdaten von Arbeitslasten getrennt ist, haben Personen, die auf Nutzerarbeitslasten zugreifen, keinen Zugriff auf sensible Verwaltungsdaten wie SSH-Schlüssel und Dienstkontodaten. Daher gibt es einen gewissen Kompromiss zwischen der Sicherheit und den erforderlichen Ressourcen, da Sie bei einem separaten Administratorcluster dedizierte Ressourcen für die Verwaltung und Arbeitslasten benötigen.

Sie erstellen einen Administratorcluster mit dem Befehl bmctl. Nachdem Sie einen Administratorcluster erstellt haben, erstellen Sie Nutzercluster, um Arbeitslasten auszuführen.

Voraussetzungen:

  • Die neueste bmctl wird aus Cloud Storage heruntergeladen (gs://anthos-baremetal-release/bmctl/1.28.300-gke.131/linux-amd64/bmctl).
  • Die Workstation, auf der bmctl ausgeführt wird, hat eine Netzwerkverbindung zu allen Knoten in den Ziel-Nutzerclustern.
  • Die Workstation, auf der bmctl ausgeführt wird, hat eine Netzwerkverbindung zum Cluster API-Server (VIP der Steuerungsebene).
  • Der SSH-Schlüssel zum Erstellen des Administratorclusters ist entweder für root oder für einen Nicht-Root-Nutzer mit passwortlosen sudo-Berechtigungen auf allen Knoten im Zieladministratorcluster verfügbar.
  • Das Connect-Register-Dienstkonto ist für die Verwendung mit Connect konfiguriert.

Eine erweiterte Schritt-für-Schritt-Anleitung zum Erstellen eines Hybrid-Clusters finden Sie in der quickstart zu GKE on Bare Metal. Das Erstellen eines Administratorclusters ist mit dem Erstellen eines Hybridclusters vergleichbar, mit dem Unterschied, dass Sie keine Arbeitslasten auf dem Administratorcluster ausführen.

SELinux aktivieren

Wenn Sie SELinux zum Schutz Ihrer Container aktivieren möchten, müssen Sie darauf achten, dass SELinux auf allen Hostcomputern im Enforced-Modus aktiviert ist. Ab GKE on Bare Metal-Version 1.9.0 können Sie SELinux vor oder nach der Clustererstellung oder Clusterupgrades aktivieren oder deaktivieren. SELinux ist unter Red Hat Enterprise Linux (RHEL) standardmäßig aktiviert. Wenn SELinux auf Ihren Hostcomputern deaktiviert ist oder Sie sich nicht sicher sind, finden Sie unter Container mit SELinux sichern Informationen zur Aktivierung.

GKE on Bare Metal unterstützt SELinux nur in RHEL-Systemen.

Bei der gcloud CLI anmelden und Konfigurationsdatei für Administratorcluster erstellen

  1. Legen Sie mit dem folgenden Befehl die Standardanmeldedaten fest, die GKE on Bare Metal zum Erstellen des Clusters verwenden kann:

    gcloud auth application-default login
    
  2. Wenn Sie die automatischen Features für die API-Aktivierung und Dienstkontoerstellungs auf dieser Seite verwenden möchten, weisen Sie diesem Hauptkonto die Rolle "Projektinhaber" zu. Wenn das Hauptkonto die Rolle "Projektinhaber" nicht haben kann, führen Sie den nächsten Schritt aus.

  3. Damit der Cluster erfolgreich erstellt werden kann, ohne die Rolle "Projektinhaber" zuzuweisen, fügen Sie dem Hauptkonto die folgenden IAM-Rollen hinzu:

    • Dienstkontoadministrator
    • Zentraler Dienstkontoadministrator
    • Projekt-IAM-Administrator
    • Compute-Betrachter
    • Service Usage-Administrator

    Wenn das Hauptkonto ein Dienstkonto mit diesen Rollen ist, können Sie Folgendes ausführen:

    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    

    Ersetzen Sie JSON_KEY_FILE durch den Pfad zur JSON-Schlüsseldatei Ihres Dienstkontos.

  4. Rufen Sie die ID Ihres Google Cloud-Projekts ab und speichern Sie sie in einer Umgebungsvariablen, um sie für die Clustererstellung zu verwenden:

    export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

Administratorclusterkonfiguration mit bmctl erstellen

Nachdem Sie sich bei der gcloud CLI angemeldet und Ihr Projekt eingerichtet haben, können Sie die Clusterkonfigurationsdatei mit dem Befehl bmctl erstellen.

Im folgenden Beispiel werden alle Dienstkonten automatisch mit dem Befehl bmctl create config erstellt:

bmctl create config -c ADMIN_CLUSTER_NAME --enable-apis \
    --create-service-accounts --project-id=CLOUD_PROJECT_ID

Ersetzen Sie Folgendes:

  • ADMIN_CLUSTER_NAME: durch den Namen des neuen Clusters.
  • CLOUD_PROJECT_ID: Ihre Google Cloud-Projekt-ID oder die Umgebungsvariable $CLOUD_PROJECT_ID.

Im folgenden Beispiel wird eine Konfigurationsdatei für einen Administratorcluster namens admin1 erstellt, der mit der Projekt-ID my-gcp-project verknüpft ist:

bmctl create config -c admin1 --create-service-accounts --enable-apis --project-id=my-gcp-project

Die Datei wird in bmctl-workspace/admin1/admin1.yaml geschrieben.

Als Alternative zur automatischen Aktivierung von APIs und zum Erstellen von Dienstkonten können Sie Ihren vorhandenen Dienstkonten die entsprechenden IAM-Berechtigungen zuweisen. Sie können die automatische Erstellung des Dienstkontos im vorherigen Beispiel im Befehl bmctl überspringen:

bmctl create config -c admin1 --project-id=my-gcp-project

Clusterkonfigurationsdatei bearbeiten

Nachdem Sie nun eine Clusterkonfigurationsdatei haben, bearbeiten Sie sie, um die folgenden Änderungen vorzunehmen:

  1. Geben Sie den privaten SSH-Schlüssel an, um auf die Administrator-Clusterknoten zugreifen zu können:

    # bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes
    # resource, this section can only be included when using bmctl to
    # create the initial admin/admin cluster. Afterwards, when creating user clusters by directly
    # applying the cluster and node pool resources to the existing cluster, you must remove this
    # section.
    gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
    sshPrivateKeyPath: /path/to/your/ssh_private_key
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
    
  2. Cluster bei einer Flotte registrieren Die Projekt-ID, die Sie im Befehl bmctl create config angegeben haben, wird automatisch in das Feld gkeConnect.projectID in der Clusterkonfigurationsdatei eingefügt. Dieses Projekt wird als Flotten-Hostprojekt bezeichnet.

    • Wenn Sie die Konfigurationsdatei mit den Features zur automatischen API-Aktivierung und zum Erstellen von Dienstkonten erstellt haben, können Sie diesen Schritt überspringen.

    • Wenn Sie die Konfigurationsdatei ohne die Funktionen zur automatischen API-Aktivierung und zum Erstellen von Dienstkonten erstellt haben, verweisen Sie auf die heruntergeladenen JSON-Schlüssel des Dienstkontos in den entsprechenden Feldern gkeConnectAgentServiceAccountKeyPath und gkeConnectRegisterServiceAccountKeyPath der Clusterkonfigurationsdatei.

    • Optional können Sie der Clusterspezifikation gkeConnect.location hinzufügen, um die Google Cloud-Region anzugeben, in der die Flotte und die Connect-Dienste ausgeführt werden. Diese regionale Mitgliedschaft beschränkt den Traffic des Flottendienstes auf Ihre Region. Wenn Sie gkeConnect.location in die Clusterspezifikation aufnehmen, muss die von Ihnen angegebene Region mit der in clusterOperations.location konfigurierten Region übereinstimmen. Wenn die Regionen nicht identisch sind, schlägt die Clustererstellung fehl.

  3. Prüfen Sie, ob in der Konfiguration der Clustertyp admin (Standardwert) angegeben ist:

    spec:
      # Cluster type. This can be:
      #   1) admin:  to create an admin cluster. This can later be used to create user clusters.
      #   2) user:   to create a user cluster. Requires an existing admin cluster.
      #   3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads.
      #   4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters.
      type: admin
    
  4. Wenn die GKE On-Prem API in Ihrem Google Cloud-Projekt aktiviert ist, werden alle Cluster im Projekt automatisch in der in clusterOperations.location konfigurierten Region in der GKE On-Prem API registriert.

    • Wenn Sie alle Cluster im Projekt in der GKE On-Prem API registrieren möchten, führen Sie die Schritte unter Vorbereitung aus, um die GKE On-Prem API im Projekt zu aktivieren und zu verwenden.

    • Wenn Sie den Cluster nicht in der GKE On-Prem API registrieren möchten, fügen Sie diesen Abschnitt ein und legen Sie gkeOnPremAPI.enabled auf false fest. Wenn Sie keine Cluster im Projekt registrieren möchten, deaktivieren Sie gkeonprem.googleapis.com (den Dienstnamen für die GKE On-Prem API) im Projekt. Eine Anleitung dazu finden Sie unter Dienste deaktivieren.

  5. Ändern Sie die Konfigurationsdatei, um eine Steuerungsebene mit mehreren Knoten und Hochverfügbarkeit anzugeben. Geben Sie eine ungerade Anzahl von Knoten ein, die für ein Großteil des Quorums über HA geeignet sein sollen:

      # Control plane configuration
      controlPlane:
        nodePoolSpec:
          nodes:
          # Control plane node pools. Typically, this is either a single machine
          # or 3 machines if using a high availability deployment.
          - address: 10.200.0.4
          - address: 10.200.0.5
          - address: 10.200.0.6
    
  6. Geben Sie die Pod-Dichte der Clusterknoten an:

    ....
    # NodeConfig specifies the configuration that applies to all nodes in the cluster.
    nodeConfig:
      # podDensity specifies the pod density configuration.
      podDensity:
        # maxPodsPerNode specifies at most how many pods can be run on a single node.
        maxPodsPerNode: 250
    ....
    

    Zulässige Werte für AdministratorclustermaxPodsPerNode sind32-250 für HA-Cluster und64-250 für Nicht-HA-Cluster. Der Standardwert, wenn nichts angegeben ist, lautet 110. Sobald der Cluster erstellt ist, kann dieser Wert nicht mehr aktualisiert werden.

    Die Pod-Dichte wird auch durch die verfügbaren IP-Ressourcen des Clusters begrenzt. Weitere Informationen finden Sie unter Pod-Netzwerk.

Administratorcluster mit Clusterkonfiguration erstellen

Verwenden Sie den Befehl bmctl, um den Cluster bereitzustellen:

bmctl create cluster -c ADMIN_CLUSTER_NAME

ADMIN_CLUSTER_NAME gibt den im vorherigen Abschnitt erstellten Clusternamen an.

Im Folgenden sehen Sie ein Beispiel für den Befehl zum Erstellen eines Clusters mit dem Namen admin1:

bmctl create cluster -c admin1

Beispiele für Konfigurationen von Administratorclustern

Beispiele für die Konfigurationen von Administratorclustern finden Sie unter Administratorcluster in den Beispielen für Clusterkonfigurationen.