Crea un cluster di amministrazione

Questo documento mostra come creare un cluster di amministrazione per GKE su VMware. Il cluster di amministrazione esegue il piano di controllo Kubernetes per il cluster di amministrazione stesso e per i cluster utente associati. Devi creare un cluster di amministrazione prima di creare cluster utente per l'esecuzione dei carichi di lavoro.

Per ulteriori dettagli sul cluster di amministrazione, consulta la panoramica dell'installazione.

Panoramica della procedura

Questi sono i passaggi principali della creazione di 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 per il tuo nuovo cluster di amministrazione completando e convalidando un file di configurazione del cluster di amministrazione, un file di configurazione delle credenziali ed eventualmente un file di blocco IP.
  3. Importa le immagini del sistema operativo in vSphere ed esegui il push delle immagini container nel registro privato, se applicabile.
    Esegui gkectl prepare.
  4. (Facoltativo) Crea un bilanciatore del carico di Seesaw.
    Se hai deciso di utilizzare il bilanciatore del carico di Seesaw, esegui gkectl create loadbalancer.
  5. Crea un cluster di amministrazione.
    Utilizza gkectl per creare un nuovo cluster di amministrazione come specificato nei file di configurazione completati. onprem-admin-cluster-controller nel cluster di bootstrap temporaneo gestisce la creazione del cluster di amministrazione.
  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 puoi utilizzare per creare e gestire i cluster utente.

Prima di iniziare

  • 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 decisione sul tipo di bilanciatore del carico da utilizzare. Per determinati 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 registro pubblico o privato per i componenti di GKE su VMware.

  • Dai un'occhiata al campo osImageType e decidi che tipo di sistema operativo vuoi eseguire sui nodi del cluster di amministrazione

1. Prepara la workstation di amministrazione

Assicurati di aver configurato la workstation di amministrazione e di poter accedere come descritto in Creare una workstation di amministrazione. La workstation di amministrazione ha gli strumenti necessari per creare il cluster di amministrazione.

Completa tutti i passaggi rimanenti di questo argomento sulla workstation di amministrazione.

2. Compila il file di configurazione

Quando gkeadm ha creato la tua workstation di amministrazione, ha generato un file di configurazione denominato admin-cluster.yaml. Questo file di configurazione serve per creare il tuo cluster di amministrazione.

Acquisisci familiarità con il file di configurazione analizzando il documento del file di configurazione del cluster di amministrazione. 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

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. È inclusa nella workstation di amministrazione. Questo campo è già compilato.

vCenter

La maggior parte dei campi di questa sezione è già compilata con i valori inseriti al momento della creazione della workstation di amministrazione. L'eccezione è il campo dataDisk, che devi compilare ora.

network

Decidi in che modo vuoi che i nodi del cluster ricevano gli 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.

Compila gli altri campi della sezione Rete del file di configurazione come necessario:

  • Se hai deciso di utilizzare indirizzi IP statici per i nodi del cluster, i campi network.ipMode.ipBlockFilePath e la sezione network.hostconfig sono obbligatori. La sezione network.hostconfig contiene informazioni sui server NTP, sui server DNS e sui domini di ricerca DNS utilizzati dai nodi del cluster.

  • Se utilizzi un cluster di amministrazione ad alta disponibilità o il bilanciatore del carico di Seesaw, la sezione network.hostconfig è obbligatoria a prescindere dall'utilizzo di DHCP o IP statici per i nodi del cluster.

  • I campi 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 i nodi del cluster di amministrazione. Sono inclusi i nodi nel cluster di amministrazione che eseguono i piani di controllo per eventuali cluster utente associati. Per una spiegazione del numero di indirizzi IP necessari, consulta Pianificare gli indirizzi IP.

Cluster di amministrazione ad alta disponibilità

Se vuoi creare un cluster di amministrazione ad alta disponibilità, compila le sezioni network.controlPlaneIPBlock e network.hostConfig. Imposta anche adminMaster.replicas su 3.

Un cluster di amministrazione ad alta disponibilità ha tre nodi che eseguono i componenti del piano di controllo.

I cluster di amministrazione ad alta disponibilità hanno i seguenti requisiti e limitazioni:

  • Un cluster utente gestito da un cluster di amministrazione ad alta disponibilità deve abilitare Controlplane V2.

  • Non puoi utilizzare il bilanciatore del carico Seesaw per un cluster di amministrazione ad alta disponibilità. Inoltre, non puoi utilizzare il bilanciatore del carico di Seesaw per un cluster utente gestito da un cluster di amministrazione ad alta disponibilità.

loadBalancer

Riserva un VIP per il server API Kubernetes del tuo cluster di amministrazione. Metti da parte un altro VIP per il server dei componenti aggiuntivi. Fornisci i VIP come valori per loadBalancer.vips.controlPlaneVIP e loadBalancer.vips.addonsVIP.

Per maggiori informazioni, consulta VIP nella subnet del cluster di amministrazione.

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

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

  • Bilanciamento del carico in bundle di Seesaw. Imposta loadBalancer.kind su "Seesaw" e compila la sezione loadBalancer.seesaw.

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

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

Per ulteriori informazioni sulle opzioni di bilanciamento del carico, consulta la panoramica sul bilanciamento del carico.

antiAffinityGroups

Imposta antiAffinityGroups.enabled su true o false in base alle tue preferenze.

Utilizza questo campo per specificare se vuoi che GKE su VMware crei regole anti-affinità VMware Distributed Resource Scheduler (DRS) per i nodi del cluster di amministrazione, in modo che siano distribuiti in almeno tre host fisici nel tuo data center.

adminMaster

Se vuoi specificare la CPU e la memoria per i nodi del piano di controllo del cluster di amministrazione, compila i campi cpus e memoryMB nella sezione adminMaster.

Anteprima: se vuoi creare un cluster di amministrazione ad alta disponibilità, imposta il campo replicas nella sezione adminMaster su 3. In caso contrario, impostala su 1.

addonNode

Imposta addonNode.autoResize.enabled su true o false in base alle tue preferenze.

proxy

Se la rete che conterrà 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 GKE su VMware. Le opzioni sono:

  • Container Registry

  • Il tuo registro Docker privato.

Se vuoi utilizzare il tuo registro privato, compila la sezione privateRegistry.

componentAccessServiceAccountKeyPath

GKE su VMware utilizza l'account di servizio di accesso ai componenti per scaricare i componenti del cluster da Container 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 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 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 su false. Se non vuoi registrare alcun cluster nel progetto, disabilita gkeonprem.googleapis.com (il nome del servizio per l'API GKE On-Prem) nel progetto. Per le istruzioni, vedi Disattivare i servizi.

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

Tieni presente i seguenti requisiti per i nuovi cluster:

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

  • La regione Google Cloud impostata in stackdriver.clusterLocation deve essere uguale a quella impostata in cloudAuditLogging.clusterLocation. Inoltre, se gkeOnPremAPI.enabled è true, la stessa regione deve essere impostata in gkeOnPremAPI.location.

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

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 in gkeConnect.projectID e stackdriver.projectID.

  • La regione Google Cloud impostata in cloudAuditLogging.clusterLocation deve essere uguale a quella impostata in stackdriver.clusterLocation. Inoltre, se gkeOnPremAPI.enabled è true, la stessa regione deve essere impostata in gkeOnPremAPI.location.

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

clusterBackup

Se vuoi abilitare il backup del cluster di amministrazione, imposta clusterBackup.datastore sul datastore vSphere in cui 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 abilitare la crittografia dei secret sempre attivi, compila la sezione secretsEncryption.

osImageType

Decidi quale tipo di immagine del sistema operativo vuoi utilizzare per i nodi del cluster di amministrazione e compila la sezione osImageType di conseguenza.

Esempio di file di configurazione compilati

Ecco un esempio di file di blocco IP compilato e file di configurazione del cluster di amministrazione compilato. La configurazione attiva alcune delle funzionalità disponibili, ma non tutte.

vc-01-ipblock.yaml

blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.10
      hostname: admin-host1
    - ip: 172.16.20.11
      hostname: admin-host2
    - ip: 172.16.20.12
      hostname: admin-host3
    - ip: 172.16.20.13
      hostname: admin-host4
    - ip: 172.16.20.14
      hostname: admin-host5
    - ip: 172.16.20.15
      hostname: admin-host6
    - ip: 172.16.20.16
      hostname: admin-host7
    - ip: 172.16.20.17
      hostname: admin-host8

vc-01-admin-cluster.yaml

apiVersion: v1
kind: AdminCluster
name: "gke-admin-01"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.11.0-gke.543-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"
  dataDisk: "vc01-admin-disk.vmdk"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
    ipBlockFilePath: "vc-01-ipblock.yaml"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "vc01-net-1"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
    addonsVIP: "172.16.20.60"
  kind: "MetalLB"
antiAffinityGroups:
  enabled: true
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 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, 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. Ottieni immagini 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 di VM.

  • Se utilizzi un registro Docker privato, esegue il push delle immagini container al registro.

  • Facoltativamente, convalida le attestazioni di build delle immagini container, verificando in questo modo che le immagini siano state create e firmate da Google e siano pronte per il deployment.

4. (Facoltativo) Crea un bilanciatore del carico di Seesaw

Sono disponibili diverse opzioni di bilanciamento del carico per il cluster di amministrazione: LB Metal, Seesaw, F5 BIG-IP o manuale.

Se hai scelto di utilizzare il bilanciatore del carico di Seesaw, esegui il passaggio descritto in questa sezione. In caso contrario, puoi saltare questa sezione.

Crea e configura le VM per il tuo bilanciatore del carico Seesaw:

gkectl create loadbalancer --config ADMIN_CLUSTER_CONFIG

5. Crea il cluster di amministrazione

Crea il cluster di amministrazione:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Riprendi la creazione del cluster di amministrazione in seguito a un errore

Se la creazione del cluster di amministrazione non va a buon fine 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. Questo file kubeconfig ti servirà 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, è stato creato un file di checkpoint nella stessa cartella del datastore del disco dati del cluster di amministrazione. Il nome predefinito di questo file è DATA_DISK_NAME‑checkpoint.yaml. Se la lunghezza di DATA_DISK_NAME è superiore 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 di amministrazione e viene utilizzato per gli upgrade futuri. Non eliminare questo file a meno che tu non stia seguendo la procedura per l'eliminazione di un cluster di amministrazione.

Se hai abilitato la crittografia delle VM nell'istanza di vCenter Server, devi disporre del privilegio Operazioni crittografiche.Accesso diretto prima di creare o eseguire l'upgrade del cluster di amministrazione. In caso contrario, il checkpoint non verrà caricato. Se non riesci a ottenere questo privilegio, puoi disabilitare il caricamento del file del 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 quando esegui 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:

gke-admin-master-hdn4z            Ready    control-plane,master ...
gke-admin-node-7f46cc8c47-g7w2c   Ready ...
gke-admin-node-7f46cc8c47-kwlrs   Ready ...

7. 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 a un'altra posizione. Quindi, se perdi l'accesso alla workstation di amministrazione o se il file kubeconfig sulla workstation di amministrazione viene eliminato accidentalmente, hai 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 eventuali problemi di connettività al cluster di amministrazione e analizzarli.

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 Risolvere i problemi relativi alla creazione e all'upgrade del cluster.

Passaggi successivi

Crea un cluster utente