Crea un cluster utente (Controlplane V2)

Questo documento mostra come creare un cluster utente con Controlplane V2 abilitato.

Con Controlplane V2, il piano di controllo per un cluster utente viene eseguito su uno o più nodi nel cluster utente stesso. Controlplane V2 è l'impostazione predefinita e consigliata per la creazione del cluster.

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) Importa le immagini del sistema operativo in vSphere ed esegui il push delle immagini container
    registro privato, se applicabile.
    Esegui gkectl prepare.
  4. Creazione di un cluster utente
    Esegui gkectl create cluster per creare un cluster come specificato nel file di configurazione.
  5. 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 tua decisione sul tipo di bilanciatore del carico da utilizzare. Puoi utilizzare il bilanciatore del carico MetalLB in bundle oppure configurare manualmente un bilanciatore del carico a tua scelta. Per il bilanciamento del carico manuale, devi configurare il bilanciatore del carico prima di creare il cluster utente.

  • Guarda avanti nella 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. Valuta anche se vuoi utilizzare istanze separate di vCenter Server.

  • 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.15.0-gke.581

enableControlplaneV2

Imposta enableControlplaneV2 su true.

enableDataplaneV2

Imposta enableDataplaneV2 su true.

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 distinti per il cluster di amministrazione e i cluster utente e utilizzare data center distinti per il cluster di amministrazione e i cluster utente.

Utilizzo di un data center e un cluster vSphere

L'opzione predefinita prevede l'utilizzo di un data center e un cluster vSphere per il cluster di amministrazione e il cluster utente. Per questa opzione, non impostare alcun valore vCenter nel file di configurazione del cluster utente. I valori vCenter verranno ereditati dal cluster di amministrazione.

Utilizzo di cluster vSphere separati

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.

Utilizzo di data center vSphere separati

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.networkName
  • vCenter.datastore o vCenter.storagePolicyName
  • vCenter.cluster o vCenter.resourcePool

Utilizzo di account vCenter separati

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.

Utilizzo di istanze separate di vCenter Server

In determinate situazioni, ha senso creare un cluster utente che utilizza la propria istanza di vCenter Server. In altre parole, il cluster di amministrazione e un cluster utente associato utilizzano istanze diverse di vCenter Server.

Ad esempio, in una località perimetrale, potresti voler avere una macchina fisica che esegue vCenter Server e una o più macchine fisiche che eseguono ESXi. Puoi quindi utilizzare l'istanza locale di vCenter Server per creare una gerarchia degli oggetti vSphere, che includa data center, cluster, pool di risorse, datastore e cartelle.

Compila l'intera sezione vCenter del file di configurazione del cluster utente. In particolare, specifica un valore per vCenter.address diverso dall'indirizzo di vCenter Server specificato nel file di configurazione del cluster di amministrazione. Ad esempio:

vCenter:
  address: "vc-edge.example"
  datacenter: "vc-edge"
  cluster: "vc-edge-workloads"
  resourcePool: "vc-edge-pool
  datastore: "vc-edge-datastore
  caCertPath: "/usr/local/google/home/me/certs/edge-cacert.pem"
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter-edge"
  folder: "edge-vm-folder"

Compila anche il campo network.vCenter.networkName.

network

Decidi in che modo vuoi che i nodi worker ricevano i loro 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.

Se hai deciso di utilizzare indirizzi IP statici per i nodi worker, compila il campo network.ipMode.ipBlockFilePath.

I nodi del piano di controllo per il cluster utente devono ricevere i propri indirizzi IP da un elenco di indirizzi statici da te fornito. anche se i nodi worker ricevono i loro indirizzi da un server DHCP. Per specificare gli indirizzi IP statici per i nodi del piano di controllo, compila la sezione network.controlPlaneIPBlock. Se vuoi un cluster utente ad alta disponibilità, specifica tre indirizzi IP. Altrimenti, specifica un solo indirizzo IP.

Specifica i server DNS e NTP compilando la sezione hostConfig. Questi server DNS e NTP sono destinati ai nodi del piano di controllo. Se utilizzi indirizzi IP statici per i nodi worker, anche questi server DNS e NTP sono destinati ai nodi worker.

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. Per una spiegazione del numero di indirizzi IP necessari, consulta Pianificare gli indirizzi IP.

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.

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.

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

Nella sezione masterNode puoi specificare quanti nodi del piano di controllo vuoi per il tuo cluster utente: uno o tre. Puoi anche specificare un datastore per i nodi del piano di controllo e se vuoi abilitare il ridimensionamento automatico per i nodi del piano di controllo.

Ricorda che hai specificato gli indirizzi IP per i nodi del piano di controllo nella sezione network.controlPlaneIPBlock.

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 worker, 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.

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.

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.

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.

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.

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.

Esempio di file di configurazione compilati

Ecco un esempio di file di blocchi IP e di file di configurazione del cluster utente:

user-ipblock.yaml

blocks:
  - netmask: 255.255.255.0
    gateway: 172.16.21.1
    ips:
    - ip: 172.16.21.2
      hostname: worker-vm-1
    - ip: 172.16.21.3
      hostname: worker-vm-2
    - ip: 172.16.21.4
      hostname: worker-vm-3
    - ip: 172.16.21.5
      hostname: worker-vm-4

user-cluster.yaml

cat user-cluster.yaml
apiVersion: v1
kind: UserCluster
name: "my-user-cluster"
gkeOnPremVersion: 1.15.0-gke.581
enableControlplaneV2: true
enableDataplaneV2: true
network:
  hostConfig:
    dnsServers:
    - "203.0.113.2"
    - "198.51.100.2"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: 10.96.0.0/20
  podCIDR: 192.168.0.0/16
  controlPlaneIPBlock:
    netmask: "255.255.255.0"
    gateway: "172.16.21.1"
    ips:
    - ip: "172.16.21.6"
      hostname: "cp-vm-1"
    - ip: "172.16.21.7"
      hostname: "cp-vm-2"
    - ip: "172.16.21.8"
      hostname: "cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: MetalLB
  metalLB:
    addressPools:
    - name: "address-pool-1"
      addresses:
      - "172.16.21.30-172.16.21.39"
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 3
nodePools:
- name: "worker-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  enableLoadBalancer: true
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

Ecco i punti importanti da comprendere nell'esempio precedente:

  • Gli indirizzi IP statici per i nodi worker sono specificati in un file di blocchi IP. Il file dei blocchi IP ha quattro indirizzi anche se ci sono solo tre nodi worker. L'indirizzo IP aggiuntivo è necessario durante l'upgrade, l'aggiornamento e la riparazione automatica del cluster.

  • I server DNS e NTP sono specificati nella sezione hostConfig. In questo esempio, questi server DNS e NTP sono destinati ai nodi del piano di controllo e ai nodi worker. Questo perché i nodi worker hanno indirizzi IP statici. Se i nodi worker dovessero ottenere i propri indirizzi IP da un server DHCP, questi server DNS e NTP sarebbero solo per i nodi del piano di controllo.

  • Gli indirizzi IP statici per i tre nodi del piano di controllo sono specificati nella sezione network.controlPlaneIPBlock del file di configurazione del cluster utente. Non è necessario un indirizzo IP aggiuntivo in questo blocco.

  • Il campo masterNode.replicas è impostato su 3.

  • Il VIP del piano di controllo e il VIP in entrata sono entrambi nella stessa VLAN dei nodi worker e del piano di controllo.

  • I VIP riservati ai servizi di tipo LoadBalancer sono specificati nella sezione loadBalancer.metalLB.addressPools del file di configurazione del cluster utente. Questi VIP si trovano nella stessa VLAN dei nodi worker e dei nodi del piano di controllo. Il set di VIP specificato in questa sezione deve includere il VIP in entrata e non il VIP del piano di controllo.

  • Il file di configurazione del cluster utente non include una sezione vCenter. Il cluster utente utilizza le stesse risorse vSphere del cluster di amministrazione.

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) 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

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

5. 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:

cp-vm-1       Ready    control-plane,master   18m
cp-vm-2       Ready    control-plane,master   18m
cp-vm-3       Ready    control-plane,master   18m
worker-vm-1   Ready                           6m7s
worker-vm-2   Ready                           6m6s
worker-vm-3   Ready                           6m14s

Esegui l'upgrade di un cluster utente

Segui le istruzioni in Upgrade di Anthos clusters on VMware.

Elimina un cluster

Per eliminare un cluster utente in cui è abilitato Controlplane V2, segui le istruzioni riportate in Eliminare un cluster utente.

Quando elimini un cluster utente in cui è abilitato Controlplane V2, il disco dati viene eliminato automaticamente.

Risoluzione dei problemi

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

Passaggi successivi