Questo documento mostra come creare un cluster utente per GKE su VMware. Un cluster utente è un luogo in cui puoi eseguire i carichi di lavoro. Ogni cluster utente è associato a un cluster di amministrazione.
Per ulteriori dettagli sui cluster di amministrazione e sui cluster utente, consulta la panoramica dell'installazione.
Panoramica della procedura
Di seguito sono riportati i passaggi principali della creazione di un cluster utente:
- Connettiti alla workstation di amministrazione
- La workstation di amministrazione è una VM che dispone degli strumenti necessari per creare un cluster utente.
- Compila i file di configurazione
- Specifica i dettagli per il tuo nuovo cluster completando un file di configurazione del cluster utente, un file di configurazione delle credenziali ed eventualmente un file dei blocchi IP.
- (Facoltativo) Crea un bilanciatore del carico di Seesaw
- Se hai scelto di utilizzare il bilanciamento del carico di Seesaw, esegui
gkectl create loadbalancer
.
- (Facoltativo) Importa le immagini del sistema operativo in vSphere ed esegui il push delle immagini container nel registro privato, se applicabile.
- Esegui
gkectl prepare
.
- Creazione di un cluster utente
- Esegui
gkectl create cluster
per creare un cluster come specificato nel file di configurazione.
- Verifica che il cluster utente sia in esecuzione
- Utilizza
kubectl
per visualizzare i nodi del cluster.
Al termine di questa procedura, avrai un cluster utente in esecuzione in cui puoi eseguire il deployment dei tuoi carichi di lavoro.
Prima di iniziare
Assicurati di aver creato una workstation di amministrazione e un cluster di amministrazione.
Leggi il documento di pianificazione degli indirizzi IP. Assicurati di disporre di un numero sufficiente di indirizzi IP e rivedi la decisione su come vuoi che i nodi del cluster ricevano gli indirizzi IP: DHCP o statici. Se decidi di utilizzare indirizzi IP statici, devi compilare un file di blocchi IP contenente gli indirizzi scelti.
Consulta la panoramica del bilanciamento del carico e rivedi la decisione sul tipo di bilanciatore del carico da utilizzare. Per determinati bilanciatori del carico, devi configurare il bilanciatore del carico prima di creare il cluster utente.
Guarda avanti, la sezione vcenter. Valuta se vuoi utilizzare cluster vSphere separati per il tuo cluster di amministrazione e i cluster utente e se vuoi utilizzare data center distinti.
Guarda avanti nella sezione nodePools. Pensa a quanti pool di nodi ti servono e a quale sistema operativo vuoi eseguire in ciascuno dei tuoi pool.
1. Connettiti alla workstation di amministrazione
Ottieni una connessione SSH alla tua workstation di amministrazione.
Ricorda che gkeadm
ha attivato il tuo
account di servizio di accesso per componenti sulla workstation di amministrazione.
Esegui tutti i passaggi rimanenti di questo argomento sulla tua workstation di amministrazione nella home directory.
2. Compila il file di configurazione
Quando gkeadm
ha creato la tua workstation di amministrazione, ha generato un file di configurazione denominato user-cluster.yaml
. Questo file di configurazione serve per creare
il tuo cluster utente.
Acquisisci familiarità con il file di configurazione analizzando il documento del file di configurazione del cluster utente. Puoi tenere il documento aperto in una scheda o in una finestra separata, perché vi farai riferimento man mano che completi i passaggi seguenti.
name
Imposta il campo name
su un nome a tua scelta per il cluster utente.
gkeOnPremVersion
Questo campo è già compilato. Specifica la versione di
GKE su VMware. Ad esempio, 1.11.0-gke.543
vCenter
I valori che imposti nella sezione vCenter
del file di configurazione del cluster di amministrazione sono globali. ovvero al cluster di amministrazione e ai cluster utente associati.
Per ogni cluster utente che crei, puoi eseguire l'override di alcuni dei valori vCenter
globali.
Per eseguire l'override dei valori vCenter
globali, compila i campi pertinenti nella sezione vCenter
del file di configurazione del cluster utente.
In particolare, potresti voler utilizzare cluster vSphere separati per il cluster di amministrazione e i cluster utente, nonché utilizzare data center distinti per il cluster di amministrazione e i cluster utente.
Utilizza un data center e un cluster vSphere
L'opzione predefinita prevede l'utilizzo di un data center e un cluster vSphere sia per il cluster di amministrazione che per qualsiasi cluster utente. I valori nel file di configurazione del cluster di amministrazione vengono utilizzati anche per il cluster utente. Non impostare alcun valore vCenter
nel file di configurazione del cluster utente.
Crea un cluster utente in un cluster vSphere separato
Se vuoi creare un cluster utente all'interno del proprio cluster vSphere, specifica un valore per vCenter.cluster
nel file di configurazione del cluster utente.
Se il cluster di amministrazione e il cluster utente si trovano in cluster vSphere separati, possono trovarsi nello stesso data center o in data center diversi.
Crea un cluster utente con un data center separato
Il cluster utente e il cluster di amministrazione possono trovarsi in data center diversi. Anche in questo caso, si trovano in cluster vSphere separati.
Se specifichi vCenter.datacenter
nel file di configurazione del cluster utente, devi specificare anche vCenter.datastore
e
vCenter.networkName
e vCenter.cluster
o
vCenter.resourcePool
.
Per utilizzare data center diversi per il cluster di amministrazione e il cluster utente, ti consigliamo di creare un datastore separato per ogni piano di controllo del cluster utente nel data center del cluster di amministrazione, in modo che il piano di controllo del cluster di amministrazione e i piani di controllo del cluster utente abbiano isolati i domini di errore del datastore. Sebbene sia possibile utilizzare il datastore del cluster di amministrazione per i nodi del piano di controllo del cluster utente, i nodi del piano di controllo del cluster utente e il cluster di amministrazione vengono inseriti nello stesso dominio di errore del datastore.
Account vCenter diverso per un cluster utente nel proprio data center
Un cluster utente può utilizzare un account vCenter diverso, con vCenter.credentials
diverso, dal cluster di amministrazione. L'account vCenter per il cluster di amministrazione deve accedere al data center del cluster di amministrazione, mentre l'account vCenter per il cluster utente deve accedere solo al data center del cluster utente.
network
Decidi in che modo vuoi che i nodi del cluster ricevano gli indirizzi IP. Le opzioni sono:
Da un server DHCP che hai configurato in anticipo. Imposta
network.ipMode.type
su"dhcp"
.Da un elenco di indirizzi IP statici da te forniti. Imposta
network.ipMode.type
su"static"
e crea un file di blocco IP che fornisce gli indirizzi IP statici. Per un esempio di file di blocchi IP, consulta Esempio di file di configurazione compilati.
Compila gli altri campi della sezione network come necessario:
Se hai deciso di utilizzare indirizzi IP statici per i nodi del cluster utente, i campi
network.ipMode.ipBlockFilePath
e la sezionenetwork.hostconfig
sono obbligatori. La sezionenetwork.hostconfig
contiene informazioni sui server NTP, sui server DNS e sui domini di ricerca DNS utilizzati dai nodi del cluster.Se utilizzi il bilanciatore del carico di Seesaw, la sezione
network.hostconfig
è obbligatoria anche se intendi utilizzare DHCP per i nodi del cluster.I valori di network.podCIDR e network.serviceCIDR hanno valori precompilati che puoi lasciare invariati, a meno che non siano in conflitto con indirizzi già in uso nella tua rete. Kubernetes utilizza questi intervalli per assegnare indirizzi IP a pod e servizi nel cluster.
Indipendentemente dal fatto che utilizzi un server DHCP o specifichi un elenco di indirizzi IP statici, devi avere a disposizione un numero sufficiente di indirizzi IP per il tuo cluster utente. Sono inclusi i nodi nel cluster utente e quelli nel cluster di amministrazione che eseguono il piano di controllo per il cluster utente. Per una spiegazione del numero di indirizzi IP necessari, consulta Pianificare gli indirizzi IP.
Regole firewall per un cluster utente con un valore network.vCenter.networkName
separato
Nei rispettivi file di configurazione, il cluster di amministrazione e il cluster utente possono utilizzare valori network.vCenter.networkName
separati che rappresentano diverse VLAN e data center diversi. Tuttavia, è necessario consentire la seguente comunicazione tra VLAN.
- I nodi utente possono accedere alle porte 443 e 8132 sull'indirizzo VIP del piano di controllo del cluster utente e ricevere da loro i pacchetti di reso.
loadBalancer
Imposta un VIP per il server API Kubernetes del tuo cluster utente. Metti da parte un altro VIP per il servizio in entrata del cluster utente. Fornisci i tuoi VIP come
valori per
loadBalancer.vips.controlPlaneVIP
e
loadBalancer.vips.ingressVIP
.
Per maggiori informazioni, vedi VIP nella subnet del cluster utente e VIP nella subnet del cluster di amministrazione.
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.
enableDataplaneV2
Decidi se abilitare Dataplane V2 per il tuo cluster utente e imposta enableDataplaneV2 di conseguenza.
enableWindowsDataplaneV2
Se prevedi di avere un pool di nodi Windows, decidi se abilitare Windows Dataplane V2 e impostare enableWindowsDataplaneV2 di conseguenza.
advancedNetworking
Se prevedi di creare un
gateway NAT in uscita, imposta
advancedNetworking
su true
.
multipleNetworkInterfaces
Decidi se configurare più interfacce di rete per i pod e imposta di conseguenza multipleNetworkInterfaces.
storage
Se vuoi disabilitare il deployment dei componenti CSI di vSphere, imposta storage.vSphereCSIDisabled su true
.
masterNode
Il piano di controllo per il cluster utente viene eseguito sui nodi nel cluster di amministrazione.
Nella sezione masterNode
, puoi specificare il numero di nodi del piano di controllo che vuoi per il tuo cluster utente. Puoi inoltre specificare un datastore per i nodi del piano di controllo e se vuoi abilitare il ridimensionamento automatico dei nodi.
nodePools
Un pool di nodi è un gruppo di nodi in un cluster che hanno tutti la stessa configurazione. Ad esempio, i nodi in un pool potrebbero eseguire Windows e quelli in un altro pool potrebbero eseguire Linux.
Devi specificare almeno un pool di nodi compilando la sezione nodePools
.
Per ulteriori informazioni, consulta Pool di nodi e Creazione e gestione dei pool di nodi.
antiAffinityGroups
Imposta
antiAffinityGroups.enabled
su true
o false
.
Questo campo specifica se GKE su VMware crea regole di anti-affinità Distributed Resource Scheduler (DRS) per i nodi del cluster utente, in modo che siano distribuiti in almeno tre host fisici nel data center.
stackdriver
Se vuoi abilitare Cloud Logging e Cloud Monitoring per il tuo cluster, compila la sezione stackdriver
.
Questa sezione è obbligatoria per impostazione predefinita. In altre parole, se non compili questa sezione,
devi includere il flag --skip-validation-stackdriver
quando esegui
gkectl create cluster
.
gkeConnect
Il cluster utente deve essere registrato in un parco risorse Google Cloud.
Compila la sezione gkeConnect
per specificare un progetto host del parco risorse e un account di servizio associato.
usageMetering
Se vuoi abilitare la misurazione dell'utilizzo per il tuo cluster, compila la sezione usageMetering
.
cloudAuditLogging
Se vuoi integrare gli audit log del server API Kubernetes del tuo cluster con Cloud Audit Logs, compila la sezione cloudAuditLogging
.
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.
vc-01-ipblock-user.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 - ip: 172.16.20.25 hostname: user-host5 - ip: 172.16.20.26 hostname: user-host6
vc-01-user-cluster.yaml
apiVersion: v1 kind: UserCluster name: "gke-user-01" gkeOnPremVersion: 1.11.0-gke.543 network: hostConfig: dnsServers: - "203.0.113.1" - "198.51.100.1" ntpServers: - "216.239.35.4" ipMode: type: dhcp ipBlockFilePath: "vc-01-ipblock-user.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 vCenter: networkName: "vc01-net-1" loadBalancer: vips: controlPlaneVIP: "172.16.20.32" ingressVIP: "172.16.21.30" kind: "MetalLB" metalLB: addressPools: - name: "gke-address-pool-01" addresses: - "172.16.21.30 - 172.16.21.39" enableDataplaneV2: true masterNode: cpus: 4 memoryMB: 8192 replicas: 1 nodePools: - name: "gke-node-pool-01" cpus: 4 memoryMB: 8192 replicas: 3 osImageType: "ubuntu_containerd" 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.
3. (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
4. (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
5. Creazione di un cluster utente
Crea un 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.
6. Verifica che il cluster utente sia in esecuzione
Verifica 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.