Questa pagina mostra come creare un cluster di amministrazione da utilizzare nei domini di topologia di Google Distributed Cloud . Il cluster di amministrazione gestisce i cluster utente che eseguono i carichi di lavoro. Per utilizzare i domini di topologia è necessaria la versione 1.31 o successive di Google Distributed Cloud.
La configurazione di un dominio di topologia richiede l'attivazione del cluster avanzato. Tieni presente le seguenti limitazioni dell'anteprima del cluster avanzato:
- Puoi attivare il cluster avanzato solo al momento della creazione del cluster per i nuovi cluster 1.31.
- Dopo aver attivato il cluster avanzato, non potrai eseguire l'upgrade del cluster alla versione 1.32. Attiva il cluster avanzato solo in un ambiente di test.
Questa pagina è rivolta ad amministratori, architetti e operatori che configurano, monitorano e gestiscono l'infrastruttura tecnologica. Per saperne di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Google Cloud contenuti, consulta Ruoli e attività utente GKE comuni.
Per maggiori dettagli sul cluster di amministrazione, consulta la panoramica dell'installazione.
Panoramica della procedura
Di seguito sono riportati i passaggi principali per la creazione di un cluster di amministrazione:
- Compila il file di configurazione dell'amministratore
- Specifica i dettagli del nuovo cluster di amministrazione compilando un file di configurazione del cluster di amministrazione.
- Compila il file di configurazione dell'infrastruttura vSphere
- Specifica i dettagli dei domini di topologia in un file di configurazione dell'infrastruttura vSphere.
- Compila il file di blocco IP
- Specifica gli indirizzi IP del gateway, della maschera di rete e dei nodi del control plane in un file di blocco IP.
- Scarica le immagini sistema operativo
- Scarica il pacchetto Google Distributed Cloud normale. Poi esegui
gkectl prepare, che importa le immagini sistema operativo in vSphere e, se applicabile, esegue il push delle immagini container nel registro privato.
- Crea un cluster di amministrazione.
- Utilizza
gkectlper creare un nuovo cluster di amministrazione come specificato nei file di configurazione completati. Quando Google Distributed Cloud crea un cluster di amministrazione, esegue il deployment di un cluster Kubernetes in Docker (kind) per ospitare temporaneamente i controller Kubernetes necessari per creare il cluster di amministrazione. Questo cluster temporaneo è chiamato cluster di bootstrap. I cluster utente vengono creati e sottoposti ad upgrade dall'amministratore che li gestisce senza l'utilizzo di un cluster di bootstrap.
- Verifica che il cluster di amministrazione sia in esecuzione.
- Utilizza
kubectlper visualizzare i nodi del cluster.
Al termine di questa procedura, avrai un cluster di amministrazione in esecuzione che potrai utilizzare per creare e gestire i cluster utente nei domini di topologia.
Prima di iniziare
Assicurati di aver configurato la workstation di amministrazione e di poter accedere come descritto in Creare una workstation di amministrazione. La workstation di amministrazione contiene gli strumenti necessari per creare il cluster di amministrazione. Esegui tutti i passaggi descritti in questo documento sulla workstation di amministrazione.
Consulta il documento di pianificazione degli indirizzi IP. Assicurati di avere a disposizione indirizzi IP sufficienti per i tre nodi del control plane e un VIP del control plane.
Configura il bilanciatore del carico per il bilanciamento del carico manuale. Il bilanciatore del carico deve essere configurato prima di creare il cluster di amministrazione.
Dai un'occhiata alla
privateRegistrysezione e decidi se vuoi utilizzare un registro pubblico o privato per i componenti di Google Distributed Cloud.Dai un'occhiata al osImageType e decidi quale tipo di sistema operativo vuoi eseguire sui nodi del cluster di amministrazione.
Se la tua organizzazione richiede che il traffico in uscita passi attraverso un proxy server, assicurati di inserire nella lista consentita le API richieste e l'indirizzo di Artifact Registry.
Raccogli le informazioni necessarie per accedere a ogni istanza di vCenter Server. Queste informazioni sono necessarie per compilare la
Secretsezione e laVSphereInfraConfig.credentials.vCenterssezione nel file di configurazione dell'infrastruttura vSphere. Per scoprire come ottenere le informazioni necessarie, consulta le seguenti risorse:
Compila il file di configurazione del cluster di amministrazione
Se hai utilizzato gkeadm per creare la workstation di amministrazione, è stato generato un file di configurazione denominato admin-cluster.yaml.
Se non hai utilizzato gkeadm per creare la workstation di amministrazione, genera admin-cluster.yaml eseguendo questo comando sulla workstation di amministrazione:
gkectl create-config admin
Questo file di configurazione serve per creare il cluster di amministrazione.
Acquisisci familiarità con il file di configurazione esaminando il documento File di configurazione del cluster di amministrazione. Ti consigliamo di tenere aperto questo documento in una scheda o finestra separata, perché dovrai farvi riferimento mentre completi i passaggi seguenti.
name
Se vuoi specificare un nome per il cluster di amministrazione, compila il
name campo.
bundlePath
Il pacchetto è un file ZIP che contiene i componenti del cluster. È incluso nella workstation di amministrazione. Questo campo è già compilato.
enableAdvancedCluster
Imposta enableAdvancedCluster
su true. In questo modo vengono attivati i cluster avanzati, necessari per configurare i domini di topologia.
infraConfigFilePath
Aggiungi il percorso completo del
file di configurazione dell'infrastruttura vSphere
nel infraConfigFilePath
campo.
vCenter
Rimuovi l'intera sezione. Configura invece le informazioni di vCenter Server nel file di configurazione dell'infrastruttura vSphere.
network
Rimuovi quanto segue dal file di configurazione:
- L'intera sezione
network.hostConfig. Queste informazioni vengono configurate nel file di configurazione dell'infrastruttura vSphere per ogni dominio di topologia. - Il campo
network.vCenter.networkName. Questo campo viene configurato nel file di configurazione dell'infrastruttura vSphere per ogni dominio di topologia. - L'intera sezione
network.controlPlaneIPBlock. Gli indirizzi IP del gateway, della maschera di rete e dei nodi del control plane vengono configurati in un file di blocco IP.
- L'intera sezione
Imposta
network.ipMode.ipBlockFilePathsul percorso del file di blocco IP.Imposta
network.ipMode.typesustatic.I campi network.podCIDR e network.serviceCIDR hanno valori precompilati che puoi lasciare invariati a meno che non siano in conflitto con gli indirizzi già in uso nella rete. Kubernetes utilizza questi intervalli per assegnare indirizzi IP a pod e servizi nel cluster.
loadBalancer
Imposta
loadBalancer.kindsu"ManualLB"e rimuovi lamanualLBsezione.Metti da parte un VIP per il server API Kubernetes del cluster di amministrazione. Fornisci il VIP come valore per
loadBalancer.vips.controlPlaneVIP
Per saperne di più, vedi VIP nella subnet del cluster di amministrazione.
antiAffinityGroups
Imposta
antiAffinityGroups.enabled
su false.
Le regole di anti-affinità di Distributed Resource Scheduler (DRS) non sono supportate con i domini di topologia.
adminMaster
Se vuoi specificare CPU e memoria per i nodi del control plane del cluster di amministrazione, compila i campi
cpusememoryMBnellaadminMastersezione.I cluster di amministrazione devono avere tre nodi del control plane. Imposta il campo
replicasnella sezioneadminMastersu3.Se vuoi specificare un dominio di topologia specifico da utilizzare per i nodi del control plane, aggiungi il nome del dominio di topologia al
adminMaster.topologyDomainscampo. Se non specifichi un nome qui, devi impostarne uno invSphereInfraConfig.defaultTopologyDomainnel file di configurazione dell'infrastruttura vSphere.
proxy
Se la rete che conterrà i nodi del cluster di amministrazione si trova dietro un server proxy,
compila la
proxy
sezione.
privateRegistry
Decidi dove vuoi conservare le immagini container per i componenti di Google Distributed Cloud. Le opzioni sono:
Artifact Registry
Il tuo registro Docker privato.
Se vuoi utilizzare il tuo registro privato, compila la
privateRegistrysezione.
componentAccessServiceAccountKeyPath
Google Distributed Cloud utilizza il tuo account di servizio di accesso ai componenti per scaricare i componenti del cluster da Artifact Registry. Questo campo contiene il percorso di un file di chiavi JSON per l'account di servizio di accesso ai componenti.
Questo campo è già compilato.
gkeConnect
Registra il cluster di amministrazione
in un Google Cloud parco risorse compilando la
gkeConnect
sezione. L'ID in gkeConnect.projectID deve essere lo stesso ID impostato in stackdriver.projectID e cloudAuditLogging.projectID. Se gli ID progetto non sono uguali, la creazione del cluster non riesce.
Facoltativamente, puoi specificare una regione in cui vengono eseguiti i servizi di parco risorse e Connect in gkeConnect.location. Se non includi questo campo, il cluster utilizza le istanze globali di questi servizi.
Se includi gkeConnect.location, la regione specificata deve essere la stessa configurata in cloudAuditLogging.clusterLocation, stackdriver.clusterLocation e gkeOnPremAPI.location. Se le regioni non sono uguali, la creazione del cluster non riesce.
gkeOnPremAPI
Questa sezione descrive come i cluster sono registrati nell'API GKE On-Prem.
Lo strumento a riga di comando gkectl è l'unico strumento di gestione del ciclo di vita del cluster
disponibile per i cluster che utilizzano i domini di topologia. Sebbene la Google Cloud console, Google Cloud CLI e Terraform non siano supportati per i cluster che utilizzano i domini di topologia, puoi facoltativamente registrare il cluster nell'API GKE On-Prem al momento della creazione.
Se l'API GKE On-Prem è abilitata nel tuo Google Cloud progetto, tutti i cluster
del progetto vengono registrati automaticamente nell'API GKE On-Prem nella regione
configurata in stackdriver.clusterLocation. La regione gkeOnPremAPI.location deve essere la stessa specificata in cloudAuditLogging.clusterLocation, gkeConnect.location e stackdriver.clusterLocation. Se le regioni non sono uguali, la creazione del cluster non riesce.
Se vuoi registrare tutti i cluster del progetto nell'API GKE On-Prem, assicurati di eseguire 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.enabledsufalse. 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 Disabilitare i servizi.
stackdriver
Compila la
stackdriver
sezione per attivare
Cloud Logging e Cloud Monitoring
per il cluster.
Tieni presente i seguenti requisiti:
L'ID in
stackdriver.projectIDdeve essere lo stesso ID ingkeConnect.projectIDecloudAuditLogging.projectID.La Google Cloud regione impostata in
stackdriver.clusterLocationdeve essere la stessa regione impostata incloudAuditLogging.clusterLocationegkeConnect.location. Inoltre, segkeOnPremAPI.enabledètrue, la stessa regione deve essere impostata ingkeOnPremAPI.location.
Se gli ID progetto e le regioni non sono uguali, la creazione del cluster non riesce.
cloudAuditLogging
Se vuoi integrare gli audit log del server API Kubernetes del cluster con Cloud Audit Logs, compila la
cloudAuditLogging
sezione.
Tieni presente i seguenti requisiti per i nuovi cluster:
Poiché
enableAdvancedClusterè impostato sutrue, devi specificare lo stesso percorso incloudAuditLogging.serviceAccountKeyPathestackdriver.serviceAccountKeyPath.L'ID in
cloudAuditLogging.projectIDdeve essere lo stesso ID ingkeConnect.projectIDestackdriver.projectID.La Google Cloud regione impostata in
cloudAuditLogging.clusterLocationdeve essere la stessa regione impostata instackdriver.clusterLocationegkeConnect.location(se il campo è incluso nel file di configurazione). Inoltre, segkeOnPremAPI.enabledètrue, la stessa regione deve essere impostata ingkeOnPremAPI.location.
Se gli ID progetto e le regioni non sono uguali, la creazione del cluster non riesce.
clusterBackup
Rimuovi questa sezione. Il backup del cluster di amministrazione, in un datastore vSphere non è supportato.
autoRepair
Se vuoi
attivare la riparazione automatica dei nodi
per il cluster di amministrazione, imposta
autoRepair.enabled
su true.
secretsEncryption
Poiché enableAdvancedCluster è impostato su true, rimuovi questa sezione.
osImageType
Imposta il
osImageType.
su ubuntu_cgv2.
preparedSecrets
Rimuovi il campo preparedSecrets.
Le credenziali preparate
non sono supportate quando i domini di topologia sono attivati.
Esempio di file di configurazione compilati
Di seguito è riportato un esempio di file di configurazione del cluster di amministrazione compilato. La configurazione attiva alcune, ma non tutte, le funzionalità disponibili.
vc-01-admin-cluster.yaml
apiVersion: v1
kind: AdminCluster
name: "gke-admin-01"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.1-full.tgz"
enableAdvancedCluster: true
infraConfigFilePath: "/my-config-folder/vsphere-infrastructure-config.yaml"
network:
serviceCIDR: "10.96.232.0/24"
podCIDR: "192.168.0.0/16"
ipMode:
type: "static"
ipBlockFilePath: "/my-config-folder/admin-cluster-ipblock.yaml"
loadBalancer:
vips:
controlPlaneVIP: "172.16.20.59"
kind: "ManualLB"
antiAffinityGroups:
enabled: false
adminMaster:
cpus: 4
memoryMB: 16384
replicas: 3
topologyDomains: "admin-cluster-domain"
componentAccessServiceAccountKeyPath: "sa-key.json"
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"
disableVsphereResourceMetrics: false
autoRepair:
enabled: true
osImageType: "ubuntu_cgv2"
Compila il file di configurazione dell'infrastruttura vSphere
Copia il modello per il
file di configurazione dell'infrastruttura vSphere
nel file della directory specificata nel infraConfigFilePath
campo nel file di configurazione del cluster di amministrazione. Esiste un solo file di configurazione dell'infrastruttura vSphere per il cluster di amministrazione e tutti i cluster utente gestiti.
Secret
Compila la Secret
sezione nel file di configurazione dell'infrastruttura vSphere. Questa sezione descrive il secret delle credenziali vSphere che memorizza le credenziali di ogni vCenter Server.
VSphereInfraConfig.name
Compila il VSphereInfraConfig,name campo.
VSphereInfraConfig.credentials.vCenters
Per ogni Secret, aggiungi una sezione corrispondente
VSphereInfraConfig.credentials.vCenters.
VSphereInfraConfig,topologyDomains
Compila la
VSphereInfraConfig.topologyDomains sezione per
definire i domini di topologia.
Compila il file di blocco IP
Copia il modello per il
file di blocco IP nel file della
directory specificata nel campo network.ipMode.ipBlockFilePath
nel file di configurazione del cluster di amministrazione. Aggiungi gli indirizzi IP del gateway, della maschera di rete e dei tre nodi del control plane. Per ogni indirizzo IP del nodo del control plane, aggiungi isControlPlane: true come mostrato nell'
esempio per i domini di topologia.
Scarica le immagini sistema operativo
Scarica il pacchetto Google Distributed Cloud normale sulla workstation di amministrazione:
gcloud storage cp gs://gke-on-prem-release/gke-onprem-bundle/VERSION/gke-onprem-vsphere-VERSION.tgz /var/lib/gke/bundles/gke-onprem-vsphere-VERSION.tgz
Sostituisci
VERSIONcon la versione di Google Distributed Cloud che vuoi installare.Questo comando scarica il pacchetto normale. Non scaricare il pacchetto completo perché non è supportato con i cluster avanzati.
Esegui
gkectl prepareper inizializzare l'ambiente vSphere:gkectl prepare --config ADMIN_CLUSTER_CONFIG
Sostituisci
ADMIN_CLUSTER_CONFIGcon il percorso della configurazione del cluster di amministrazione.Il comando
gkectl prepareesegue le seguenti attività preparatorie:Importa le immagini sistema operativo in vSphere e le contrassegna come modelli di VM.
Se utilizzi un registro Docker privato, esegue il push delle immagini container nel registro.
(Facoltativo) Convalida le attestazioni di build delle immagini container, verificando così che le immagini siano state create e firmate da Google e siano pronte per il deployment.
Crea il cluster di amministrazione
Crea il cluster di amministrazione:
gkectl create admin --config ADMIN_CLUSTER_CONFIG
Riprendi la creazione del cluster di amministrazione dopo un errore
Se la creazione del cluster di amministrazione non riesce o viene annullata, puoi eseguire di nuovo il comando create:
gkectl create admin --config ADMIN_CLUSTER_CONFIG
Individua il file kubeconfig del cluster di amministrazione
Il comando gkectl create admin crea un file kubeconfig denominato kubeconfig nella directory attuale. Avrai bisogno di questo file kubeconfig in un secondo momento per interagire con il cluster di amministrazione.
Il file kubeconfig contiene il nome del cluster di amministrazione. Per visualizzare il nome del cluster, puoi eseguire:
kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG
L'output mostra il nome del cluster. Ad esempio:
NAME gke-admin-tqk8x
Se vuoi, puoi modificare il nome e la posizione del file kubeconfig.
Verifica che il cluster di amministrazione sia in esecuzione
Verifica che il cluster di amministrazione sia in esecuzione:
kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Sostituisci ADMIN_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster di amministrazione.
L'output mostra i nodi del cluster di amministrazione. Ad esempio:
admin-cp-vm-1 Ready control-plane,master ... admin-cp-vm-2 Ready control-plane,master ... admin-cp-vm-3 Ready control-plane,master ...
Configura PodTemplate
L'etichetta di topologia viene inserita nelle etichette dei nodi nel dominio di topologia.
A meno che la configurazione del dominio di topologia non abbia utilizzato il vincolo predefinito,
"topology.kubernetes.io/zone"
come chiave di topologia, devi configurare la chiave di topologia nel modello di pod
di Deployment, StatefulSet o ReplicaSet, a seconda dei casi.
Supponiamo, ad esempio, di aver definito la chiave nell'etichetta di topologia come
"topology.examplepetstore.com/zone". In PodTemplate, specifichi la chiave come valore per il campo topologySpreadConstraints.topologyKey. In questo modo, lo scheduler Kubernetes distribuisce i pod nel dominio di topologia per garantire un'elevata affidabilità ed evitare una concentrazione eccessiva in una singola area in caso di errore.
Per saperne di più sulla configurazione di topologySpreadConstraints, consulta
Vincoli di distribuzione della topologia dei pod
nella documentazione di Kubernetes.
Effettuare il backup dei file
Ti consigliamo di eseguire il backup del file kubeconfig del cluster di amministrazione. Ovvero, copia il file kubeconfig dalla workstation di amministrazione in un'altra posizione. In questo modo, se perdi l'accesso alla workstation di amministrazione o se il file kubeconfig sulla workstation di amministrazione viene eliminato accidentalmente, avrai comunque accesso al cluster di amministrazione.
Ti consigliamo inoltre di eseguire il backup della chiave SSH privata per il cluster di amministrazione. In questo modo, se perdi l'accesso al cluster di amministrazione, puoi comunque utilizzare SSH per connetterti ai nodi del cluster di amministrazione. In questo modo potrai risolvere i problemi e analizzare eventuali problemi di connettività al cluster di amministrazione.
Estrai la chiave SSH dal cluster di amministrazione in un file denominato admin-cluster-ssh-key:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets -n kube-system sshkeys \
-o jsonpath='{.data.vsphere_tmp}' | base64 -d > admin-cluster-ssh-key
Ora puoi eseguire il backup di admin-cluster-ssh-key in un'altra posizione a tua scelta.
Risoluzione dei problemi
Consulta Risoluzione dei problemi relativi alla creazione e all'upgrade dei cluster.
Passaggi successivi
Crea un cluster utente da utilizzare nel dominio di topologia