Questo documento mostra come creare un cluster utente con Controlplane V2 abilitato.
Con Controlplane V2, il piano di controllo per un cluster utente viene eseguito su uno o più nodi nel cluster utente stesso. Controlplane V2 è l'impostazione predefinita e consigliata per la creazione del cluster.
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) Importa le immagini del sistema operativo in vSphere ed esegui il push delle immagini container
- 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 tua decisione sul tipo di bilanciatore del carico da utilizzare. Puoi utilizzare il bilanciatore del carico MetalLB in bundle oppure configurare manualmente un bilanciatore del carico a tua scelta. Per il bilanciamento del carico manuale, devi configurare il bilanciatore del carico prima di creare il cluster utente.
Guarda avanti nella 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. Valuta anche se vuoi utilizzare istanze separate di vCenter Server.
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.15.0-gke.581
enableControlplaneV2
Imposta
enableControlplaneV2
su true
.
enableDataplaneV2
Imposta
enableDataplaneV2
su true
.
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 distinti per il cluster di amministrazione e i cluster utente e utilizzare data center distinti per il cluster di amministrazione e i cluster utente.
Utilizzo di un data center e un cluster vSphere
L'opzione predefinita prevede l'utilizzo di un data center e un cluster vSphere per il cluster di amministrazione e il cluster utente. Per questa opzione, non impostare alcun valore vCenter
nel file di configurazione del cluster utente. I valori vCenter
verranno ereditati dal cluster di amministrazione.
Utilizzo di cluster vSphere separati
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.
Utilizzo di data center vSphere separati
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.networkName
vCenter.datastore
ovCenter.storagePolicyName
vCenter.cluster
ovCenter.resourcePool
Utilizzo di account vCenter separati
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.
Utilizzo di istanze separate di vCenter Server
In determinate situazioni, ha senso creare un cluster utente che utilizza la propria istanza di vCenter Server. In altre parole, il cluster di amministrazione e un cluster utente associato utilizzano istanze diverse di vCenter Server.
Ad esempio, in una località perimetrale, potresti voler avere una macchina fisica che esegue vCenter Server e una o più macchine fisiche che eseguono ESXi. Puoi quindi utilizzare l'istanza locale di vCenter Server per creare una gerarchia degli oggetti vSphere, che includa data center, cluster, pool di risorse, datastore e cartelle.
Compila l'intera sezione vCenter
del file di configurazione del cluster utente. In particolare, specifica un valore per vCenter.address
diverso dall'indirizzo di vCenter Server specificato nel file di configurazione del cluster di amministrazione. Ad esempio:
vCenter: address: "vc-edge.example" datacenter: "vc-edge" cluster: "vc-edge-workloads" resourcePool: "vc-edge-pool datastore: "vc-edge-datastore caCertPath: "/usr/local/google/home/me/certs/edge-cacert.pem" credentials: fileRef: path: "credential.yaml" entry: "vCenter-edge" folder: "edge-vm-folder"
Compila anche il campo network.vCenter.networkName
.
network
Decidi in che modo vuoi che i nodi worker ricevano i loro 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.
Se hai deciso di utilizzare indirizzi IP statici per i nodi worker, compila il campo network.ipMode.ipBlockFilePath
.
I nodi del piano di controllo per il cluster utente devono ricevere i propri indirizzi IP da un elenco di indirizzi statici da te fornito. anche se i nodi worker
ricevono i loro indirizzi da un server DHCP. Per specificare gli indirizzi IP statici per i nodi del piano di controllo, compila la sezione network.controlPlaneIPBlock
. Se vuoi un cluster utente ad alta disponibilità, specifica tre indirizzi IP. Altrimenti, specifica un solo indirizzo IP.
Specifica i server DNS e NTP compilando la sezione hostConfig
. Questi server DNS
e NTP sono destinati ai nodi del piano di controllo. Se utilizzi indirizzi IP statici per i nodi worker, anche questi server DNS e NTP sono destinati ai nodi worker.
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. Per una spiegazione del numero di indirizzi IP necessari, consulta Pianificare gli indirizzi IP.
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
.
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 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.
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
Nella sezione masterNode
puoi specificare quanti nodi del piano di controllo vuoi per il tuo cluster utente: uno o tre. Puoi anche specificare un datastore per i nodi del piano di controllo e se vuoi abilitare il ridimensionamento automatico per i nodi del piano di controllo.
Ricorda che hai specificato gli indirizzi IP per i nodi del piano di controllo nella sezione network.controlPlaneIPBlock
.
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 worker, 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
.
Tieni presente i seguenti requisiti per i nuovi cluster:
L'ID in
stackdriver.projectID
deve essere uguale all'ID ingkeConnect.projectID
ecloudAuditLogging.projectID
.La regione Google Cloud impostata in
stackdriver.clusterLocation
deve essere uguale a quella impostata incloudAuditLogging.clusterLocation
. Inoltre, segkeOnPremAPI.enabled
ètrue
, la stessa regione deve essere impostata ingkeOnPremAPI.location
.
Se gli ID progetto e le regioni non corrispondono, la creazione del cluster non riesce.
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.
Se includi le sezioni stackdriver
e cloudAuditLogging
nel
file di configurazione, l'ID in gkeConnect.projectID
deve essere uguale all'ID
impostato in stackdriver.projectID
e cloudAuditLogging.projectID
. Se gli ID progetto non sono uguali, la creazione del cluster non riesce.
gkeOnPremAPI
Nella versione 1.16 e successive, se l'API GKE On-Prem è abilitata nel progetto Google Cloud, tutti i cluster del progetto vengono registrati automaticamente nell'API GKE On-Prem nella regione configurata in stackdriver.clusterLocation
.
Se vuoi registrare tutti i cluster del progetto nell'API GKE On-Prem, assicurati di seguire i passaggi descritti in Prima di iniziare per attivare e utilizzare l'API GKE On-Prem nel progetto.
Se non vuoi registrare il cluster nell'API GKE On-Prem, includi questa sezione e imposta
gkeOnPremAPI.enabled
sufalse
. Se non vuoi registrare alcun cluster nel progetto, disabilitagkeonprem.googleapis.com
(il nome del servizio per l'API GKE On-Prem) nel progetto. Per le istruzioni, vedi Disattivare i servizi.
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
.
Tieni presente i seguenti requisiti per i nuovi cluster:
L'ID in
cloudAuditLogging.projectID
deve essere uguale all'ID ingkeConnect.projectID
estackdriver.projectID
.La regione Google Cloud impostata in
cloudAuditLogging.clusterLocation
deve essere uguale a quella impostata instackdriver.clusterLocation
. Inoltre, segkeOnPremAPI.enabled
ètrue
, la stessa regione deve essere impostata ingkeOnPremAPI.location
.
Se gli ID progetto e le regioni non corrispondono, la creazione del cluster non riesce.
Esempio di file di configurazione compilati
Ecco un esempio di file di blocchi IP e di file di configurazione del cluster utente:
user-ipblock.yaml
blocks: - netmask: 255.255.255.0 gateway: 172.16.21.1 ips: - ip: 172.16.21.2 hostname: worker-vm-1 - ip: 172.16.21.3 hostname: worker-vm-2 - ip: 172.16.21.4 hostname: worker-vm-3 - ip: 172.16.21.5 hostname: worker-vm-4
user-cluster.yaml
cat user-cluster.yaml apiVersion: v1 kind: UserCluster name: "my-user-cluster" gkeOnPremVersion: 1.15.0-gke.581 enableControlplaneV2: true enableDataplaneV2: true network: hostConfig: dnsServers: - "203.0.113.2" - "198.51.100.2" ntpServers: - "216.239.35.4" ipMode: type: "static" ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 controlPlaneIPBlock: netmask: "255.255.255.0" gateway: "172.16.21.1" ips: - ip: "172.16.21.6" hostname: "cp-vm-1" - ip: "172.16.21.7" hostname: "cp-vm-2" - ip: "172.16.21.8" hostname: "cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" ingressVIP: "172.16.21.30" kind: MetalLB metalLB: addressPools: - name: "address-pool-1" addresses: - "172.16.21.30-172.16.21.39" masterNode: cpus: 4 memoryMB: 8192 replicas: 3 nodePools: - name: "worker-node-pool" cpus: 4 memoryMB: 8192 replicas: 3 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
Ecco i punti importanti da comprendere nell'esempio precedente:
Gli indirizzi IP statici per i nodi worker sono specificati in un file di blocchi IP. Il file dei blocchi IP ha quattro indirizzi anche se ci sono solo tre nodi worker. L'indirizzo IP aggiuntivo è necessario durante l'upgrade, l'aggiornamento e la riparazione automatica del cluster.
I server DNS e NTP sono specificati nella sezione
hostConfig
. In questo esempio, questi server DNS e NTP sono destinati ai nodi del piano di controllo e ai nodi worker. Questo perché i nodi worker hanno indirizzi IP statici. Se i nodi worker dovessero ottenere i propri indirizzi IP da un server DHCP, questi server DNS e NTP sarebbero solo per i nodi del piano di controllo.Gli indirizzi IP statici per i tre nodi del piano di controllo sono specificati nella sezione
network.controlPlaneIPBlock
del file di configurazione del cluster utente. Non è necessario un indirizzo IP aggiuntivo in questo blocco.Il campo
masterNode.replicas
è impostato su3
.Il VIP del piano di controllo e il VIP in entrata sono entrambi nella stessa VLAN dei nodi worker e del piano di controllo.
I VIP riservati ai servizi di tipo LoadBalancer sono specificati nella sezione
loadBalancer.metalLB.addressPools
del file di configurazione del cluster utente. Questi VIP si trovano nella stessa VLAN dei nodi worker e dei nodi del piano di controllo. Il set di VIP specificato in questa sezione deve includere il VIP in entrata e non il VIP del piano di controllo.Il file di configurazione del cluster utente non include una sezione
vCenter
. Il cluster utente utilizza le stesse risorse vSphere del cluster di amministrazione.
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) 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
4. 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.
5. 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:
cp-vm-1 Ready control-plane,master 18m cp-vm-2 Ready control-plane,master 18m cp-vm-3 Ready control-plane,master 18m worker-vm-1 Ready 6m7s worker-vm-2 Ready 6m6s worker-vm-3 Ready 6m14s
Esegui l'upgrade di un cluster utente
Segui le istruzioni in Upgrade di Anthos clusters on VMware.
Elimina un cluster
Per eliminare un cluster utente in cui è abilitato Controlplane V2, segui le istruzioni riportate in Eliminare un cluster utente.
Quando elimini un cluster utente in cui è abilitato Controlplane V2, il disco dati viene eliminato automaticamente.
Risoluzione dei problemi
Vedi Risolvere i problemi relativi alla creazione e all'upgrade dei cluster.