Einfache Cluster erstellen

Dies ist der zweite Teil einer Anleitung, die Sie durch eine kleine Proof-of-Concept-Installation von GKE on VMware führt. Der erste Teil ist Minimale Infrastruktur einrichten. Sie erfahren, wie Sie Ihre IP-Adressen planen und die erforderliche vSphere- und Google Cloud-Infrastruktur für Ihre Bereitstellung einrichten. Dieses Dokument baut auf der Einrichtung und Planung aus dem vorherigen Abschnitt auf und zeigt Ihnen, wie Sie eine Administratorworkstation, einen Administratorcluster und einen Nutzercluster in Ihrer vSphere-Umgebung mit einfachen Vorlagen erstellen, die Sie hier in diesem Dokument ausfüllen können. Anschließend können Sie mit der Bereitstellung einer Anwendung fortfahren.

Wie bei der Infrastruktureinrichtung dieser einfachen Installation sind die Cluster, die Sie mit diesem Dokument einrichten, möglicherweise nicht für Ihre tatsächlichen Produktionsanforderungen und Anwendungsfälle geeignet. Viele weitere Informationen, Best Practices und Anleitungen für Produktionsinstallationen finden Sie in den Installationsanleitungen.

Hinweise

  1. Prüfen Sie, ob Ihre vSphere- und Google Cloud-Umgebungen wie unter Minimale Infrastruktur einrichten beschrieben eingerichtet sind.

  2. Wenn Sie den Nutzercluster mit Terraform erstellen möchten, benötigen Sie Terraform entweder auf Ihrer Administratorworkstation oder auf einem anderen Computer.

Verfahrensübersicht

Dies sind die wichtigsten Schritte für diese Einrichtung:

  1. Melden Sie sich bei der Google Cloud CLI mit einem Konto an, das die erforderlichen Berechtigungen zum Erstellen von Dienstkonten hat.

  2. Erfassen Sie Informationen, die Sie zum Konfigurieren von GKE on VMware benötigen, einschließlich Ihres vCenter-Nutzernamens und -Passworts sowie der IP-Adressen, die Sie im vorherigen Abschnitt vorbereitet haben.

  3. Erstellen Sie eine Administratorworkstation mit den Ressourcen und Tools, die Sie zum Erstellen von Administrator- und Nutzerclustern benötigen, einschließlich der zusätzlichen Dienstkonten, die Sie zum Abschließen der Einrichtung benötigen.

  4. Erstellen Sie einen Administratorcluster, um Ihren Nutzercluster zu verwalten und zu aktualisieren.

  5. Erstellen Sie einen Nutzercluster zum Ausführen Ihrer Arbeitslasten.

1. Bei der Google Cloud CLI anmelden

Für das Einrichten von GKE on VMware sind mehrere Dienstkonten mit unterschiedlichen Berechtigungen erforderlich. Sie müssen zwar das Dienstkonto für den Komponentenzugriff manuell erstellen, aber die verbleibenden Konten können beim Erstellen der Administratorworkstation mit dem gkeadm-Befehlszeilentool erstellt und konfiguriert werden. Dazu müssen Sie in der Google Cloud CLI mit einem Konto angemeldet sein, das die erforderlichen Berechtigungen zum Erstellen und Konfigurieren von Dienstkonten hat, da gkeadm bei dieser Einrichtung Ihr aktuelles account-Attribut der gcloud CLI verwendet.

  1. Melden Sie sich in der gcloud CLI an. Sie können ein beliebiges Google-Konto verwenden. Es muss jedoch die erforderlichen Berechtigungen haben. Wenn Sie den vorherigen Teil dieser Anleitung ausgeführt haben, haben Sie sich wahrscheinlich bereits mit einem entsprechenden Konto angemeldet, um Ihr Dienstkonto für den Komponentenzugriff zu erstellen.

    gcloud auth login
    
  2. Prüfen Sie, ob das Attribut account der gcloud CLI korrekt festgelegt ist:

    gcloud config list
    

    Die Ausgabe enthält die Werte des SDK-Attributs account. Beispiel:

    [core]
    account = my-name@google.com
    disable_usage_reporting = False
    Your active configuration is: [default]
    
  3. Prüfen Sie, ob die neuesten Komponenten der gcloud CLI installiert sind:

    gcloud components update
    

    Je nachdem, wie Sie die gcloud CLI installiert haben, 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. Mit dem folgenden Befehl können Sie das gleiche Ergebnis bei dieser Installation erzielen:" Folgen Sie der Anleitung zum Kopieren und Einfügen des Befehls zum Aktualisieren der Komponenten.

2. Informationen einholen

Verwenden Sie die Informationen, die Sie unter Minimale Infrastruktur einrichten vorbereitet haben, um die Platzhalter in der folgenden Tabelle zu bearbeiten:

vSphere-Details
Der Nutzername Ihres vCenter-Kontos USERNAME
Das Passwort Ihres vCenter-Kontos PASSWORD
Ihre vCenter Server-Adresse ADDRESS
Der Pfad zum Root-CA-Zertifikat für Ihren vCenter Server auf dem Computer, mit dem Sie die Administratorworkstation erstellen möchten CA_CERT_PATH
Der Name Ihres vSphere-Rechenzentrums DATA_CENTER
Der Name Ihres vSphere-Clusters VSPHERE_CLUSTER
Der Name oder Pfad Ihres vSphere-Ressourcenpools. Weitere Informationen finden Sie unter vcenter.resourcePool. RESOURCE_POOL
Der Name Ihres vSphere-Datenspeichers DATASTORE
Den Namen Ihres vSphere-Netzwerks NETWORK
IP-Adressen
Eine IP-Adresse für Ihre Administratorworkstation ADMIN_WS_IP
Vier IP-Adressen für die Knoten Ihres Administratorclusters. Dazu gehört auch eine Adresse für einen zusätzlichen Knoten, der während des Upgrades und Updates verwendet werden kann. ADMIN_CONTROL_PLANE_NODE_IP_1
ADMIN_CONTROL_PLANE_NODE_IP_2
ADMIN_CONTROL_PLANE_NODE_IP_3
Eine IP-Adresse für den Knoten der Steuerungsebene im Nutzercluster. USER_CONTROL_PLANE_NODE_IP
Vier IP-Adressen für Ihre Nutzerclusterknoten. Dazu gehört auch eine Adresse für einen zusätzlichen Knoten, der während des Upgrades und Updates verwendet werden kann. USER_NODE_IP_1
USER_NODE_IP_2
USER_NODE_IP_3
USER_NODE_IP_4
Eine virtuelle IP-Adresse (VIP) für den Kubernetes API-Server des Administratorclusters ADMIN_CONTROL_PLANE_VIP
Eine virtuelle IP-Adresse für den Kubernetes API-Server des Nutzerclusters USER_CONTROL_PLANE_VIP
Eine virtuelle IP-Adresse für eingehenden Traffic für den Nutzercluster USER_INGRESS_VIP
Zwei VIPs für Dienste vom Typ LoadBalancer in Ihrem Nutzercluster. SERVICE_VIP_1
SERVICE_VIP_2
Die IP-Adresse eines DNS-Servers, der über Ihre Administratorworkstation und Clusterknoten erreichbar ist DNS_SERVER_IP
Die IP-Adresse eines NTP-Servers, der über Ihre Administratorworkstation und Clusterknoten erreichbar ist NTP_SERVER_IP
Die IP-Adresse des Standardgateways für das Subnetz mit Ihrer Administratorworkstation und Ihren Clusterknoten DEFAULT_GATEWAY_IP
Die Netzmaske für das Subnetz mit Ihrer Administratorworkstation und Ihren Clusterknoten
Beispiel: 255.255.255.0
NETMASK
Wenn sich Ihr Netzwerk hinter einem Proxyserver befindet, ist dies die URL des Proxyservers. Weitere Informationen finden Sie unter Proxy. Füllen Sie diese bei Bedarf manuell in die Konfigurationsdatei der Administratorworkstation ein. PROXY_URL
CIDR-Bereiche für Dienste und Pods
Der Administratorcluster und der Nutzercluster benötigen jeweils einen CIDR-Bereich für Dienste und einen CIDR-Bereich für Pods. Verwenden Sie die folgenden vorab ausgefüllten Werte, sofern Sie sie nicht ändern müssen, um eine Überschneidung mit anderen Elementen in Ihrem Netzwerk zu vermeiden:
Ein CIDR-Bereich für Dienste im Administratorcluster 10.96.232.0/24
Ein CIDR-Bereich für Pods im Administratorcluster 192.168.0.0/16
Ein CIDR-Bereich für Dienste im Nutzercluster 10.96.0.0/20
Ein CIDR-Bereich für Pods im Nutzercluster 192.168.0.0/16
Google Cloud-Details
Die ID des ausgewählten Cloud-Projekts PROJECT_ID
Der Pfad zur JSON-Schlüsseldatei für das Dienstkonto für den Komponentenzugriff, das Sie im vorherigen Abschnitt eingerichtet haben, auf dem Computer, mit dem Sie Ihre Administratorworkstation erstellen. COMPONENT_ACCESS_SA_KEY_PATH
Die E-Mail-Adresse, die mit Ihrem Google Cloud-Konto verknüpft ist. Beispiel: alex@example.com. GOOGLE_ACCOUNT_EMAIL

3. Administrator-Workstation erstellen

Bevor Sie Cluster erstellen können, müssen Sie eine Administratorworkstation erstellen und dann über SSH eine Verbindung zu ihr herstellen. Die Administratorworkstation ist eine eigenständige VM mit den Tools und Ressourcen, die Sie zum Erstellen von GKE Enterprise-Clustern in Ihrer vSphere-Umgebung benötigen. Sie verwenden das gkeadm-Befehlszeilentool, um die Administratorworkstation zu erstellen.

gkeadm herunterladen

Laden Sie gkeadm in Ihr aktuelles Verzeichnis herunter:

gsutil cp gs://gke-on-prem-release/gkeadm/1.28.300-gke.123/linux/gkeadm ./
chmod +x gkeadm

Sie benötigen die Version gkeadm (die auch die Version von GKE on VMware ist), um Ihre Administrator- und Nutzercluster-Konfigurationsdateien zu erstellen. Führen Sie folgenden Befehl aus, um die Version von gkeadm zu prüfen:

./gkeadm version

Die folgende Beispielausgabe zeigt die Version.

gkeadm 1.28.400 (1.28.300-gke.123)

Sie können zwar eine andere Version von gkeadm herunterladen. In dieser Anleitung wird jedoch davon ausgegangen, dass Sie 1.28.300-gke.123 installieren. Daher wird diese Version in allen Konfigurationsdateien und Befehlen verwendet.

Datei mit Anmeldedaten erstellen

Erstellen und speichern Sie eine Datei mit dem Namen credential.yaml in Ihrem aktuellen Verzeichnis mit dem folgenden Inhalt:

apiVersion: v1
kind: CredentialFile
items:
- name: vCenter
  username: "USERNAME"
  password: "PASSWORD"

Konfigurationsdatei für Administratorworkstation erstellen

Erstellen und speichern Sie eine Datei mit dem Namen admin-ws-config.yaml und dem folgenden Inhalt noch einmal in Ihrem aktuellen Verzeichnis:

gcp:
  componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_PATH"
vCenter:
  credentials:
    address: "ADDRESS"
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  datacenter: "DATA_CENTER"
  datastore: "DATASTORE"
  cluster: "VSPHERE_CLUSTER"
  network: "NETWORK"
  resourcePool: "RESOURCE_POOL"
  caCertPath: "CA_CERT_PATH"
proxyUrl: ""
adminWorkstation:
  name: "minimal-installation-admin-workstation"
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: gke-on-prem-admin-workstation-data-disk/minimal-installation-data-disk.vmdk
  dataDiskMB: 512
  network:
    ipAllocationMode: "static"
    hostConfig:
      ip: "ADMIN_WS_IP"
      gateway: "DEFAULT_GATEWAY_IP"
      netmask: "NETMASK"
      dns:
      - "DNS_SERVER_IP"
  proxyUrl: ""
  ntpServer: ntp.ubuntu.com

Admin-Workstation erstellen

Erstellen Sie Ihre Administratorworkstation mit dem folgenden Befehl:

./gkeadm create admin-workstation --auto-create-service-accounts

Durch Ausführen des folgenden Befehls:

  • Administratorworkstation erstellt
  • Erstellt automatisch alle zusätzlichen Dienstkonten, die Sie für die Installation benötigen
  • Erstellt Vorlagenkonfigurationsdateien für Ihre Administrator- und Nutzercluster

Die Ausgabe enthält detaillierte Informationen zur Erstellung Ihrer Administrator-Workstation und einen Befehl, mit dem Sie eine SSH-Verbindung zu Ihrer Administrator-Workstation abrufen können:

...
Admin workstation is ready to use.
Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
This file is required for future upgrades
SSH into the admin workstation with the following command:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49
********************************************************************

Weitere Informationen zum Erstellen einer Administrator-Workstation finden Sie unter Administrator-Workstation erstellen.

Verbindung zu Ihrer Administrator-Workstation herstellen

Verwenden Sie den in der vorherigen Ausgabe angezeigten Befehl, um eine SSH-Verbindung zu Ihrer Administrator-Workstation herzustellen. Beispiel:

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49

Wenn Sie diesen Befehl noch einmal suchen, generiert gkeadm eine Datei namens gke-admin-ws-... in dem Verzeichnis auf dem lokalen Computer, auf dem Sie gkeadm create admin-workstation ausgeführt haben. Enthält Details zu Ihrer Administrator-Workstation, einschließlich des SSH-Befehls.

Geben Sie auf der Administrator-Workstation exit ein, um die SSH-Verbindung zu beenden und zu Ihrem lokalen Computer zurückzukehren.

Audit-Logging-Schlüssel auf Ihre Administratorworkstation kopieren

Im vorherigen Abschnitt haben Sie eine JSON-Schlüsseldatei für Ihr Audit-Logging-Dienstkonto erstellt.

Kopieren Sie die JSON-Schlüsseldatei in das Basisverzeichnis auf Ihrer Administratorworkstation. Beispiel für einen Speicherort auf Ihrem lokalen Computer:

scp -i /usr/local/google/home/me/.ssh/gke-admin-workstation audit-logging-key.json ubuntu@172.16.20.49:~

Dateien auf der Administratorworkstation ansehen

Stellen Sie wieder eine SSH-Verbindung zu Ihrer Administratorworkstation her.

Listen Sie auf Ihrer Administrator-Workstation die Dateien im Basisverzeichnis auf:

ls -1

Die Ausgabe sollte Folgendes enthalten:

  • admin-cluster.yaml, eine Vorlagenkonfigurationsdatei zum Erstellen Ihres Administratorclusters.
  • user-cluster.yaml, eine Vorlagenkonfigurationsdatei zum Erstellen Ihres Nutzerclusters.
  • Die vCenter-Zertifikatsdatei, die Sie in der Konfiguration der Administratorworkstation angegeben haben
  • Die Datei credential.yaml, die Sie in der Konfiguration Ihrer Administratorworkstation angegeben haben.
  • Die JSON-Schlüsseldatei für Ihr Audit-Logging-Dienstkonto.
  • JSON-Schlüsseldateien für zwei Dienstkonten, die gkeadm für Sie erstellt hat: ein Connect-Register-Dienstkonto, ein Logging-Monitoring-Dienstkonto sowie die Schlüsseldatei für das Dienstkonto für den Komponentenzugriff, das Sie zuvor erstellt haben.

Beispiel:

admin-cluster.yaml
admin-ws-config.yaml
audit-logging-key.json
sa-key.json
connect-register-sa-2203040617.json
credential.yaml
log-mon-sa-2203040617.json
logs
vc01-cert.pem
user-cluster.yaml

Einige dieser Dateinamen müssen in den Konfigurationsdateien angegeben werden, um Cluster zu erstellen. Verwenden Sie die Dateinamen als Werte für die Platzhalter in der folgenden Tabelle:

Name der Schlüsseldatei des Connect-Registers des Dienstkontos
Beispiel: connect-register-sa-2203040617.json
CONNECT_REGISTER_SA_KEY
Name der Schlüsseldatei des Dienstkontos für Logging-Monitoring
Beispiel: log-mon-sa-2203040617.json
LOG_MON_SA_KEY
Name der Schlüsseldatei des Audit-Logging-Dienstkontos
Beispiel: audit-logging-key.json
AUDIT_LOG_SA_KEY
Name der Schlüsseldatei des Dienstkontos für den Komponentenzugriff
Beispiel: sa-key.json
COMPONENT_ACCESS_SA_KEY
Name der vCenter-Zertifikatsdatei
Beispiel: vc01-cert.pem
CA_CERT_FILE

4. Administratorcluster erstellen

Nachdem Sie nun eine Administratorworkstation mit Ihrem vCenter und anderen Details konfiguriert haben, können Sie damit einen Administratorcluster in Ihrer vSphere-Umgebung erstellen. Sorgen Sie dafür, dass eine SSH-Verbindung zu Ihrer Administratorworkstation vorhanden ist, wie zuvor beschrieben, bevor Sie diesen Schritt ausführen. Die folgenden Befehle werden auf der Administratorworkstation ausgeführt.

Konfigurationsdatei für Administratorcluster erstellen

Öffnen Sie admin-cluster.yaml und ersetzen Sie den Inhalt durch Folgendes:

apiVersion: v1
kind: AdminCluster
name: "minimal-installation-admin-cluster"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.28.300-gke.123-full.tgz"
vCenter:
  address: "ADDRESS"
  datacenter: "DATA_CENTER"
  cluster: "VSPHERE_CLUSTER"
  resourcePool: "RESOURCE_POOL"
  datastore: "DATASTORE"
  caCertPath: "CA_CERT_FILE"
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "NETWORK"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_1"
      hostname: "admin-cp-vm-1"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_2"
      hostname: "admin-cp-vm-2"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_3"
      hostname: "admin-cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "ADMIN_CONTROL_PLANE_VIP"
  kind: "MetalLB"
adminMaster:
  cpus: 4
  memoryMB: 16384
  replicas: 3
antiAffinityGroups:
  enabled: false
componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY"
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  disableVsphereResourceMetrics: false
cloudAuditLogging:
  projectID: "PROJECT_ID"
  clusterLocation: us-central1
  serviceAccountKeyPath: "AUDIT_LOG_SA_KEY"

Konfigurationsdatei für den Administratorcluster validieren

Überprüfen Sie, ob die Konfigurationsdatei für den Administratorcluster gültig ist und zum Erstellen des Clusters verwendet werden kann:

gkectl check-config --config admin-cluster.yaml

Betriebssystem-Images in vSphere importieren

Führen Sie gkectl prepare mit der fertigen Konfigurationsdatei aus, um Knotenbetriebssystem-Images in vSphere zu importieren:

gkectl prepare --config admin-cluster.yaml --skip-validation-all

Durch Ausführen dieses Befehls werden die Images in vSphere importiert und als VM-Vorlagen markiert, einschließlich des Images für Ihren Administratorcluster.

Es kann einige Minuten dauern, bis dieser Befehl zurückgegeben wird.

Erstellen Sie den Administratorcluster.

Erstellen Sie den Administratorcluster:

gkectl create admin --config admin-cluster.yaml

Erstellen eines Administratorclusters nach einem Fehler fortsetzen

Wenn die Erstellung des Administratorclusters fehlschlägt oder abgebrochen wird, können Sie den Befehl create noch einmal ausführen:

gkectl create admin --config admin-cluster.yaml

Suchen Sie die kubeconfig-Datei des Administratorclusters

Mit dem Befehl gkectl create admin wird im aktuellen Verzeichnis die kubeconfig-Datei kubeconfig erstellt. Sie benötigen diese kubeconfig-Datei später, um mit Ihrem Administratorcluster zu interagieren.

Prüfen Sie, ob der Administratorcluster ausgeführt wird

Prüfen Sie, ob der Administratorcluster ausgeführt wird:

kubectl get nodes --kubeconfig kubeconfig

Die Ausgabe zeigt die Knoten des Administratorclusters. Beispiel:

gke-admin-master-hdn4z            Ready    control-plane,master ...
gke-admin-node-7f46cc8c47-g7w2c   Ready ...
gke-admin-node-7f46cc8c47-kwlrs   Ready ...

RBAC-Autorisierung aktivieren

Führen Sie den folgenden Befehl aus, um Ihrem Nutzerkonto die Kubernetes-Rolle clusterrole/cluster-admin für den Cluster zu gewähren:

gcloud container fleet memberships generate-gateway-rbac \
    --membership=minimal-installation-admin-cluster \
    --role=clusterrole/cluster-admin \
    --users=GOOGLE_ACCOUNT_EMAIL \
    --project=PROJECT_ID \
    --kubeconfig=kubeconfig \
    --context=minimal-installation-admin-cluster \
    --apply

Die Ausgabe dieses Befehls sieht in etwa so aus, ist jedoch aus Gründen der Lesbarkeit abgeschnitten:

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

Mit der RBAC-Richtlinie können Sie sich unter anderem mit Ihrer Google-Identität in der Google Cloud Console in Ihrem Cluster anmelden, um weitere Clusterdetails zu sehen.

Automatische Registrierung in der GKE On-Prem API

Da die GKE On-Prem API in Ihrem Projekt aktiviert ist, wird der Cluster automatisch bei der GKE On-Prem API registriert. Wenn Sie Ihren Administratorcluster in der GKE On-Prem API registrieren, können Sie Standardtools – die Google Cloud Console, die Google Cloud CLI oder Terraform – verwenden, um Nutzercluster zu erstellen, zu aktualisieren, zu aktualisieren und zu löschen, die vom Administratorcluster verwaltet werden. Wenn Sie den Cluster registrieren, können Sie auch gcloud-Befehle ausführen, um Informationen zu Ihrem Cluster abzurufen.

5. Nutzercluster erstellen

In diesem Abschnitt wird beschrieben, wie Sie den Nutzercluster mit der Console, gkectl, Terraform oder der gcloud CLI erstellen.

gkectl

Sorgen Sie dafür, dass eine SSH-Verbindung zu Ihrer Administratorworkstation vorhanden ist, wie zuvor beschrieben, bevor Sie mit diesem Verfahren beginnen. Alle folgenden Befehle werden auf der Administratorworkstation ausgeführt.

Nutzercluster-IP-Blockdatei erstellen

  1. Erstellen Sie eine Datei mit dem Namen user-ipblock.yaml.

  2. Kopieren Sie den folgenden Inhalt, fügen Sie ihn in user-ipblock.yaml ein und speichern Sie die Datei:

    blocks:
      - netmask: "NETMASK"
        gateway: "DEFAULT_GATEWAY_IP"
        ips:
        - ip: "USER_NODE_IP_1"
          hostname: "user-vm-1"
        - ip: "USER_NODE_IP_2"
          hostname: "user-vm-2"
        - ip: "USER_NODE_IP_3"
          hostname: "user-vm-3"
        - ip: "USER_NODE_IP_4"
          hostname: "user-vm-4"
    

Konfigurationsdatei für Nutzercluster erstellen

  1. Erstellen Sie eine Datei mit dem Namen user-cluster.yaml im selben Verzeichnis wie user-ipblock.yaml.

  2. Kopieren Sie den folgenden Inhalt, fügen Sie ihn in user-cluster.yaml ein und speichern Sie die Datei:

apiVersion: v1
kind: UserCluster
name: "minimal-installation-user-cluster"
gkeOnPremVersion: "1.28.300-gke.123"
enableControlplaneV2: true
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: "10.96.0.0/20"
  podCIDR: "192.168.0.0/16"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "USER_CONTROL_PLANE_NODE_IP"
      hostname: "cp-vm-1"
loadBalancer:
  vips:
    controlPlaneVIP: "USER_CONTROL_PLANE_VIP"
    ingressVIP: "USER_INGRESS_VIP"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "uc-address-pool"
      addresses:
      - "USER_INGRESS_VIP/32"
      - "SERVICE_VIP_1/32"
      - "SERVICE_VIP_2/32"
enableDataplaneV2: true
nodePools:
- name: "uc-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: false
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  disableVsphereResourceMetrics: false
autoRepair:
  enabled: true

Konfiguration validieren und Cluster erstellen

  1. Prüfen Sie, ob die Konfigurationsdatei des Nutzerclusters gültig ist und zum Erstellen des Clusters verwendet werden kann:

    gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
    
  2. Nutzercluster erstellen:

    gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml
    

    Die Erstellung eines Clusters dauert etwa 30 Minuten.

Suchen Sie die kubeconfig-Datei des Nutzerclusters.

Mit dem Befehl gkectl create cluster wird im aktuellen Verzeichnis die kubeconfig-Datei USER_CLUSTER_NAME-kubeconfig erstellt. Sie benötigen diese kubeconfig-Datei später, um mit Ihrem Nutzercluster zu interagieren.

Prüfen Sie, ob Ihr Nutzercluster ausgeführt wird

Prüfen Sie, ob Ihr Nutzercluster ausgeführt wird:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Ersetzen Sie USER_CLUSTER_KUBECONFIG durch den Pfad der kubeconfig-Datei des Nutzerclusters.

Die Ausgabe zeigt die Knoten des Nutzerclusters. Beispiel:

cp-vm-1     Ready    control-plane,master
user-vm-1   Ready
user-vm-2   Ready
user-vm-3   Ready

RBAC-Autorisierung aktivieren

Führen Sie den folgenden Befehl aus, um Ihrem Nutzerkonto die Kubernetes-Rolle clusterrole/cluster-admin für den Cluster zu gewähren:

gcloud container fleet memberships generate-gateway-rbac \
  --membership=minimal-installation-user-cluster \
  --role=clusterrole/cluster-admin \
  --users=GOOGLE_ACCOUNT_EMAIL \
  --project=PROJECT_ID \
  --kubeconfig=USER_CLUSTER_KUBECONFIG \
  --context=minimal-installation-user-cluster \
  --apply

Die Ausgabe dieses Befehls sieht in etwa so aus, ist jedoch aus Gründen der Lesbarkeit abgeschnitten:

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

Mit der RBAC-Richtlinie können Sie sich unter anderem mit Ihrer Google-Identität in der Google Cloud Console in Ihrem Cluster anmelden, um weitere Clusterdetails zu sehen.

Automatische Registrierung in der GKE On-Prem API

Da die GKE On-Prem API in Ihrem Projekt aktiviert ist, wird der Cluster automatisch bei der GKE On-Prem API registriert. So können Sie mit der Console oder der gcloud CLI Clusterdetails ansehen und den Clusterlebenszyklus verwalten. Beispielsweise können Sie gcloud-Befehle ausführen, um Informationen zu Ihrem Nutzercluster abzurufen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite GKE on VMware-Cluster erstellen auf.

    Zur Seite „GKE on VMware-Cluster erstellen“

  2. Wählen Sie das Google Cloud-Projekt aus, in dem Sie den Cluster erstellen möchten. Das ausgewählte Projekt wird auch als Flotten-Hostprojekt verwendet. Dies muss dasselbe Projekt sein, bei dem der Administratorcluster registriert ist. Nachdem der Nutzercluster erstellt wurde, wird er automatisch bei der Flotte des ausgewählten Projekts registriert.

In den folgenden Abschnitten werden Sie durch die Konfiguration des Nutzerclusters geführt.

Vorbereitung

  1. Machen Sie sich mit den Informationen auf der Seite Voraussetzungen vertraut.

  2. Klicken Sie unten auf der Seite auf Weiter.

Clustergrundlagen

  1. Geben Sie unter Name einen Namen für den Nutzercluster ein, z. B. minimal-installation-user-cluster.

  2. Wählen Sie für Administratorcluster die Option minimal-installation-admin-cluster aus.

  3. Wählen Sie für das Feld GCP API Location (GCP API-Standort) die Option us-central1 aus.

  4. Wählen Sie als Version 1.28.300-gke.123 aus.

  5. Sie müssen den Bereich Autorisierung oder vCenter-Konfiguration nicht öffnen.

  6. Klicken Sie auf Next (Weiter).

Steuerungsebene

  1. Geben Sie unter IP-Adressen von Knoten der Steuerungsebene für Gateway den Wert DEFAULT_GATEWAY_IP ein.

  2. Geben Sie unter Subnetzmaske den Wert NETMASK ein.

  3. Geben Sie unter IP-Adressen für IP-Adresse 1 den Wert USER_CONTROL_PLANE_NODE_IP ein. Lassen Sie Hostname 1 leer.

  4. Klicken Sie auf Next (Weiter).

Netzwerk

In diesem Abschnitt geben Sie die IP-Adressen für die Knoten, Pods und Services Ihres Clusters an. Ein Nutzercluster benötigt eine IP-Adresse für jeden Knoten und eine zusätzliche IP-Adresse für einen temporären Knoten, der während Clusterupgrades, -aktualisierungen und der automatischen Reparatur benötigt wird. Weitere Informationen finden Sie unter Wie viele IP-Adressen benötigt ein Nutzercluster?.

  1. Achten Sie darauf, dass unter IP-Adressen der Worker-Knoten für den IP-Modus die Option Statisch ausgewählt ist.

  2. Geben Sie für Gateway den Wert DEFAULT_GATEWAY_IP ein.

  3. Geben Sie unter Subnetzmaske den Wert NETMASK ein.

  4. Geben Sie unter IP-Adressen die folgenden Adressen ein:

  • USER_NODE_IP_1
  • USER_NODE_IP_2
  • USER_NODE_IP_3
  • USER_NODE_IP_4

Lassen Sie die Felder unter Hostname leer.

  1. Geben Sie für Dienst-CIDR den Wert 10.96.0.0/20 ein. Geben Sie für Pod-CIDR den Wert 192.168.0.0/16 ein.

  2. Geben Sie für DNS-Server 1 den Wert DNS_SERVER_IP ein.

  3. Geben Sie für NTP-Server 1 den Wert NTP_SERVER_IP ein.

  4. Lassen Sie DNS-Suchdomain leer.

  5. Klicken Sie auf Next (Weiter).

Load-Balancer

  1. Wählen Sie für Load-Balancer-Typ die Option Bundled with MetalLB aus.

  2. Verwenden Sie unter Adresspools den Standardnamen.

  3. Geben Sie unter IP-Adressen für IP-Adressbereich 1 den String USER_INGRESS_VIP/32 ein.

    Klicken Sie auf IP-Adressbereich hinzufügen. Geben Sie für IP-Adressbereich 1 den Wert SERVICE_VIP_1/32 ein.

    Klicken Sie auf IP-Adressbereich hinzufügen. Geben Sie für IP-Adressbereich 2 den Wert SERVICE_VIP_2/32 ein.

  4. Wählen Sie unter Zuweisung von IP-Adressen die Option Automatisch aus.

  5. Entfernen Sie das Häkchen neben Fehlerhafte IP-Adressen vermeiden.

  6. Geben Sie unter Virtuelle IP-Adressen für VIP der Steuerungsebene USER_CONTROL_PLANE_VIP ein. Das Feld Ingress VIP (VIP für eingehenden Traffic) ist bereits ausgefüllt.

  7. Klicken Sie auf Weiter.

Features

  1. Lassen Sie alle Standardeinstellungen unverändert.

  2. Klicken Sie auf Next (Weiter).

Knotenpools

  1. Lassen Sie alle Standardeinstellungen unverändert.

  2. Klicken Sie auf Prüfen und abschließen, um den Nutzercluster zu erstellen. Das Erstellen des Nutzerclusters dauert mindestens 15 Minuten. In der Console werden Statusmeldungen angezeigt, während die Einstellungen überprüft und der Cluster in Ihrem Rechenzentrum erstellt wird.

    Wenn bei der Überprüfung der Einstellungen ein Fehler auftritt, wird in der Console eine Fehlermeldung angezeigt, die klar genug sein sollte, damit Sie das Konfigurationsproblem beheben und noch einmal versuchen können, den Cluster zu erstellen.

    Weitere Informationen zu möglichen Fehlern und deren Behebung finden Sie unter Fehlerbehebung bei bei der GKE On-Prem API registrierten Clustern.

Terraform

In diesem Abschnitt erfahren Sie, wie Sie mit Terraform einen Nutzercluster und einen Knotenpool erstellen. Weitere Informationen und Beispiele finden Sie hier:

  1. Erstellen Sie ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung .tf haben. In dieser Anleitung heißt die Datei main.tf.

    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    
  2. Prüfen Sie die Terraform-Ressource des Nutzerclusters:

    Das folgende Beispiel für eine Terraform-Ressource enthält die Werte, die Sie im vorherigen Abschnitt in die Planungstabelle eingegeben haben.

    resource "google_gkeonprem_vmware_cluster" "cluster-basic" {
      name = "minimal-installation-user-cluster"
      project = "PROJECT_ID"
      location = "us-central1"
      admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster"
      description = "User cluster config with MetalLB, static IPs, and Controlplane V2"
      enable_control_plane_v2 = "true"
      on_prem_version = "1.28.300-gke.123"
      control_plane_node {
        cpus = 4
        memory = 8192
        replicas = 1
      }
      network_config {
        service_address_cidr_blocks = ["10.96.0.0/20"]
        pod_address_cidr_blocks = ["192.168.0.0/16"]
        host_config {
          dns_servers = ["DNS_SERVER_IP"]
          ntp_servers = ["NTP_SERVER_IP"]
        }
        static_ip_config {
          ip_blocks {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_NODE_IP_1"
              hostname = "user-vm-1"
            }
            ips {
              ip = "USER_NODE_IP_2"
              hostname = "user-vm-2"
            }
            ips {
              ip = "USER_NODE_IP_3"
              hostname = "user-vm-3"
            }
            ips {
              ip = "USER_NODE_IP_4"
              hostname = "user-vm-4"
            }
          }
        }
        control_plane_v2_config {
          control_plane_ip_block {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_CONTROL_PLANE_NODE_IP"
              hostname = "cp-vm-1"
            }
          }
        }
      }
      load_balancer {
        vip_config {
          control_plane_vip = "USER_CONTROL_PLANE_VIP"
          ingress_vip = "USER_INGRESS_VIP"
        }
        metal_lb_config {
          address_pools {
            pool = "uc-address-pool"
            manual_assign = "true"
            addresses = ["USER_INGRESS_VIP/32", "SERVICE_VIP_1/32", "SERVICE_VIP_2/32"]
          }
        }
      }
      authorization {
        admin_users {
        username = "GOOGLE_ACCOUNT_EMAIL"
      }
    }
      provider = google-beta
    }
    
    resource "google_gkeonprem_vmware_node_pool" "my-node-pool-1" {
      name = "uc-node-pool"
      project = "PROJECT_ID"
      vmware_cluster = "minimal-installation-user-cluster"
      location = "us-central1"
      config {
        replicas = 3
        image_type = "ubuntu_containerd"
        enable_load_balancer = "true"
      }
      depends_on = [
        google_gkeonprem_vmware_cluster.cluster-basic
      ]
      provider = google-beta
    }
    
  3. Kopieren Sie die Terraform-Ressource in main.tf und speichern Sie die Datei.

  4. Initialisieren und erstellen Sie den Terraform-Plan:

    terraform init
    

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

  5. Überprüfen Sie die Konfiguration und nehmen Sie bei Bedarf Änderungen vor:

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

    terraform apply
    

    Geben Sie bei Aufforderung yes ein.

    Das Erstellen des einfachen Nutzerclusters und Knotenpools dauert etwa 15 Minuten (oder je nach Netzwerk auch mehr).

gcloud

Erstellen Sie den Cluster:

gcloud container vmware clusters create minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \
  --location=us-central1 \
  --version=1.28.300-gke.123 \
  --admin-users=GOOGLE_ACCOUNT_EMAIL \
  --service-address-cidr-blocks=10.96.0.0/20 \
  --pod-address-cidr-blocks=192.168.0.0/16 \
  --metal-lb-config-address-pools='pool=uc-address-pool,avoid-buggy-ips=False,manual-assign=False,addresses=USER_INGRESS_VIP/32;SERVICE_VIP_1/32;SERVICE_VIP_2/32' \
  --control-plane-vip=USER_CONTROL_PLANE_VIP \
  --ingress-vip=USER_INGRESS_VIP \
  --static-ip-config-ip-blocks='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_NODE_IP_1;USER_NODE_IP_2;USER_NODE_IP_3;USER_NODE_IP_4' \
  --dns-servers=DNS_SERVER_IP \
  --ntp-servers=NTP_SERVER_IP \
  --enable-control-plane-v2 \
  --enable-dataplane-v2 \
  --control-plane-ip-block='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_CONTROL_PLANE_NODE_IP'

Die Ausgabe des Befehls sieht in etwa so aus:

Waiting for operation [projects/example-project-12345/locations/us-central1/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 mit dem folgenden Befehl ermitteln:

gcloud container vmware operations describe OPERATION_ID \
  --project=PROJECT_ID \
  --location=us-central1

Weitere Informationen finden Sie unter gcloud container vmware Operations.

Das Erstellen des Nutzerclusters dauert mindestens 15 Minuten. Sie können den Cluster in der Console auf der Übersichtsseite für Google Kubernetes Engine-Cluster anzeigen.

Erstellen Sie einen Knotenpool:

gcloud container vmware node-pools create  uc-node-pool \
  --cluster=minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --location=us-central1 \
  --image-type=ubuntu_containerd  \
  --boot-disk-size=40 \
  --cpus=4 \
  --memory=8192 \
  --replicas=3 \
  --enable-load-balancer

Nächste Schritte

Sie haben diese Mindestinstallation von GKE on VMware jetzt abgeschlossen. Optional können Sie Ihre Installation in Aktion sehen, indem Sie eine Anwendung bereitstellen.