Crea un cluster di amministrazione

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 carichi di lavoro.

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 panoramica dell'installazione.

Panoramica della procedura

Di seguito sono riportati i passaggi principali per creare un cluster di amministrazione:

  1. Prepara una workstation di amministrazione.
    Questa macchina dispone degli strumenti necessari per creare nuovi cluster.
  2. 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.
  3. Importa immagini del sistema operativo in vSphere ed esegui il push delle immagini container al registro privato, se applicabile.
    Esegui gkectl prepare.
  4. Creare un cluster di amministrazione.
    Utilizza gkectl per creare un nuovo cluster di amministrazione come specificato in 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. Utente vengono creati e sottoposti a upgrade dall'amministratore responsabile senza l'uso di un cluster di bootstrap.
  5. 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 riscontrare errori quando esegui 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

  • Esamina il Documento di 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 preflight lato server vengono eseguiti sul cluster di bootstrap anziché a livello locale sulla workstation di amministrazione.

1. 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 ha gli strumenti necessari per creare il cluster di amministrazione.

Esegui tutti i passaggi rimanenti in questo documento sulla workstation di amministrazione.

2. 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 analizzando file di configurazione del cluster di amministrazione documento. Ti consigliamo di tenere il documento aperto in una scheda o finestra separata perché vi farai riferimento man mano che completi i passaggi seguenti.

name

Se vuoi specificare un nome per il cluster di amministrazione, compila il 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 che hai inserito quando hai creato la workstation di amministrazione.

network

Compila la sezione network.controlPlaneIPBlock e la sezione network.hostConfig. Imposta anche adminMaster.replicas a 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 usa questi intervalli per assegnare indirizzi IP a pod e servizi nel tuo 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, vedi VIP nella subnet del cluster di amministrazione.

Decidi il tipo di bilanciamento del carico da utilizzare. Le opzioni sono:

  • Bilanciamento del carico in bundle con MetalLB. Imposta loadBalancer.kind su"MetalLB".

  • Bilanciamento del carico integrato con F5 BIG-IP. Imposta loadBalancer.kind su "F5BigIP" e compila il f5BigIP .

  • Bilanciamento del carico manuale. Imposta loadBalancer.kind su "ManualLB" e compila la sezione manualLB.

Per ulteriori informazioni sulle opzioni di bilanciamento del carico, vedi Panoramica del bilanciamento del carico.

antiAffinityGroups

Imposta antiAffinityGroups.enabled a 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 che avrà i nodi del cluster di amministrazione è dietro un server proxy, compila 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 JSON chiave per il tuo account di servizio di accesso ai componenti.

Questo campo è già stato compilato.

gkeConnect

Registra il cluster di amministrazione a un parco risorse Google Cloud gkeConnect . Se includi le sezioni stackdriver e cloudAuditLogging nella di configurazione del file di configurazione, 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.

Nella versione 1.28 e successive, puoi facoltativamente specificare una regione in cui il parco risorse Collega i servizi 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 uguale a quella configurata in cloudAuditLogging.clusterLocation, stackdriver.clusterLocation e gkeOnPremAPI.location. Se le regioni non corrispondono, la creazione del cluster ha esito negativo.

gkeOnPremAPI

Se l'API GKE On-Prem è abilitata nel tuo progetto Google Cloud, tutti i cluster nel progetto vengono registrato 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 svolgere 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. In caso contrario registrare eventuali cluster nel progetto, disabilita gkeonprem.googleapis.com (il nome del servizio per l'API GKE On-Prem) nel progetto. Per istruzioni, vedi Disattivare i servizi.

stackdriver

Se vuoi abilitare Cloud Logging e Cloud Monitoring per il cluster, compila 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 tra 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 (se il campo è incluso nel file di configurazione). Inoltre, se gkeOnPremAPI.enabled è true, la stessa regione deve essere impostato in gkeOnPremAPI.location.

Se gli ID progetto e le regioni non sono uguali, la creazione del cluster non riesce.

cloudAuditLogging

Se vuoi integrare gli audit log dall'API Kubernetes del cluster server con Cloud Audit Logs, cloudAuditLogging .

Tieni presente i seguenti requisiti per i nuovi cluster:

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

  • La regione Google Cloud impostata in cloudAuditLogging.clusterLocation deve essere uguale a quella 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 impostato in gkeOnPremAPI.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 in cui vuoi salvare i backup del cluster.

autoRepair

Se vuoi abilita la riparazione automatica dei nodi per il cluster di amministrazione, imposta autoRepair.enabled a 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 consente solo alcune 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.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"

Convalidare il file di configurazione

Dopo aver compilato il file di configurazione del cluster di amministrazione, esegui gkectl check-config per verificare la validità del file:

gkectl check-config --config ADMIN_CLUSTER_CONFIG

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

Se il comando restituisce messaggi di errore, correggi i problemi e convalida di nuovo il file.

Se vuoi saltare le convalide che richiedono più 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.

3. Scaricare le immagini del sistema operativo

Esegui gkectl prepare per inizializzare il tuo 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 registro Docker privato, esegue il push delle immagini container a nel registro.

  • Facoltativamente, convalida l'immagine container creare attestazioni, per verificare che le immagini siano state create e firmate da Google e siano pronte per e deployment continuo.

5. 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 tuoi 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 attuale. 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.

Gestisci il file checkpoint.yaml

Quando hai eseguito il comando gkectl create admin per creare il cluster di amministrazione, ha creato un file di checkpoint nella stessa cartella del datastore dell'amministratore il disco dati del cluster. Per impostazione predefinita, questo file ha il nome DATA_DISK_NAME‑checkpoint.yaml. Se la lunghezza Il campo DATA_DISK_NAME supera o uguale a 245 caratteri, alla scadenza fino al limite di vSphere della 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 stanno seguendo il processo eliminazione di un cluster di amministrazione.

Se hai abilitato la crittografia delle VM nella tua istanza di vCenter Server, deve avere Operazioni crittografiche.Accesso diretto prima di creare o eseguire l'upgrade dell'amministratore in un cluster Kubernetes. In caso contrario, il checkpoint non verrà caricato. Se non riesci a ottenere questo privilegio, puoi disabilitare il caricamento del file di checkpoint utilizzando 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 di amministrazione.

6. 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   ...

7. Esegui 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.

Estrae 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 di gestione del parco risorse, Google Cloud esegue il deployment Connetti agente e crea un account Google l'account di servizio che rappresenta il progetto in cui è registrato il cluster. L'agente Connect stabilisce una connessione con l'account di servizio da gestire 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 degli accessi 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 e le altre risorse Kubernetes.

L'account di servizio e i criteri RBAC sono necessari per poter gestire del ciclo di vita dei tuoi cluster utente nella console Google Cloud.

Risoluzione dei problemi

Consulta: Risoluzione dei problemi di creazione e upgrade del cluster.

Passaggi successivi

Crea un cluster utente