Questo documento mostra come creare un cluster utente che utilizza kubeception.
Che cos'è kubeception?
Il termine kubeception è utilizzato per trasmettere l'idea che un cluster Kubernetes viene utilizzato per creare e gestire altri cluster Kubernetes. Nel contesto di GKE su VMware, kubeception si riferisce al caso in cui il piano di controllo per un cluster utente viene eseguito su uno o più nodi in un cluster di amministrazione.
L'uso di kubeception non è consigliato. Ti consigliamo invece di utilizzare Controlplane V2. Con Controlplane V2, i nodi del piano di controllo per il cluster utente si trovano nel cluster utente stesso.
Pianifica gli indirizzi IP
Segui le istruzioni riportate in Pianificare gli indirizzi IP (kubeception).
Compila un file di configurazione del cluster
Segui le istruzioni in Creare un cluster utente (Controlplane V2).
Quando compili il file di configurazione del cluster utente:
Imposta
enableControlplaneV2
sufalse
.Decidi il tipo di bilanciamento del carico da utilizzare. Le opzioni sono:
Bilanciamento del carico in bundle MetalLB. Imposta
loadBalancer.kind
su"MetalLB"
. Compila anche la sezioneloadBalancer.metalLB.addressPools
e impostaenableLoadBalancer
sutrue
per almeno uno dei tuoi pool di nodi. Per ulteriori informazioni, consulta Bilanciamento del carico in bundle con MetalLB.Bilanciamento del carico in bundle di Seesaw. Imposta
loadBalancer.kind
su"Seesaw"
e compila la sezioneloadBalancer.seesaw
. Per ulteriori informazioni, consulta la sezione Bilanciamento del carico in bundle con Seesaw.Bilanciamento del carico integrato con F5 BIG-IP. Imposta
loadBalancer.kind
su"F5BigIP"
e compila la sezionef5BigIP
. Per maggiori informazioni, consulta Bilanciamento del carico con F5 BIG-IP.Bilanciamento del carico manuale. Imposta
loadBalancer.kind
su"ManualLB"
e compila la sezionemanualLB
. Per ulteriori informazioni, consulta la sezione Bilanciamento del carico manuale.
Per ulteriori informazioni sulle opzioni di bilanciamento del carico, consulta la panoramica sul bilanciamento del carico.
Decidi se abilitare Dataplane V2 per il tuo cluster utente e imposta enableDataplaneV2 di conseguenza.
Se includi le sezioni
stackdriver
ecloudAuditLogging
nel file di configurazione, l'ID ingkeConnect.projectID
deve essere uguale all'ID impostato instackdriver.projectID
ecloudAuditLogging.projectID
. Se gli ID progetto non sono gli stessi, la creazione del cluster non riesce.Se includi le sezioni
gkeOnPremAPI
,cloudAuditLogging
estackdriver
nel file di configurazione, devi impostare la stessa regione di Google Cloud ingkeOnPremAPI.location
,cloudAuditLogging.clusterLocation
estackdriver.location
. Se le regioni non sono uguali, la creazione del cluster non riesce.
Esempio di file di configurazione compilati
Ecco un esempio di file di blocco IP compilato e file di configurazione del cluster utente compilato. La configurazione attiva alcune delle funzionalità disponibili, ma non tutte.
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
Convalidare il file di configurazione
Dopo aver compilato il file di configurazione del cluster utente, esegui gkectl check-config
per verificare che il file sia valido:
gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig per il cluster di amministrazione
USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente
Se il comando restituisce messaggi di errore, risolvi i problemi e convalida di nuovo il file.
Se vuoi saltare le convalide che richiedono più tempo, supera il flag --fast
.
Per saltare singole convalide, utilizza i flag --skip-validation-xxx
. Per scoprire di più sul comando check-config
, consulta Esecuzione dei controlli preflight.
(Facoltativo) Crea un bilanciatore del carico di Seesaw per il cluster utente
Se hai scelto di utilizzare il bilanciatore del carico integrato di Seesaw, esegui il passaggio indicato in questa sezione. In caso contrario, salta questa sezione.
Crea e configura le VM per il tuo bilanciatore del carico Seesaw:
gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
(Facoltativo) Importa immagini sistema operativo in vSphere ed esegui il push delle immagini container in un registro privato
Esegui gkectl prepare
se si verifica una delle seguenti condizioni:
Il cluster utente si trova in un data center vSphere diverso dal cluster di amministrazione.
Il cluster utente ha un vCenter Server diverso da quello del cluster di amministrazione.
Il cluster utente utilizza un Container Registry privato diverso dal registry privato utilizzato dal cluster di amministrazione.
gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --bundle-path BUNDLE \ --user-cluster-config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione
BUNDLE: il percorso del file del pacchetto. Questo file si trova sulla tua workstation di amministrazione in
/var/lib/gke/bundles/
. Ad esempio:/var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente
Crea il cluster utente
Esegui questo comando per creare il cluster utente:
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Individua il file kubeconfig del cluster utente
Il comando gkectl create cluster
crea un file kubeconfig denominato
USER_CLUSTER_NAME-kubeconfig
nella directory corrente. Questo file kubeconfig ti servirà in un secondo momento per interagire con il cluster utente.
Il file kubeconfig contiene il nome del cluster utente. Per visualizzare il nome del cluster, puoi eseguire:
kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG
L'output mostra il nome del cluster. Ad esempio:
NAME my-user-cluster
Se vuoi, puoi modificare il nome e la posizione del file kubeconfig.
Verifica che il cluster utente sia in esecuzione
Esegui questo comando per verificare che il cluster utente sia in esecuzione:
kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG
Sostituisci USER_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster utente.
L'output mostra i nodi del cluster utente. Ad esempio:
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 ...
Risoluzione dei problemi
Vedi Risolvere i problemi relativi alla creazione e all'upgrade dei cluster.