Esecuzione dei controlli preflight

Questa pagina spiega come eseguire i controlli preflight sul file di configurazione di GKE su VMware.

Panoramica

Durante l'installazione, esegui gkectl create-config per generare un file di configurazione per GKE su VMware. Il file di configurazione determina l'installazione: dovrai fornire informazioni sul tuo ambiente vSphere, sulla rete e sul bilanciatore del carico e sull'aspetto dei cluster. Puoi generare un file di configurazione prima o dopo aver creato una workstation di amministrazione. Per superare alcuni controlli, devono essere eseguiti dalla workstation di amministrazione.

Dopo aver modificato il file in base alle esigenze del tuo ambiente e dei tuoi cluster, puoi utilizzarlo per creare i cluster nel tuo ambiente on-prem.

Prima di creare i cluster, esegui gkectl check-config per convalidare il file di configurazione con diversi controlli preflight. Se il comando restituisce messaggi FAILURE, risolvi i problemi e convalida di nuovo il file. Se la convalida di una determinata funzionalità restituisce messaggi WARNING, devi risolvere i problemi sottostanti prima di poter utilizzare la funzionalità.

Modalità di controllo preflight e ignorare le convalide

gkectl check-config ha una modalità predefinita e una modalità veloce:

  • Nella modalità predefinita, il comando convalida in modo completo ogni campo. Inoltre, la modalità predefinita crea macchine virtuali (VM) vSphere temporanee come parte delle convalide, che possono richiedere più tempo.

  • In modalità veloce, il comando ignora i controlli che creano VM di test ed esegue solo quelli rapidi. Puoi attivare la modalità veloce passando il flag --fast.

Puoi saltare convalide specifiche trasmettendo altri flag, descritti in gkectl check-config --help.

Traffico tra la workstation di amministrazione e le VM di test

In modalità predefinita, il controllo preflight crea delle VM di test per il cluster. Ogni VM di test esegue un server HTTP in ascolto sulla porta 443 e sulle porte dei nodi specificate nel file di configurazione.

Alle VM di test vengono assegnati diversi indirizzi IP. Se il file di configurazione indica che i nodi del cluster riceveranno gli indirizzi IP da un server DHCP, il controllo preflight utilizza un server DHCP per assegnare gli indirizzi IP alle VM di test. Se il file di configurazione indica che ai nodi del cluster verranno assegnati indirizzi IP statici, il controllo preflight assegna gli indirizzi IP statici specificati nei file di blocchi IP alle VM di test.

Il controllo preflight, in esecuzione sulla workstation di amministrazione, invia richieste HTTP alle VM di test utilizzando i vari indirizzi IP assegnati alle VM. Le richieste vengono inviate alla porta 443 e alle porte dei nodi specificate nel file di configurazione.

Quando devo eseguire i controlli preflight?

Come best practice, conviene eseguire i controlli preflight in anticipo e prima di tentare di creare i cluster. L'esecuzione anticipata dei controlli preflight può aiutarti a confermare di aver configurato correttamente l'ambiente vSphere e la rete.

Se utilizzi GKE su VMware versione 1.2.0-gke.6, esegui gkectl check-config due volte:

  1. Esegui gkectl check-config --fast.

  2. Esegui gkectl prepare.

  3. Esegui di nuovo gkectl check-config, senza il flag --fast.

Il motivo per l'esecuzione due volte è che gkectl prepare carica il modello di VM per l'immagine del sistema operativo del nodo cluster nel tuo ambiente vSphere. Il modello di VM deve essere attivo prima di eseguire il set completo di convalide.

In GKE su VMware versione 1.2.1 e successive, il comando check-config carica autonomamente il modello di VM, in modo da poter eseguire il set completo di convalide prima di eseguire gkectl prepare:

  1. Esegui gkectl check-config, senza il flag --fast.

  2. Esegui gkectl prepare.

I controlli preflight convalidano i valori che hai fornito al file. Non è necessario compilare ogni campo del file di configurazione per eseguire i controlli preflight sul file, ma puoi convalidare il file in modo iterativo man mano che completi i campi. Ad esempio, se vuoi solo convalidare la tua configurazione vCenter, puoi compilare solo i campi vcenter ed eseguire i controlli su questi.

Tieni presente che la configurazione di GKE su VMware diventa immutabile dopo aver creato i cluster. L'esecuzione dei controlli preflight consente di scoprire e risolvere i problemi nella configurazione prima di creare i cluster.

Conservazione della VM di test per il debug

A partire da GKE su VMware versione 1.2.1, il comando gkectl check-config ha un flag --cleanup.

Quando gkectl check-config esegue un set completo di convalide, crea una VM di test e una chiave SSH associata. Se vuoi conservare la VM di test e la chiave SSH per scopi di debug, imposta --cleanup su false.

Il valore predefinito di --cleanup è true.

Elenco dei controlli preflight

I controlli preflight convalidano ogni campo del file di configurazione. Ecco i controlli attuali:

Categoria Descrizione
File di configurazione

In genere verifica che ogni campo e ogni specifica abbiano il formato e i valori previsti.

Ignorata con flag --skip-validation-config.

Salta la convalida del campo proxy con il flag --skip-validation-proxy.

Internet

Convalida l'accesso a internet per i domini richiesti. Convalida la configurazione del proxy in base a dove viene eseguito gkectl.

Azione saltata con il flag --skip-validation-internet.

Immagine sistema operativo

Convalida l'esistenza di immagini del sistema operativo.

Azione saltata con il flag --skip-validation-os-images.

Versione del sistema operativo Windows

Convalida la versione del sistema operativo Windows.

Verifica che la versione Windows sia supportata quando crei workstation di amministrazione con lo strumento a riga di comando gkeadm. Tieni presente che lo strumento gkeadm è disponibile per Windows 10, Windows Server 2019 e Linux, ma non esiste alcun controllo preflight per Linux. Questa convalida inizia dalla versione 1.4.1.

Versione cluster

Verifica che la versione del cluster di amministrazione, la versione del cluster utente e la versione gkectl corrispondano per la creazione e l'upgrade.

Azione saltata con il flag --skip-validation-cluster-version.

Integrità del cluster

Verifica che il cluster di amministrazione o utente sia integro prima dell'upgrade:

  • Cluster di amministrazione: verifica che includa il servizio Kubernetes, lo stato dei componenti, i DaemonSet, i deployment, le macchine e i pod.
  • Cluster utente: il controllo include il servizio Kubernetes, gli endpoint API del cluster, gli StatefulSet, i deployment, i deployment delle macchine, le macchine e i pod.

Azione saltata con il flag --skip-validation-cluster-health.

In entrata Controlla se il cluster utente ha un oggetto gateway Istio prima dell'upgrade.
IP riservato

Verifica che sia disponibile un numero sufficiente di indirizzi IP per la creazione e l'upgrade.

Azione saltata con il flag --skip-validation-reserved-ips.

Google Cloud
ID progetto
[*].projectid
Convalida gli ID progetto forniti in vari campi della configurazione. Se manca l'ID progetto, la convalida viene saltata.
Registra account di servizio
registerserviceaccountkeypath
Verifica che l'account di servizio disponga dei ruoli IAM richiesti. Verifica che le API richieste siano abilitate.
Connetti account di servizio
agentserviceaccountkeypath
Verifica che l'account di servizio disponga dei ruoli IAM richiesti. Verifica che le API richieste siano abilitate.
Account di servizio Google Cloud Observability
stackdriver.serviceaccountkeypath
Verifica che l'account di servizio disponga dei ruoli IAM richiesti. Verifica che le API richieste siano abilitate.
Azione saltata con il flag --skip-validation-gcp.
Accesso all'app gcr.io/gke-on-prem-release Convalida l'accesso al registro di immagini container di GKE su VMware ospitato in Container Registry.

Ignorata dal flag --skip-validation-docker.

Registro Docker
privateregistryconfig
Se configurato, convalida l'accesso al registro Docker.

Azione saltata con il flag --skip-validation-docker.

vCenter Verifica che siano presenti tutti i campi vcenter e verifica anche quanto segue:
Credenziali
vcenter.credentials.[*]
Convalida l'autenticazione a vCenter Server utilizzando le credenziali utente fornite.
Versione vSphere Verifica che le versioni di vCenter ed ESXi siano supportate.
Data center
vcenter.datacenter
Verifica che il data center vSphere esista.
Datastore
vcenter.datastore
Verifica che il datastore vSphere esista.
Disco dati
vcenter.datadisk
Convalida che il disco della macchina virtuale (VMDK) vSphere non esiste già in vSphere.
Pool di risorse
vcenter.resourcepool
Verifica che il pool di risorse vSphere esista.
Rete
vcenter.network
Verifica che la rete vSphere esista.

Azione saltata con il flag --skip-validation-infra.

Archiviazione
Driver CSI vSphere Verifica che il driver CSI vSphere sia abilitato in caso di PersistentVolume di vSphere Intree o CSI. In altre parole, nel file di configurazione del cluster utente, storage.vSphereCSIDisabled non è impostato su true.
Parametri StorageClass

Convalida che l'oggetto StorageClass non contiene nessuno dei seguenti parametri non supportati:

  • guasto dell'hosttollerato
  • provisioning forzato
  • conservazione della cache
  • disctripes
  • conservazione dello spazio degli oggetti
  • iopslimit
  • formato disco

Se il cluster ha StorageClass con uno dei parametri precedenti, ciò potrebbe significare che è necessario eseguire la migrazione dei volumi.

Per maggiori informazioni, consulta le Considerazioni sulla migrazione dei volumi In-Tree vSphere e la sezione dei problemi noti sugli upgrade nella versione 1.15.

Annotazioni in vSphere in-tree PersistentVolume e PersistentVolumeClaim creati in modo statico

Prima dell'upgrade, controlla le annotazioni negli oggetti PersistentVolume in-tree di vSphere e negli oggetti PersistentVolumeClaim di vSphere:

  • Gli oggetti PersistentVolume in-tree creati in modo statico hanno l'annotazione pv.kubernetes.io/provisioned-by: kubernetes.io/vsphere-volume
  • Gli oggetti vSphere PersistentVolumesClaims creati in modo statico hanno l'annotazione volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume e volume.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume

Se il cluster contiene oggetti PersistentVolume in-tree vSphere o PersistentVolumeClaim vSphere senza queste annotazioni, devi annotare gli oggetti PersistentVolume e PersistentVolumeClaim prima di continuare, consulta Considerazioni sulla migrazione di volumi vSphere In-Tree.

Carico di lavoro CSI

Verifica che il cluster possa eseguire correttamente un carico di lavoro che utilizza un PersistentVolume di cui è stato eseguito il provisioning dinamico e creato tramite il driver CSI vSphere.

Questo controllo viene eseguito durante l'upgrade e solo se sono presenti volumi vSphere in-tree e non volumi CSI vSphere.

Questo controllo:

  1. Controlla che non siano rimaste risorse rimanenti dalle esecuzioni precedenti della convalida.
  2. Trova o crea un oggetto StorageClass con il campo provisioner impostato sul campo provisioner impostato su "csi.vSsfera.vmware.com".
    1. Nei cluster utente seleziona CSI StorageClass standard-rwo.
    2. Nei cluster di amministrazione trova un oggetto StorageClass con il campo del provisioner impostato su csi.vsphere.vmware.com. Se non esiste un valore StorageClass nel cluster, il test crea temporaneamente un nuovo oggetto StorageClass CSI e lo utilizza nel controllo.
  3. Crea un oggetto PersistentVolumeClaim nello spazio dei nomi predefinito utilizzando l'oggetto StorageClass trovato o creato nel passaggio precedente e attende che l'oggetto PersistentVolume creato dinamicamente sia nella fase Bound.
  4. Crea un job writer nello spazio dei nomi predefinito che monta l'oggetto PersistentVolume creato in precedenza. Un pod di scrittura viene pianificato e all'avvio scrive una stringa in un file nel file system montato.
  5. Elimina il job dello scrittore e il pod associato.
  6. Crea un job di lettura nello spazio dei nomi predefinito che monta l'oggetto PersistentVolume creato in precedenza. Un pod di lettura è pianificato e all'avvio legge il file scritto dal pod di scrittura, assicurandosi che i dati scritti da questo pod vengano letti correttamente.
  7. Elimina il job del lettore e il pod associato.
  8. Elimina l'oggetto PersistentVolumeClaim, di conseguenza anche l'oggetto PersistentVolume viene eliminato.
  9. Elimina il valore StorageClass se è stato creato durante il test.

Host per gruppi anti-affinità

Verifica che il numero di host vCenter fisici sia almeno tre se antiAffinityGroups è abilitato.

Per disabilitare antiAffinityGroups per un cluster, consulta antiAffinityGroups.enabled e questa nota di rilascio.

Azione saltata con il flag --skip-validation-infra.

Bilanciatore del carico

Convalida la configurazione del bilanciamento del carico:

  • Se la modalità di bilanciamento del carico è integrata (lbmode: Integrated), verifica che tutti i campi bigip siano presenti nelle specifiche admincluster e usercluster.
  • Se la modalità di bilanciamento del carico è manuale (lbmode: Manual), verifica che tutti i campi manuallbspec siano presenti nelle specifiche admincluster e usercluster.
Bilanciamento del carico integrato
bigip.credentials.[*] Convalida le tue credenziali BIG-IP di F5.
bigip.partition Verifica che la partizione fornita esista.
Ruolo utente BIG-IP F5 Verifica che l'utente BIG-IP di F5 fornito disponga del ruolo Amministratore o Amministratore risorse.
bigip.vips.[*] Convalida i VIP forniti.

Ignorata con i flag --fast o --skip-validation-load-balancer.

Bilanciamento del carico manuale
Configurazione della rete Convalida gli IP dei nodi, i VIP, ecc.

Ignorata con i flag --fast o --skip-validation-load-balancer.

[*].manuallbspec.[*] Convalida le porte dei nodi fornite.
Azione saltata con il flag --skip-validation-load-balancer.
Networking

Verifica che gli intervalli CIDR, i VIP e gli IP statici (se configurati) forniti siano disponibili. Verifica che gli indirizzi IP non si sovrappongano.

Azione saltata con il flag --skip-validation-net-config.

DNS

Verifica che il server DNS fornito sia disponibile.

Azione saltata con il flag --skip-validation-dns.

NTP

Verifica che il server NTP (Network Time Protocol) fornito sia disponibile.

Azione saltata con il flag --skip-validation-tod.

VIP

Invia un ping ai VIP forniti. Questo controllo ha esito positivo se il ping non va a buon fine, a indicare che il VIP previsto non è già stato preso.

Ignorata con il flag --skip-validation-vips.

IP dei nodi

Invia un ping agli indirizzi IP dei nodi forniti. Questo controllo ha esito positivo se il ping non va a buon fine, il che indica che l'IP del nodo previsto non è già stato preso.

Ignorata con il flag --skip-validation-node-ips.

Risultati del controllo preflight

I controlli preflight possono restituire i seguenti risultati:

SUCCESS
Il campo e il relativo valore hanno superato il controllo.
FAILURE
Il campo e/o il relativo valore non hanno superato il controllo. Se un controllo restituisce un messaggio FAILURE, risolvi i problemi e convalida di nuovo il file.
IGNORATO

Il controllo è stato ignorato, probabilmente perché non è pertinente alla tua configurazione. Ad esempio, se utilizzi un server DHCP, i controlli DNS e degli IP dei nodi, attinenti solo a una configurazione IP statico, vengono ignorati.

Se passi un flag che ignora una convalida, il controllo ignorato non restituisce un risultato IGNORATO; piuttosto, la convalida non viene eseguita e non viene visualizzata affatto nell'output comando.

SCONOSCIUTO

Lo skip ha restituito un codice diverso da zero. Puoi considerare i risultati UNKNOWN come controlli non superati. UNKNOWN in genere indica che il controllo non è riuscito a eseguire alcuni pacchetti di sistema, ad esempio la mancata esecuzione di nslookup o di gcloud.

Disponibile a breve

I seguenti controlli preflight verranno aggiunti in una release futura:

  • Server NTP

Esecuzione dei controlli preflight

Per eseguire i controlli preflight, esegui il comando seguente:

gkectl check-config --config [CONFIG]

dove [CONFIG] è il percorso del file di configurazione GKE su VMware

Esecuzione in modalità veloce

Se preferisci, puoi eseguire i controlli preflight in "modalità veloce", che salta le convalide che creano VM di test temporanee, come le convalide del VIP e dell'IP del nodo per il bilanciamento del carico. Per farlo, trasmetti --fast:

gkectl check-config --config [CONFIG] --fast

Ignorare convalide specifiche

Puoi passare i flag per saltare in modo granulare convalide specifiche come DNS, proxy e networking. Ogni flag di skip è preceduto da --skip-[VALIDATION].

Per scoprire di più sui flag di skip disponibili, esegui il comando seguente. Facoltativamente, consulta il riferimento gkectl check-config:

gkectl check-config --help

Ad esempio, per saltare le convalide del bilanciatore del carico:

gkectl check-config --config my-config.yaml --skip-validation-load-balancer 

Annullamento dei controlli preflight in corso

Se hai iniziato a eseguire i controlli preflight e vuoi annullare l'operazione, premi due volte Ctrl + C. Se un controllo preflight ha creato una VM di test, l'annullamento dovrebbe anche eliminare automaticamente la VM.

Pulizia di una VM di test

Se dopo il completamento dei controlli preflight una VM di test viene lasciata in uso, puoi eliminarla da vCenter. Una VM di test ha un nome simile al seguente:

check-config-[dhcp|static]-[random number]

Per eliminare la VM:

  1. Fai clic con il tasto destro del mouse sulla VM, quindi fai clic su Spegnimento > Spegni

  2. Dopo che la VM si è spenta, fai di nuovo clic con il pulsante destro del mouse sulla VM e fai clic su Elimina dal disco.

Esempio

Di seguito è riportato un esempio dell'output del comando. In questo esempio, la configurazione in fase di convalida utilizza la modalità di bilanciamento del carico integrata e IP statici senza un registro Docker esterno:

- Validation Category: Config Check
    - [SUCCESS] Config

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: GCP
    - [SUCCESS] GCP Service
    - [SUCCESS] GCP Service Account

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

- Validation Category: vCenter
    - [SUCCESS] Credentials
    - [SUCCESS] Version
    - [SUCCESS] Datacenter
    - [SUCCESS] Datastore
    - [SUCCESS] Data Disk
    - [SUCCESS] Resource Pool
    - [SUCCESS] Network
    - [SUCCESS] VSphere CSI Driver

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster F5 (credentials, partition and user role)
    - [SUCCESS] User Cluster F5 (credentials, partition and user role)

- Validation Category: Network Configuration
    - [SUCCESS] CIDR, VIP and static IP (availability and overlapping)

- Validation Category: DNS
    - [SUCCESS] DNS (availability)

- Validation Category: VIPs
    - [SUCCESS] ping (availability)

- Validation Category: Node IPs
    - [SUCCESS] ping (availability)

Now running slow validation checks. ...

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with admin cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with user cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster VIP and NodeIP
    - [SUCCESS] Admin Cluster F5 Access
    - [SUCCESS] User Cluster VIP and NodeIP
    - [SUCCESS] User Cluster F5 Access

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: vCenter on test VMs
    - [SUCCESS] Test VM: VCenter Access and Permission

- Validation Category: DNS on test VMs
    - [SUCCESS] Test VM: DNS Availability

- Validation Category: TOD on test VMs
    - [SUCCESS] Test VM: TOD Availability

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

Deleting test VMs with admin cluster configuration...  DONE
Deleting test VMs with user cluster configuration...  DONE

Problemi noti

  • Per la versione 1.3.0-gke.16:

    Devi eseguire i controlli di convalida rapida, gkectl check-config --fast, per i controlli preflight se si applicano entrambe le seguenti condizioni:

    1. Hai configurato GKE su VMware per l'utilizzo di un proxy.

    2. Hai installato uno dei seguenti bundle:

      • Il bundle /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz della pagina Download.
      • Il bundle /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz dalla workstation di amministrazione.

    Puoi eseguire il set completo di convalida solo se hai installato l'intero bundle. Ad esempio: /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16-full.tgz

  • Per la versione 1.2.0-gke.6:

    Se utilizzi pool di risorse nidificati o il pool di risorse predefinito, gkectl check-config non riesce quando provi a eseguire un set completo di convalide. Tuttavia, puoi eseguire un insieme più ridotto di convalide passando il flag --fast.

    gkectl check-config --config [CONFIG] --fast

Passaggi successivi