Nutzercluster erstellen (kubeception)

In diesem Dokument wird gezeigt, wie Sie einen Nutzercluster erstellen, der kubeception verwendet.

Was ist kubeception?

Der Begriff kubeception soll verdeutlichen, dass mit einem Kubernetes-Cluster andere Kubernetes-Cluster erstellt und verwaltet werden. Im Kontext von GKE on VMware bezieht sich kubeception auf den Fall, dass die Steuerungsebene für einen Nutzercluster auf einem oder mehreren Knoten in einem Administratorcluster ausgeführt wird.

Wir raten von der Verwendung von kubeception ab. Stattdessen empfehlen wir die Verwendung von Controlplane V2. Bei Controlplane V2 befinden sich die Knoten der Steuerungsebene für den Nutzercluster im Nutzercluster selbst.

IP-Adressen planen

Folgen Sie der Anleitung unter IP-Adressen planen (kubeception).

Clusterkonfigurationsdatei ausfüllen

Folgen Sie der Anleitung unter Nutzercluster erstellen (Controlplane V2).

Beim Ausfüllen der Konfigurationsdatei für den Nutzercluster:

  • Setzen Sie enableControlplaneV2 auf false.

  • Entscheiden Sie, welche Art von Load-Balancing Sie verwenden möchten. Folgende Optionen sind verfügbar:

    Weitere Informationen zu den Load-Balancing-Optionen finden Sie unter Load-Balancing – Übersicht.

  • Entscheiden Sie, ob Dataplane V2 für Ihren Nutzercluster aktiviert werden soll, und legen Sie entsprechend enableDataplaneV2 fest.

  • Wenn Sie die Abschnitte stackdriver und cloudAuditLogging in die Konfigurationsdatei aufnehmen, muss die ID in gkeConnect.projectID mit der in stackdriver.projectID und cloudAuditLogging.projectID festgelegten ID übereinstimmen. Wenn die Projekt-IDs nicht identisch sind, schlägt die Clustererstellung fehl.

  • Wenn Sie die Abschnitte gkeOnPremAPI, cloudAuditLogging und stackdriver in die Konfigurationsdatei aufnehmen, müssen Sie dieselbe Google Cloud-Region in gkeOnPremAPI.location, cloudAuditLogging.clusterLocation und stackdriver.location festlegen. Wenn die Regionen nicht identisch sind, schlägt die Clustererstellung fehl.

Beispiel für ausgefüllte Konfigurationsdateien

Hier sehen Sie ein Beispiel für eine ausgefüllte IP-Blockdatei und eine ausgefüllte Nutzercluster-Konfigurationsdatei. Die Konfiguration aktiviert einige, aber nicht alle verfügbaren Features.

user-ipblock.yaml

blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.21
      hostname: user-host1
    - ip: 172.16.20.22
      hostname: user-host2
    - ip: 172.16.20.23
      hostname: user-host3
    - ip: 172.16.20.24
      hostname: user-host4

user-cluster.yaml

apiVersion: v1
kind: UserCluster
name: "my-user-cluster"
gkeOnPremVersion: 1.15.0-gke.581
enableControlplaneV2: false
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: static
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: 10.96.0.0/20
  podCIDR: 192.168.0.0/16
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.32"
    ingressVIP: "172.16.21.30"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "my-address-pool"
      addresses:
      - "172.16.21.30 - 172.16.21.39"
enableDataplaneV2: true
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 1
nodePools:
- name: "my-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  osImageType: "ubuntu_containerd"
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: true
gkeConnect:
  projectID: "my-project-123"
  registerServiceAccountKeyPath: "connect-register-sa-2203040617.json"
stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
autoRepair:
  enabled: true

Konfigurationsdatei validieren

Nachdem Sie die Konfigurationsdatei des Nutzerclusters ausgefüllt haben, führen Sie gkectl check-config aus, um zu prüfen, ob die Datei gültig ist:

gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Ersetzen Sie Folgendes:

  • ADMIN_CLUSTER_KUBECONFIG: Pfad der kubeconfig-Datei für Ihren Administratorcluster

  • USER_CLUSTER_CONFIG: Pfad Ihrer Nutzercluster-Konfigurationsdatei

Wenn der Befehl Fehlermeldungen zurückgibt, beheben Sie die Probleme und validieren Sie die Datei noch einmal.

Wenn Sie die zeitaufwendigeren Validierungen überspringen möchten, übergeben Sie das Flag --fast. Verwenden Sie die Flags --skip-validation-xxx, um einzelne Validierungen zu überspringen. Weitere Informationen zum Befehl check-config finden Sie unter Vorabprüfungen ausführen.

(Optional) Seesaw-Load-Balancer für den Nutzercluster erstellen

Wenn Sie den gebündelten Seesaw-Load-Balancer verwenden möchten, führen Sie den Schritt in diesem Abschnitt aus. Überspringen Sie andernfalls diesen Abschnitt.

Erstellen und konfigurieren Sie die VMs für den Seesaw-Load-Balancer:

gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

(Optional) Betriebssystem-Images in vSphere importieren und Container-Images in eine private Registry übertragen

Führen Sie gkectl prepare aus, wenn eine der folgenden Bedingungen zutrifft:

  • Der Nutzercluster befindet sich in einem anderen vSphere-Rechenzentrum als Ihr Administratorcluster.

  • Ihr Nutzercluster hat einen anderen vCenter Server als Ihr Administratorcluster.

  • Ihr Nutzercluster verwendet eine private Container-Registry, die sich von der privaten Registry unterscheidet, die von Ihrem Administratorcluster verwendet wird.

gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --bundle-path BUNDLE \
    --user-cluster-config USER_CLUSTER_CONFIG

Ersetzen Sie Folgendes:

  • ADMIN_CLUSTER_KUBECONFIG: der Pfad der kubeconfig-Datei Ihres Administratorclusters

  • BUNDLE: der Pfad der Bundle-Datei. Diese Datei befindet sich auf Ihrer Administrator-Workstation in /var/lib/gke/bundles/. Beispiel:

    /var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
    
  • USER_CLUSTER_CONFIG: Pfad Ihrer Nutzercluster-Konfigurationsdatei

Nutzercluster erstellen

Führen Sie den folgenden Befehl aus, um den Nutzercluster zu erstellen:

gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

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.

Die kubeconfig-Datei enthält den Namen Ihres Nutzerclusters. Führen Sie folgenden Befehl aus, um den Clusternamen anzusehen:

kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG

Die Ausgabe zeigt den Namen des Clusters. Beispiel:

NAME
my-user-cluster

Wenn Sie möchten, können Sie den Namen und den Speicherort der kubeconfig-Datei ändern.

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

Prüfen Sie mit dem folgenden Befehl, ob der 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:

my-user-cluster-node-pool-69-d46d77885-7b7tx   Ready ...
my-user-cluster-node-pool-69-d46d77885-lsvzk   Ready ...
my-user-cluster-node-pool-69-d46d77885-sswjk   Ready ...

Fehlerbehebung

Siehe Fehlerbehebung beim Erstellen und Upgraden von Clustern.

Nächste Schritte