Questo documento mostra come creare un cluster di amministrazione per Google Distributed Cloud. Il cluster di amministrazione gestisce i cluster utente che eseguono i tuoi workload.
Questa pagina è rivolta ad amministratori, architetti e operatori che configurano, monitorano e gestiscono l'infrastruttura tecnica. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud, consulta Ruoli e attività utente comuni di GKE Enterprise.
Per maggiori dettagli sul cluster di amministrazione, consulta la panoramica dell'installazione.
Panoramica della procedura
Di seguito sono riportati i passaggi principali per creare un cluster di amministrazione:
- Prepara una workstation di amministrazione.
- Questa macchina dispone degli strumenti necessari per creare nuovi cluster.
- Compila i file di configurazione.
- Specifica i dettagli del nuovo cluster di amministrazione completando e convalidando un file di configurazione del cluster di amministrazione, un file di configurazione delle credenziali e, eventualmente, un file di blocco IP.
- Importa le immagini del sistema operativo in vSphere e carica le immagini dei container nel registry privato, se applicabile.
- Esegui
gkectl prepare
.
- Crea un cluster di amministrazione.
- Utilizza
gkectl
per 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 transitorio è 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
kubectl
per 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.
Se utilizzi Controlli di servizio VPC, potresti visualizzare errori quando esegui alcuni comandi gkectl
, ad esempio "Validation Category: GCP - [UNKNOWN] GCP
service: [Stackdriver] could not get GCP services"
. Per evitare questi errori, aggiungi il parametro --skip-validation-gcp
ai comandi.
Prima di iniziare
Consulta il documento relativo alla pianificazione degli indirizzi IP. Assicurati di disporre di indirizzi IP sufficienti per i tre nodi del piano di controllo e un VIP del piano di controllo. Se prevedi di creare cluster utente kubeception, devi disporre di indirizzi IP sufficienti per i nodi del piano di controllo di questi cluster utente.
Esamina la panoramica del bilanciamento del carico e rivedi la tua decisione sul tipo di bilanciatore del carico che vuoi utilizzare. Per alcuni bilanciatori del carico, devi configurare il bilanciatore del carico prima di creare il cluster di amministrazione.
Consulta la sezione
privateRegistry
e decidi se utilizzare un registry pubblico o privato per i componenti di Google Distributed Cloud.Esamina in anticipo il campo osImageType e decidi quale tipo di sistema operativo vuoi eseguire sui nodi del cluster amministrativo.
Se la tua organizzazione richiede che il traffico in uscita passi attraverso un server proxy, assicurati di inserire nella lista consentita le API richieste e l'indirizzo di Container Registry.
Nella versione 1.29 e successive, i controlli preflight lato server sono attivati per impostazione predefinita. I controlli preliminari lato server richiedono regole firewall aggiuntive. In Regole firewall per i cluster di amministrazione, cerca "Controlli preliminari" e assicurati che tutte le regole firewall richieste siano configurate. I controlli preliminari lato server vengono eseguiti sul cluster di bootstrap anziché localmente sulla workstation di amministrazione.
Prepara la workstation di amministrazione
Assicurati di aver configurato e di poter accedere alla workstation di amministrazione come descritto in Creare una workstation di amministrazione. La workstation di amministrazione dispone degli strumenti necessari per creare il cluster di amministrazione.
Esegui tutti i passaggi rimanenti in questo documento sulla workstation di amministrazione.
Compila il file di configurazione
Se hai utilizzato gkeadm
per creare la tua workstation di amministrazione, è stato generato un file di configurazione denominato admin-cluster.yaml
.
Se non hai utilizzato gkeadm
per creare la workstation di amministrazione, generaadmin-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 relativo al file di configurazione del cluster di amministrazione. Ti consigliamo di tenere aperto questo documento in una scheda o una finestra separata, poiché lo consulterai durante l'esecuzione dei passaggi che seguono.
name
Se vuoi specificare un nome per il cluster amministrativo, compila il campo
name
.
bundlePath
Il bundle è un file compresso che contiene i componenti del cluster. È incluso con la workstation di amministrazione. Questo campo è già stato compilato per te.
vCenter
I campi di questa sezione sono già compilati con i valori inseriti quando hai creato la workstation di amministrazione.
network
Compila la sezione network.controlPlaneIPBlock
e la sezione network.hostConfig
. Imposta anche adminMaster.replicas
su 3
.
I campi network.podCIDR e network.serviceCIDR hanno valori precompilati che puoi lasciare invariati, a meno che non entro in conflitto con gli indirizzi già in uso nella tua rete. Kubernetes utilizza questi intervalli per assegnare indirizzi IP ai pod e ai servizi nel cluster.
Compila il resto dei campi nella sezione della rete del file di configurazione se necessario.
loadBalancer
Metti da parte un VIP per il server API Kubernetes del tuo cluster di amministrazione. Fornisci il tuo VIP come valore per loadBalancer.vips.controlPlaneVIP
Per ulteriori informazioni, consulta VIP nella sottorete del cluster di amministrazione.
Decidi il tipo di bilanciamento del carico che vuoi utilizzare. Le opzioni sono:
Bilanciamento del carico in bundle MetalLB. Imposta
loadBalancer.kind
su"MetalLB"
.Bilanciamento del carico integrato con F5 BIG-IP. Imposta
loadBalancer.kind
su"F5BigIP"
e compila la sezionef5BigIP
.Bilanciamento del carico manuale. Imposta
loadBalancer.kind
su"ManualLB"
e compila la sezionemanualLB
.
Per ulteriori informazioni sulle opzioni di bilanciamento del carico, consulta la Panoramica del bilanciamento del carico.
antiAffinityGroups
Imposta antiAffinityGroups.enabled
su true
o false
in base alle tue preferenze.
Utilizza questo campo per specificare se vuoi che Google Distributed Cloud crei regole anti-affinità Distributed Resource Scheduler (DRS) di VMware per i nodi del cluster amministrativo, in modo che vengano distribuiti su almeno tre host fisici del data center.
adminMaster
Se vuoi specificare la CPU e la memoria per i nodi del piano di controllo del cluster amministrativo, compila i campi cpus
e memoryMB
nella sezione adminMaster
.
Imposta il campo replicas
nella sezione adminMaster
su 3
.
proxy
Se la rete su cui si trovano i nodi del cluster di amministrazione è protetta da un server proxy, compila la sezione proxy
.
privateRegistry
Decidi dove conservare le immagini container per i componenti di Google Distributed Cloud. Le opzioni sono:
Container Registry
Il tuo registro Docker privato.
Se vuoi utilizzare il tuo registro privato, compila la sezione
privateRegistry
.
componentAccessServiceAccountKeyPath
Google Distributed Cloud utilizza il tuo account di servizio di accesso ai componenti per scaricare componenti del cluster da Container Registry. Questo campo contiene il percorso di un file di chiavi JSON per l'account di servizio di accesso al componente.
Questo campo è già stato compilato per te.
gkeConnect
Registra il cluster di amministrazione
in un parco risorse Google Cloud compilando la sezione
gkeConnect
. 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 va a buon fine.
In 1.28 e versioni successive, puoi specificare facoltativamente una regione in cui vengono eseguiti i servizi Fleet 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 uguale a quella configurata in cloudAuditLogging.clusterLocation
, stackdriver.clusterLocation
e gkeOnPremAPI.location
. Se le regioni non sono uguali, la creazione del cluster non va a buon fine.
gkeOnPremAPI
Se l'API GKE On-Prem è abilitata nel tuo progetto Google Cloud, tutti i cluster del progetto vengono registrati nell'API GKE On-Prem automaticamente nella regione configurata in stackdriver.clusterLocation
.
La regione gkeOnPremAPI.location
deve essere uguale a quella specificata in cloudAuditLogging.clusterLocation
, gkeConnect.location
e stackdriver.clusterLocation
. Se le regioni non sono uguali, la creazione del cluster non va a buon fine.
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 cluster nel progetto, disattivagkeonprem.googleapis.com
(il nome del servizio per l'API GKE On-Prem) nel progetto. Per le istruzioni, vedi Disattivare i servizi.
stackdriver
Se vuoi attivare
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 admin
.
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 la stessa della regione impostata incloudAuditLogging.clusterLocation
egkeConnect.location
(se il campo è incluso nel file di configurazione). Inoltre, segkeOnPremAPI.enabled
ètrue
, deve essere impostata la stessa regione ingkeOnPremAPI.location
.
Se gli ID progetto e le regioni non sono uguali, la creazione del cluster non va a buon fine.
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
egkeConnect.location
(se il campo è incluso nel file di configurazione). Inoltre, segkeOnPremAPI.enabled
ètrue
, deve essere impostata la stessa regione ingkeOnPremAPI.location
.
Se gli ID progetto e le regioni non sono uguali, la creazione del cluster non va a buon fine.
clusterBackup
Se vuoi attivare il
backup del cluster di amministrazione,
imposta
clusterBackup.datastore
sul
datastore vSphere
dove vuoi salvare i backup del cluster.
autoRepair
Se vuoi
abilitare la riparazione automatica dei nodi
per il tuo cluster di amministrazione, imposta
autoRepair.enabled
su true
.
secretsEncryption
Se vuoi attivare la crittografia dei secret sempre attiva, compila la sezione secretsEncryption
.
osImageType
Decidi il tipo di immagine del sistema operativo da utilizzare per i nodi del cluster di amministrazione e compila la sezione osImageType
di conseguenza.
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.28.0-gke.1-full.tgz" vCenter: address: "vc01.example" datacenter: "vc-01" cluster: "vc01-workloads-1" resourcePool: "vc-01-pool-1" datastore: "vc01-datastore-1" caCertPath: "/usr/local/google/home/me/certs/vc01-cert.pem"" credentials: fileRef: path: "credential.yaml" entry: "vCenter" network: hostConfig: dnsServers: - "203.0.113.1" - "198.51.100.1" ntpServers: - "216.239.35.4" serviceCIDR: "10.96.232.0/24" podCIDR: "192.168.0.0/16" vCenter: networkName: "vc01-net-1" controlPlaneIPBlock: netmask: "255.255.248.0" gateway: "21.0.143.254" ips: - ip: "21.0.140.226" hostname: "admin-cp-vm-1" - ip: "21.0.141.48" hostname: "admin-cp-vm-2" - ip: "21.0.141.65" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.20.59" kind: "MetalLB" antiAffinityGroups: enabled: true adminMaster: cpus: 4 memoryMB: 16384 replicas: 3 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 clusterBackup: datastore: "vc-01-datastore-bu" autoRepair: enabled: true osImageType: "ubuntu_containerd"
Convalida il file di configurazione
Dopo aver compilato il file di configurazione del cluster di amministrazione, esegui
gkectl check-config
per verificare che il file sia valido:
gkectl check-config --config ADMIN_CLUSTER_CONFIG
Sostituisci ADMIN_CLUSTER_CONFIG con il percorso del file di configurazione del cluster di amministrazione.
Se il comando restituisce messaggi di errore, correggi i problemi e convalida di nuovo il file.
Se vuoi saltare le convalide più dispendiose in termini di tempo, passa il flag --fast
.
Per saltare le singole convalide, utilizza i flag --skip-validation-xxx
. Per approfondire il comando check-config
, consulta Eseguire i controlli preflight.
Scaricare le immagini del sistema operativo
Esegui gkectl prepare
per inizializzare l'ambiente vSphere:
gkectl prepare --config ADMIN_CLUSTER_CONFIG
Il comando gkectl prepare
esegue le seguenti attività preparatorie:
Importa le immagini del sistema operativo in vSphere e le contrassegna come modelli VM.
Se utilizzi un registry Docker privato, esegui il push delle immagini del contenitore nel tuo registry.
Facoltativamente, convalida le attestazioni di compilazione 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
Se utilizzi Controlli di servizio VPC, potresti visualizzare errori quando esegui alcuni comandi gkectl
, ad esempio "Validation Category: GCP - [UNKNOWN] GCP
service: [Stackdriver] could not get GCP services"
. Per evitare questi errori, aggiungi il parametro --skip-validation-gcp
ai comandi.
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 corrente. Ti servirà 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.
Gestire il file checkpoint.yaml
Quando hai eseguito il comando gkectl create admin
per creare il cluster amministrativo, è stato creato un file di checkpoint nella stessa cartella del datastore del disco di dati del cluster amministrativo. Per impostazione predefinita, questo file ha il nome
DATA_DISK_NAME‑checkpoint.yaml
. Se la lunghezza di DATA_DISK_NAME è maggiore o uguale a 245 caratteri, a causa del limite di vSphere per la lunghezza del nome file, il nome è DATA_DISK_NAME.yaml
.
Questo file contiene lo stato e le credenziali del cluster amministrativo e viene utilizzato per gli upgrade futuri. Non eliminare questo file a meno che non stia seguendo la procedura per eliminare un cluster di amministrazione.
Se hai attivato la crittografia delle VM nella tua istanza di vCenter Server, devi disporre del privilegio Cryptographic operations.Direct Access prima di creare o eseguire l'upgrade del tuo cluster amministrativo. In caso contrario, il checkpoint non verrà caricato. Se non riesci a ottenere questo privilegio, puoi disattivare il caricamento del file checkpoint utilizzando il flag nascosto --disable-checkpoint
quando esegui un comando pertinente.
Il file checkpoint.yaml
viene aggiornato automaticamente quando esegui il comando gkectl upgrade admin
o un comando gkectl update
che interessa il cluster amministrativo.
Verificare 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 ...
Eseguire il backup dei file
Ti consigliamo di eseguire il backup del file kubeconfig del cluster di amministrazione. In altre parole, copia il file kubeconfig dalla workstation di amministrazione in un'altra posizione. In questo modo, se perdi l'accesso alla stazione di lavoro di amministrazione o se il file kubeconfig sulla stazione di lavoro di amministrazione viene eliminato per errore, avrai comunque accesso al cluster di amministrazione.
Ti consigliamo inoltre di eseguire il backup della chiave SSH privata per il cluster di amministrazione. 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 e esaminare eventuali problemi di connettività con il 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.
Criteri RBAC
Quando compili la
sezione gkeConnect
nel file di configurazione del cluster di amministrazione, il cluster viene registrato nel
parco risorse durante la creazione o l'aggiornamento. Per attivare la funzionalità di gestione del parco risorse, Google Cloud esegue il deployment dell'agente Connect e crea un account di servizio Google che rappresenta il progetto a cui è registrato il cluster.
L'agente Connect stabilisce una connessione con l'account di servizio per gestire le richieste al server API Kubernetes del cluster. In questo modo puoi accedere alle funzionalità di gestione dei cluster e dei carichi di lavoro in Google Cloud, inclusa la console Google Cloud, che ti consente di interagire con il tuo cluster.
Il server API Kubernetes del cluster di amministrazione deve essere in grado di autorizzare le richieste dell'agente Connect. Per garantire questo, nell'account di servizio sono configurati i seguenti criteri di controllo dell'accesso basato sui ruoli (RBAC):
Un regolamento sull'inganno che autorizzi l'agente Connect a inviare richieste al server dell'API Kubernetes per conto dell'account di servizio.
Un criterio di autorizzazione che specifica le operazioni consentite su altre risorse Kubernetes.
L'account di servizio e i criteri RBAC sono necessari per gestire il ciclo di vita dei cluster utente nella console Google Cloud.
Risoluzione dei problemi
Consulta la sezione Risoluzione dei problemi relativi alla creazione e all'upgrade dei cluster.