Crea un cluster di amministrazione da utilizzare nei domini di topologia

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 tuoi workload. Per utilizzare i domini di topologia è richiesta la versione 1.31 o successive di Google Distributed Cloud.

La configurazione di un dominio di topologia richiede l'attivazione del cluster avanzato. Tieni presenti le seguenti limitazioni relative all'anteprima avanzata del cluster:

  • Puoi abilitare il cluster avanzato al momento della creazione del cluster solo 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 tecnica. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta la pagina Ruoli e attività comuni degli utenti GKE.

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:

  1. Compila il file di configurazione dell'amministratore
    Specifica i dettagli del nuovo cluster di amministrazione completando un file di configurazione del cluster di amministrazione.
  2. Compila il file di configurazione dell'infrastruttura vSphere
    Specifica i dettagli sui domini della topologia in un file di configurazione dell'infrastruttura vSphere.
  3. Compila il file di blocco IP
    Specifica gli indirizzi IP per il gateway, la netmask e i nodi del control plane in un file di blocco IP.
  4. Ottenere le immagini sistema operativo
    Scarica il pacchetto Google Distributed Cloud normale. Quindi esegui gkectl prepare, che importa le immagini del sistema operativo in vSphere e invia le immagini container al registro privato, se applicabile.
  5. 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 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.
  6. 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 cluster utente nei domini di topologia.

Prima di iniziare

Compila il file di configurazione del cluster di amministrazione

Se hai utilizzato gkeadm per creare la workstation amministrativa, è 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.

Familiarizza 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é lo consulterai mentre completi i passaggi successivi.

name

Se vuoi specificare un nome per il cluster di amministrazione, compila il campo name.

bundlePath

Il bundle è un file compresso che contiene i componenti del cluster. È incluso nella workstation di amministrazione. Questo campo è già compilato per te.

enableAdvancedCluster

Imposta enableAdvancedCluster su true. In questo modo vengono abilitati i cluster avanzati, necessari per configurare i domini di topologia.

infraConfigFilePath

Aggiungi il percorso completo al file di configurazione dell'infrastruttura vSphere nel campo infraConfigFilePath.

vCenter

Rimuovi l'intera sezione. Invece, configuri 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 dominio di topologia.
    • Il campo network.vCenter.networkName. Questo campo è configurato nel file di configurazione dell'infrastruttura vSphere per dominio di topologia.
    • L'intera sezione network.controlPlaneIPBlock. Gli indirizzi IP per il gateway, la maschera di rete e i nodi del control plane sono configurati in un file di blocco IP.
  • Imposta network.ipMode.ipBlockFilePath sul percorso del file di blocco IP.

  • Imposta network.ipMode.type su static.

  • 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à utilizzati nella tua rete. Kubernetes utilizza questi intervalli per assegnare indirizzi IP a pod e servizi nel cluster.

loadBalancer

  • Imposta loadBalancer.kind su "ManualLB" e rimuovi la sezione manualLB.

  • Metti da parte un VIP per il server API Kubernetes del cluster di amministrazione. Fornisci il tuo 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 cpus e memoryMB nella sezione adminMaster.

  • I cluster di amministrazione devono avere tre nodi del control plane. Imposta il campo replicas nella sezione adminMaster su 3.

  • Se vuoi specificare un dominio di topologia specifico da utilizzare per i nodi del piano di controllo, aggiungi il nome del dominio di topologia al campo adminMaster.topologyDomains. Se non specifichi un nome qui, devi impostarne uno in vSphereInfraConfig.defaultTopologyDomain nel file di configurazione dell'infrastruttura vSphere.

proxy

Se la rete che ospiterà i nodi del cluster di amministrazione si trova dietro un server proxy, compila la sezione proxy.

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 sezione privateRegistry.

componentAccessServiceAccountKeyPath

Google Distributed Cloud utilizza il account di servizio di accesso ai componenti per scaricare i componenti del cluster da Artifact Registry. Questo campo contiene il percorso di un file delle chiavi JSON per l'account di servizio di accesso ai componenti.

Questo campo è già compilato per te.

gkeConnect

Registra il cluster di amministrazione in un parco risorse Google Cloud compilando la sezione gkeConnect. L'ID in gkeConnect.projectID deve corrispondere 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.

Se vuoi, puoi specificare una regione in cui i servizi fleet e Connect vengono eseguiti 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 le stesse, la creazione del cluster non va a buon fine.

gkeOnPremAPI

Questa sezione descrive come i cluster vengono registrati nell'API GKE On-Prem.

Lo strumento a riga di comando gkectl è l'unico strumento di gestione del ciclo di vita dei cluster disponibile per i cluster che utilizzano domini di topologia. Sebbene la console Google Cloud , Google Cloud CLI e Terraform non siano supportati per i cluster che utilizzano 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 progetto Google Cloud , 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 le stesse, la creazione del cluster non va a buon fine.

  • 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.enabled su false. Se non vuoi registrare cluster nel progetto, disabilita gkeonprem.googleapis.com (il nome del servizio per l'API GKE On-Prem) nel progetto. Per le istruzioni, vedi Disabilitare i servizi.

stackdriver

Compila la sezione stackdriver per abilitare Cloud Logging e Cloud Monitoring per il tuo cluster.

Tieni presente i seguenti requisiti:

  • L'ID in stackdriver.projectID deve corrispondere all'ID in gkeConnect.projectID e cloudAuditLogging.projectID.

  • La regione Google Cloud impostata in stackdriver.clusterLocation deve essere la stessa della regione impostata in cloudAuditLogging.clusterLocation e gkeConnect.location. Inoltre, se gkeOnPremAPI.enabled è true, la stessa regione deve essere impostata in gkeOnPremAPI.location.

Se gli ID progetto e le regioni non sono gli stessi, 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:

  • Poiché enableAdvancedCluster è impostato su true, devi specificare lo stesso percorso in cloudAuditLogging.serviceAccountKeyPath e stackdriver.serviceAccountKeyPath.

  • L'ID in cloudAuditLogging.projectID deve corrispondere all'ID in gkeConnect.projectID e stackdriver.projectID.

  • La regione Google Cloud impostata in cloudAuditLogging.clusterLocation deve essere la stessa impostata in stackdriver.clusterLocation e gkeConnect.location (se il campo è incluso nel file di configurazione). Inoltre, se gkeOnPremAPI.enabled è true, la stessa regione deve essere impostata in gkeOnPremAPI.location.

Se gli ID progetto e le regioni non sono gli stessi, la creazione del cluster non va a buon fine.

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 osImageType. a ubuntu_cgroupv2 e ubuntu_containerd.

preparedSecrets

Rimuovi il campo preparedSecrets. Le credenziali preparate non sono supportate quando i domini di topologia sono abilitati.

Esempio di file di configurazione compilati

Ecco un esempio di un file di configurazione del cluster di amministrazione compilato. La configurazione attiva alcune, ma non tutte, delle 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_containerd"

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 campo infraConfigFilePath del 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 sezione Secret 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 campo VSphereInfraConfig,name.

VSphereInfraConfig.credentials.vCenters

Per ogni Secret, aggiungi una sezione VSphereInfraConfig.credentials.vCenters corrispondente.

VSphereInfraConfig,topologyDomains

Compila la sezione VSphereInfraConfig.topologyDomains 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 del file di configurazione del cluster di amministrazione. Aggiungi gli indirizzi IP per il gateway, la maschera di rete e i 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.

Ottenere le immagini sistema operativo

  1. Scarica il bundle normale di Google Distributed Cloud nella workstation amministrativa:

    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 VERSION con la versione di Google Distributed Cloud che vuoi installare.

    Questo comando scarica il bundle normale. Non scaricare l'intero bundle perché non è supportato con i cluster avanzati.

  2. Esegui gkectl prepare per inizializzare l'ambiente vSphere:

    gkectl prepare --config ADMIN_CLUSTER_CONFIG
    

    Sostituisci ADMIN_CLUSTER_CONFIG con il percorso della configurazione del cluster di amministrazione.

    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 registro Docker privato, esegue il push delle immagini container nel tuo 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

Riprendere 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. 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 compilata con le etichette dei nodi nel dominio di topologia. A meno che la configurazione del dominio della topologia non abbia utilizzato il vincolo predefinito, "topology.kubernetes.io/zone" come chiave della topologia, devi configurare la chiave della topologia nel modello di pod del deployment, dello StatefulSet o del ReplicaSet, a seconda dei casi.

Ad esempio, supponiamo di aver definito la chiave nell'etichetta della topologia come "topology.examplepetstore.com/zone". In PodTemplate, specifica la chiave come valore per il campo topologySpreadConstraints.topologyKey. In questo modo, lo scheduler Kubernetes distribuisce i pod nel dominio della topologia per garantire l'alta disponibilità ed evitare un'eccessiva concentrazione in una singola area in caso di errore.

Per ulteriori informazioni sulla configurazione di topologySpreadConstraints, consulta la sezione Vincoli di distribuzione della topologia dei pod nella documentazione di Kubernetes.

Eseguire il backup dei file

Ti consigliamo di eseguire il backup del file kubeconfig del cluster di amministrazione. ovvero copia il file kubeconfig dalla workstation amministrativa in un'altra posizione. In questo modo, se perdi l'accesso alla workstation amministrativa o se il file kubeconfig sulla workstation amministrativa viene eliminato accidentalmente, hai comunque accesso al cluster amministrativo.

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 la sezione Risoluzione dei problemi relativi alla creazione e all'upgrade dei cluster.

Passaggi successivi

Crea un cluster utente da utilizzare nel dominio della topologia