Creazione di un cluster utente

Questo documento mostra come creare un cluster utente per GKE su VMware. Un cluster utente è un luogo in cui puoi eseguire i carichi di lavoro. Ogni cluster utente è associato a un cluster di amministrazione.

Per ulteriori dettagli sui cluster di amministrazione e sui cluster utente, consulta la panoramica dell'installazione.

Panoramica della procedura

Di seguito sono riportati i passaggi principali della creazione di un cluster utente:

  1. Connettiti alla workstation di amministrazione
    La workstation di amministrazione è una VM che dispone degli strumenti necessari per creare un cluster utente.
  2. Compila i file di configurazione
    Specifica i dettagli per il tuo nuovo cluster completando un file di configurazione del cluster utente, un file di configurazione delle credenziali ed eventualmente un file dei blocchi IP.
  3. (Facoltativo) Crea un bilanciatore del carico di Seesaw
    Se hai scelto di utilizzare il bilanciamento del carico di Seesaw, esegui gkectl create loadbalancer.
  4. (Facoltativo) Importa le immagini del sistema operativo in vSphere ed esegui il push delle immagini container nel registro privato, se applicabile.
    Esegui gkectl prepare.
  5. Creazione di un cluster utente
    Esegui gkectl create cluster per creare un cluster come specificato nel file di configurazione.
  6. Verifica che il cluster utente sia in esecuzione
    Utilizza kubectl per visualizzare i nodi del cluster.

Al termine di questa procedura, avrai un cluster utente in esecuzione in cui puoi eseguire il deployment dei tuoi carichi di lavoro.

Prima di iniziare

  • Assicurati di aver creato una workstation di amministrazione e un cluster di amministrazione.

  • 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 utente.

  • Guarda avanti, la sezione vcenter. Valuta se vuoi utilizzare cluster vSphere separati per il tuo cluster di amministrazione e i cluster utente e se vuoi utilizzare data center distinti.

  • Guarda avanti nella sezione nodePools. Pensa a quanti pool di nodi ti servono e a quale sistema operativo vuoi eseguire in ciascuno dei tuoi pool.

1. Connettiti alla workstation di amministrazione

Ottieni una connessione SSH alla tua workstation di amministrazione.

Ricorda che gkeadm ha attivato il tuo account di servizio di accesso per componenti sulla workstation di amministrazione.

Esegui tutti i passaggi rimanenti di questo argomento sulla tua workstation di amministrazione nella home directory.

2. Compila il file di configurazione

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

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

Imposta il campo name su un nome a tua scelta per il cluster utente.

gkeOnPremVersion

Questo campo è già compilato. Specifica la versione di GKE su VMware. Ad esempio, 1.11.0-gke.543

vCenter

I valori che imposti nella sezione vCenter del file di configurazione del cluster di amministrazione sono globali. ovvero al cluster di amministrazione e ai cluster utente associati.

Per ogni cluster utente che crei, puoi eseguire l'override di alcuni dei valori vCenter globali.

Per eseguire l'override dei valori vCenter globali, compila i campi pertinenti nella sezione vCenter del file di configurazione del cluster utente.

In particolare, potresti voler utilizzare cluster vSphere separati per il cluster di amministrazione e i cluster utente, nonché utilizzare data center distinti per il cluster di amministrazione e i cluster utente.

Utilizza un data center e un cluster vSphere

L'opzione predefinita prevede l'utilizzo di un data center e un cluster vSphere sia per il cluster di amministrazione che per qualsiasi cluster utente. I valori nel file di configurazione del cluster di amministrazione vengono utilizzati anche per il cluster utente. Non impostare alcun valore vCenter nel file di configurazione del cluster utente.

Crea un cluster utente in un cluster vSphere separato

Se vuoi creare un cluster utente all'interno del proprio cluster vSphere, specifica un valore per vCenter.cluster nel file di configurazione del cluster utente.

Se il cluster di amministrazione e il cluster utente si trovano in cluster vSphere separati, possono trovarsi nello stesso data center o in data center diversi.

Crea un cluster utente con un data center separato

Il cluster utente e il cluster di amministrazione possono trovarsi in data center diversi. Anche in questo caso, si trovano in cluster vSphere separati.

Se specifichi vCenter.datacenter nel file di configurazione del cluster utente, devi specificare anche vCenter.datastore e vCenter.networkName e vCenter.cluster o vCenter.resourcePool.

Per utilizzare data center diversi per il cluster di amministrazione e il cluster utente, ti consigliamo di creare un datastore separato per ogni piano di controllo del cluster utente nel data center del cluster di amministrazione, in modo che il piano di controllo del cluster di amministrazione e i piani di controllo del cluster utente abbiano isolati i domini di errore del datastore. Sebbene sia possibile utilizzare il datastore del cluster di amministrazione per i nodi del piano di controllo del cluster utente, i nodi del piano di controllo del cluster utente e il cluster di amministrazione vengono inseriti nello stesso dominio di errore del datastore.

Account vCenter diverso per un cluster utente nel proprio data center

Un cluster utente può utilizzare un account vCenter diverso, con vCenter.credentials diverso, dal cluster di amministrazione. L'account vCenter per il cluster di amministrazione deve accedere al data center del cluster di amministrazione, mentre l'account vCenter per il cluster utente deve accedere solo al data center del cluster utente.

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 network come necessario:

  • Se hai deciso di utilizzare indirizzi IP statici per i nodi del cluster utente, 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 il bilanciatore del carico di Seesaw, la sezione network.hostconfig è obbligatoria anche se intendi utilizzare DHCP per i nodi del cluster.

  • I valori di 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 il tuo cluster utente. Sono inclusi i nodi nel cluster utente e quelli nel cluster di amministrazione che eseguono il piano di controllo per il cluster utente. Per una spiegazione del numero di indirizzi IP necessari, consulta Pianificare gli indirizzi IP.

Regole firewall per un cluster utente con un valore network.vCenter.networkName separato

Nei rispettivi file di configurazione, il cluster di amministrazione e il cluster utente possono utilizzare valori network.vCenter.networkName separati che rappresentano diverse VLAN e data center diversi. Tuttavia, è necessario consentire la seguente comunicazione tra VLAN.

  • I nodi utente possono accedere alle porte 443 e 8132 sull'indirizzo VIP del piano di controllo del cluster utente e ricevere da loro i pacchetti di reso.

loadBalancer

Imposta un VIP per il server API Kubernetes del tuo cluster utente. Metti da parte un altro VIP per il servizio in entrata del cluster utente. Fornisci i tuoi VIP come valori per loadBalancer.vips.controlPlaneVIP e loadBalancer.vips.ingressVIP.

Per maggiori informazioni, vedi VIP nella subnet del cluster utente e VIP nella subnet del cluster di amministrazione.

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

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

enableDataplaneV2

Decidi se abilitare Dataplane V2 per il tuo cluster utente e imposta enableDataplaneV2 di conseguenza.

enableWindowsDataplaneV2

Se prevedi di avere un pool di nodi Windows, decidi se abilitare Windows Dataplane V2 e impostare enableWindowsDataplaneV2 di conseguenza.

advancedNetworking

Se prevedi di creare un gateway NAT in uscita, imposta advancedNetworking su true.

multipleNetworkInterfaces

Decidi se configurare più interfacce di rete per i pod e imposta di conseguenza multipleNetworkInterfaces.

storage

Se vuoi disabilitare il deployment dei componenti CSI di vSphere, imposta storage.vSphereCSIDisabled su true.

masterNode

Il piano di controllo per il cluster utente viene eseguito sui nodi nel cluster di amministrazione.

Nella sezione masterNode, puoi specificare il numero di nodi del piano di controllo che vuoi per il tuo cluster utente. Puoi inoltre specificare un datastore per i nodi del piano di controllo e se vuoi abilitare il ridimensionamento automatico dei nodi.

nodePools

Un pool di nodi è un gruppo di nodi in un cluster che hanno tutti la stessa configurazione. Ad esempio, i nodi in un pool potrebbero eseguire Windows e quelli in un altro pool potrebbero eseguire Linux.

Devi specificare almeno un pool di nodi compilando la sezione nodePools.

Per ulteriori informazioni, consulta Pool di nodi e Creazione e gestione dei pool di nodi.

antiAffinityGroups

Imposta antiAffinityGroups.enabled su true o false.

Questo campo specifica se GKE su VMware crea regole di anti-affinità Distributed Resource Scheduler (DRS) per i nodi del cluster utente, in modo che siano distribuiti in almeno tre host fisici nel data center.

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

gkeConnect

Il cluster utente deve essere registrato in un parco risorse Google Cloud.

Compila la sezione gkeConnect per specificare un progetto host del parco risorse e un account di servizio associato.

usageMetering

Se vuoi abilitare la misurazione dell'utilizzo per il tuo cluster, compila la sezione usageMetering.

cloudAuditLogging

Se vuoi integrare gli audit log del server API Kubernetes del tuo cluster con Cloud Audit Logs, compila la sezione cloudAuditLogging.

Esempio di file di configurazione compilati

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

vc-01-ipblock-user.yaml

blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.21
      hostname: user-host1
    - ip: 172.16.20.22
      hostname: user-host2
    - ip: 172.16.20.23
      hostname: user-host3
    - ip: 172.16.20.24
      hostname: user-host4
    - ip: 172.16.20.25
      hostname: user-host5
    - ip: 172.16.20.26
      hostname: user-host6

vc-01-user-cluster.yaml

apiVersion: v1
kind: UserCluster
name: "gke-user-01"
gkeOnPremVersion: 1.11.0-gke.543
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: dhcp
    ipBlockFilePath: "vc-01-ipblock-user.yaml"
  serviceCIDR: 10.96.0.0/20
  podCIDR: 192.168.0.0/16
  vCenter:
    networkName: "vc01-net-1"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.32"
    ingressVIP: "172.16.21.30"
  kind: "MetalLB"
   metalLB:
    addressPools:
    - name: "gke-address-pool-01"
      addresses:
      - "172.16.21.30 - 172.16.21.39"
enableDataplaneV2: true
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 1
nodePools:
- name: "gke-node-pool-01"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  osImageType: "ubuntu_containerd"
antiAffinityGroups:
  enabled: true
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"
autoRepair:
  enabled: true

Convalidare il file di configurazione

Dopo aver compilato il file di configurazione del cluster utente, esegui gkectl check-config per verificare che il file sia valido:

gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig per il cluster di amministrazione

  • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente

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. (Facoltativo) Crea un bilanciatore del carico di Seesaw per il cluster utente

Se hai scelto di utilizzare il bilanciatore del carico integrato di Seesaw, esegui il passaggio indicato in questa sezione. In caso contrario, salta questa sezione.

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

gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

4. (Facoltativo) Importa immagini sistema operativo in vSphere ed esegui il push delle immagini container in un registro privato

Esegui gkectl prepare se si verifica una delle seguenti condizioni:

  • Il cluster utente si trova in un data center vSphere diverso dal cluster di amministrazione.

  • Il cluster utente ha un vCenter Server diverso da quello del cluster di amministrazione.

  • Il cluster utente utilizza un Container Registry privato diverso dal registry privato utilizzato dal cluster di amministrazione.

gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --bundle-path BUNDLE \
    --user-cluster-config USER_CLUSTER_CONFIG

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione

  • BUNDLE: il percorso del file del pacchetto. Questo file si trova sulla tua workstation di amministrazione in /var/lib/gke/bundles/. Ad esempio:

    /var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
    
  • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente

5. Creazione di un cluster utente

Crea un cluster utente:

gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Individua il file kubeconfig del cluster utente

Il comando gkectl create cluster crea un file kubeconfig denominato USER_CLUSTER_NAME-kubeconfig nella directory corrente. Questo file kubeconfig ti servirà in un secondo momento per interagire con il cluster utente.

Il file kubeconfig contiene il nome del cluster utente. Per visualizzare il nome del cluster, puoi eseguire:

kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG

L'output mostra il nome del cluster. Ad esempio:

NAME
my-user-cluster

Se vuoi, puoi modificare il nome e la posizione del file kubeconfig.

6. Verifica che il cluster utente sia in esecuzione

Verifica che il cluster utente sia in esecuzione:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Sostituisci USER_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster utente.

L'output mostra i nodi del cluster utente. Ad esempio:

my-user-cluster-node-pool-69-d46d77885-7b7tx   Ready ...
my-user-cluster-node-pool-69-d46d77885-lsvzk   Ready ...
my-user-cluster-node-pool-69-d46d77885-sswjk   Ready ...

Risoluzione dei problemi

Vedi Risolvere i problemi relativi alla creazione e all'upgrade dei cluster.

Passaggi successivi