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
auffalse
.Entscheiden Sie, welche Art von Load-Balancing Sie verwenden möchten. Folgende Optionen sind verfügbar:
Gebündeltes MetalLB-Load-Balancing. Legen Sie
loadBalancer.kind
auf"MetalLB"
fest. Füllen Sie außerdem den AbschnittloadBalancer.metalLB.addressPools
aus und setzen SieenableLoadBalancer
für mindestens einen Ihrer Knotenpools auftrue
. Weitere Informationen finden Sie unter Gebündeltes Load-Balancing mit MetalLB.Gebündeltes Seesaw-Load-Balancing. Setzen Sie
loadBalancer.kind
auf"Seesaw"
und füllen Sie den AbschnittloadBalancer.seesaw
aus. Weitere Informationen finden Sie unter Gebündeltes Load-Balancing mit Seesaw.Integriertes Load-Balancing mit F5 BIG-IP. Legen Sie
loadBalancer.kind
auf"F5BigIP"
fest und füllen Sie den Abschnittf5BigIP
aus. Weitere Informationen finden Sie unter Load-Balancing mit F5 BIG-IP.Manuelles Load-Balancing. Legen Sie
loadBalancer.kind
auf"ManualLB"
fest und füllen Sie den AbschnittmanualLB
aus. Weitere Informationen finden Sie unter Manuelles Load-Balancing.
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
undcloudAuditLogging
in die Konfigurationsdatei aufnehmen, muss die ID ingkeConnect.projectID
mit der instackdriver.projectID
undcloudAuditLogging.projectID
festgelegten ID übereinstimmen. Wenn die Projekt-IDs nicht identisch sind, schlägt die Clustererstellung fehl.Wenn Sie die Abschnitte
gkeOnPremAPI
,cloudAuditLogging
undstackdriver
in die Konfigurationsdatei aufnehmen, müssen Sie dieselbe Google Cloud-Region ingkeOnPremAPI.location
,cloudAuditLogging.clusterLocation
undstackdriver.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.