Creazione di un cluster utente

In Google Distributed Cloud, i carichi di lavoro vengono eseguiti su uno o più cluster utente. Questo documento mostra come creare un cluster utente. Questa pagina è rivolta ad amministratori, architetti e operatori che configurano, monitorano e gestiscono l'infrastruttura tecnica. Per scoprire di più sui ruoli comuni e su alcuni esempi di attività a cui facciamo riferimento nei contenuti di Google Cloud, consulta Ruoli e attività comuni degli utenti di GKE Enterprise.

Esistono diversi strumenti che puoi utilizzare per creare un cluster di utenti:

  • gkectl
  • Console Google Cloud
  • Google Cloud CLI
  • Terraform

Tre di questi strumenti (la console, l'gcloud CLI e Terraform) sono client dell'API GKE On-Prem.

Per indicazioni su quale strumento utilizzare, consulta Scegliere uno strumento per gestire il ciclo di vita del cluster.

Prima di iniziare

  • Se non l'hai ancora fatto, configura le risorse Google Cloud come descritto in questi documenti:

    Durante la configurazione del progetto host del parco risorse, tieni presente la scelta dello strumento, perché se hai scelto uno dei client dell'API GKE On-Prem, ci sono API aggiuntive che devi abilitare. Per l'elenco delle API, consulta Abilitare le API nel progetto host del parco veicoli.

  • Prima di creare un cluster utente, devi avere un cluster di amministrazione per gestirlo. Se non l'hai ancora fatto, crea una workstation di amministrazione e un cluster di amministrazione.

  • Determina la versione del cluster di utenti che vuoi installare. Quando crei un cluster utente, in genere installi la versione corrispondente a quella del cluster di amministrazione. Tuttavia, puoi installare una versione della patch successiva e, nella versione 1.28 e successive, i cluster utente possono essere fino a 2 versioni secondarie superiori rispetto al cluster di amministrazione.

  • Ti consigliamo vivamente di attivare Controlplane v2. Quando il control plane v2 è attivo, il control plane per il cluster utente viene eseguito su uno o più nodi nel cluster utente stesso. Se prevedi di installare la versione 1.30 o una successiva, è necessaria la versione 2 di Controlplane. L'alternativa è creare un cluster di utenti che utilizza kubeception. Nel caso di kubeception, il control plane per il cluster utente viene eseguito su uno o più nodi del cluster di amministrazione.

  • Consulta il documento di pianificazione degli indirizzi IP e assicurati di avere a disposizione un numero sufficiente di indirizzi IP.

  • Consulta la panoramica del bilanciamento del carico e rivedi la tua decisione sul tipo di bilanciatore del carico che vuoi 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.

  • Valuta quanti pool di nodi sono necessari e quale sistema operativo vuoi eseguire in ciascuno dei pool.

  • Valuta se vuoi utilizzare cluster vSphere distinti per il cluster di amministrazione e per i cluster di utenti e se vuoi utilizzare data center distinti. Valuta anche se vuoi utilizzare istanze separate di vCenter Server.

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

    Con i controlli preliminari lato server, quando crei un cluster utente utilizzando gkectl, i controlli preliminari vengono eseguiti sul cluster di amministrazione anziché localmente sulla workstation di amministrazione. I controlli preliminari lato server vengono eseguiti anche se utilizzi la console Google Cloud, Google Cloud CLI o Terraform per creare un cluster di utenti.

Creazione di un cluster utente

gkectl

Panoramica della procedura

Di seguito sono riportati i passaggi principali per utilizzare gkectl per creare un cluster di utenti:

  1. Connettiti alla workstation di amministrazione
    La workstation di amministrazione è una macchina con gli strumenti necessari per creare un cluster utente.
  2. Compila i file di configurazione
    Specifica i dettagli del nuovo cluster completando un file di configurazione del cluster utente, un file di configurazione delle credenziali e, eventualmente, un file di blocco IP.
  3. (Facoltativo) Importa le immagini del sistema operativo in vSphere e carica le immagini dei container nel registry 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. Verificare 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.

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

Compila i file di configurazione

Esegui questi passaggi sulla workstation di amministrazione.

Quando gkeadm ha creato la tua workstation amministrativa, ha generato un file di configurazione chiamato user-cluster.yaml. Questo file di configurazione serve per creare il cluster di utenti.

Acquisisci familiarità con il file di configurazione esaminando il documento relativo al file di configurazione del cluster utente. Ti consigliamo di tenere aperto questo documento in una scheda o una finestra separata, poiché lo consulterai durante l'esecuzione dei passaggi che seguono.

name

Imposta il campo name sul nome che preferisci per il cluster di utenti.

gkeOnPremVersion

Questo campo è già stato compilato per te. Specifica la versione di Google Distributed Cloud. Ad esempio, 1.30.300-gke.84.

enableControlplaneV2

Per creare un cluster utente con il control plane V2 abilitato, imposta enableControlplaneV2 su true.

Quando il control plane v2 è abilitato, il control plane per il cluster utente viene eseguito sui nodi del cluster utente stesso. Ti consigliamo vivamente di attivare Controlplane V2.

kubeception

Se imposti questo campo su false, il cluster utilizzerà kubecetption. Con kubeception, il piano di controllo per il cluster utente viene eseguito sui nodi del cluster di amministrazione.

Per un cluster kubeception:

  • Imposta enableControlplaneV2 su false.

  • Non compilare la sezione controlPlaneIPBlock.

  • Specifica gli indirizzi IP per i nodi del control plane del cluster utente nel file di blocco IP del cluster di amministrazione.

enableDataplaneV2

Imposta enableDataplaneV2 su true.

vCenter

I valori impostati nella sezione vCenter del file di configurazione del cluster di amministrazione sono globali. ovvero si applicano al cluster di amministrazione e ai relativi cluster utente associati.

Per ogni cluster utente creato, hai la possibilità di eseguire l'override di alcuni valori vCenter globali.

Per sostituire uno dei valori vCenter globali, compila i campi pertinenti nella sezione vCenter del file di configurazione del cluster utente.

In particolare, ti consigliamo di utilizzare cluster vSphere separati per il cluster di amministrazione e i cluster utente, nonché data center separati per il cluster di amministrazione e i cluster utente.

Utilizzo di un data center e di un cluster vSphere

L'opzione predefinita è utilizzare un data center e un cluster vSphere per il cluster di amministrazione e il cluster utente. Per questa opzione, non impostare valorivCenter 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 che si trovi nel proprio cluster vSphere, specifica un valore per vCenter.cluster nel file di configurazione del cluster utente.

Se il cluster amministratore e il cluster utente si trovano in cluster vSphere separati, possono essere nello stesso data center o in data center diversi.

Utilizzo di data center vSphere separati

Il cluster di utenti e il cluster di amministratori possono trovarsi in centri dati diversi. In questo caso, si trovano anche in cluster vSphere separati.

Se specifichi vCenter.datacenter nel file di configurazione del cluster utente, devi anche specificare:

  • vCenter.networkName
  • vCenter.datastore o vCenter.storagePolicyName
  • vCenter.cluster o vCenter.resourcePool

Utilizzo di account vCenter separati

Un cluster di utenti può utilizzare un account vCenter diverso, con vCenter.credentialsdiversi, rispetto al cluster di amministrazione. L'account vCenter per il cluster amministrativo deve avere accesso al data center del cluster amministrativo, mentre l'account vCenter per il cluster utente deve avere accesso solo al data center del cluster utente.

Utilizzo di istanze separate di vCenter Server

In alcuni casi, ha senso creare un cluster utente che utilizzi 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 posizione edge, potresti avere una macchina fisica su cui è in esecuzione vCenter Server e una o più macchine fisiche su cui è in esecuzione ESXi. Potresti quindi utilizzare la tua istanza locale di vCenter Server per creare una gerarchia di oggetti vSphere, inclusi 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 del server vCenter 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 come vuoi che i nodi worker ricevano i loro indirizzi IP. Le opzioni sono:

  • Da un server DHCP configurato in precedenza. Imposta network.ipMode.type su "dhcp".

  • Da un elenco di indirizzi IP statici che fornisci. Imposta network.ipMode.type su "static" e crea un file di blocco IP che fornisca gli indirizzi IP statici. Per un esempio di file di blocco IP, consulta Esempio di file di configurazione compilati.

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

I nodi del control plane per il cluster utente devono ottenere i propri indirizzi IP da un elenco di indirizzi statici da te fornito. Questo accade anche se i nodi worker ricevono i propri indirizzi da un server DHCP. Per specificare indirizzi IP statici per i tuoi nodi del piano di controllo, compila la sezione network.controlPlaneIPBlock. Se vuoi un cluster utente ad alta disponibilità (HA), specifica tre indirizzi IP. In caso contrario, specifica un 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, questi server DNS e NTP sono destinati anche ai nodi worker.

I valori precompilati di network.podCIDR e network.serviceCIDR possono essere lasciati invariati, a meno che non entrino in conflitto con gli indirizzi già in uso nella rete. Kubernetes utilizza questi intervalli per assegnare indirizzi IP ai pod e ai servizi nel cluster.

Indipendentemente dal fatto che tu utilizzi un server DHCP o specifichi un elenco di indirizzi IP statici, devi disporre di indirizzi IP sufficienti per il cluster di utenti. Per una spiegazione del numero di indirizzi IP necessari, consulta Pianifica gli indirizzi IP.

loadBalancer

Metti da parte 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 che vuoi utilizzare. Le opzioni sono:

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

advancedNetworking

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

multipleNetworkInterfaces

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

storage

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

masterNode

Nella sezione masterNode puoi specificare il numero di nodi del piano di controllo che vuoi per il tuo cluster utente: uno o tre. Puoi anche specificare un data store per i nodi del piano di controllo e se vuoi attivare il ridimensionamento automatico per i nodi del piano di controllo.

Ricorda che hai specificato gli indirizzi IP per i nodi del control plane 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 di un pool potrebbero eseguire Windows e quelli di un altro pool Linux.

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

Per saperne di più, consulta Pool di nodi e Creare e gestire i pool di nodi.

antiAffinityGroups

Imposta antiAffinityGroups.enabled su true o false.

Questo campo specifica se Google Distributed Cloud crea regole anti-affinità Distributed Resource Scheduler (DRS) per i tuoi nodi worker, in modo che vengano distribuiti su almeno tre host fisici nel tuo data center.

stackdriver

Se vuoi attivare 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 la stessa della regione impostata in cloudAuditLogging.clusterLocation e gkeConnect.location (se il campo è incluso nel file di configurazione). Inoltre, se gkeOnPremAPI.enabled è true, deve essere impostata la stessa regione in gkeOnPremAPI.location.

Se gli ID progetto e le regioni non sono uguali, la creazione del cluster non va a buon fine.

gkeConnect

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

Compila la sezione gkeConnect per specificare un progetto host di flotta e un account di servizio associato. L'ID in gkeConnect.projectID deve essere uguale a quello impostato in stackdriver.projectID e cloudAuditLogging.projectID. Se gli ID progetto non sono uguali, la creazione del cluster non va a buon fine.

In 1.28 e versioni successive, puoi specificare facoltativamente una regione in cui vengono eseguiti i servizi Fleet e Connect in gkeConnect.location. Se non includi questo campo, il cluster utilizza le istanze globali di questi servizi.

Se includi gkeConnect.location nel file di configurazione, la regione specificata deve essere la stessa configurata in cloudAuditLogging.clusterLocation, stackdriver.clusterLocation e gkeOnPremAPI.location. Se le regioni non sono uguali, la creazione del cluster non riesce.

gkeOnPremAPI

In 1.16 e versioni successive, se l'API GKE On-Prem è abilitata nel progetto Google Cloud, tutti i cluster del progetto vengono registrati 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 (se il campo è incluso nel file di configurazione) e 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 cluster nel progetto, disattiva 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 attivare 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 gli audit log di Cloud, 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 in cloudAuditLogging.clusterLocation deve essere uguale a quella impostata in gkeConnect.location (se il campo è incluso nel file di configurazione) e stackdriver.clusterLocation. Inoltre, se gkeOnPremAPI.enabled è true, la stessa regione deve essere impostata in gkeOnPremAPI.location.

Se gli ID progetto e le regioni non sono uguali, la creazione del cluster non va a buon fine.

Esempio di file di configurazione compilati

Ecco un esempio di file di blocco 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.30.300-gke.84
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"
  location: "us-central1"
  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

Di seguito sono riportati i punti importanti da comprendere nell'esempio precedente:

  • Gli indirizzi IP statici per i nodi worker sono specificati in un file di blocco IP. Il file del blocco IP contiene quattro indirizzi anche se sono presenti 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 ricevere 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.

  • Control plane V2 è abilitato.

  • Il campo masterNode.replicas è impostato su 3, pertanto il cluster avrà un piano di controllo ad alta disponibilità.

  • Il VIP del control plane e il VIP di ingresso si trovano entrambi nella stessa VLAN dei nodi worker e del control plane.

  • Le VIP riservate ai servizi di tipo LoadBalancer sono specificate nella sezione loadBalancer.metalLB.addressPools del file di configurazione del cluster utente. Questi VIP si trovano nella stessa VLAN dei nodi worker e degli nodi del piano di controllo. L'insieme di VIP specificato in questa sezione deve includere il VIP di ingresso e non deve includere il VIP del control plane.

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

Convalida 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 tuo cluster di amministrazione

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

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

Se vuoi saltare le convalide più dispendiose in termini di 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. (Facoltativo) Importa le immagini del sistema operativo in vSphere ed esegui il push delle immagini dei container in un registry privato

Esegui gkectl prepare se una delle seguenti condizioni è vera:

  • Il cluster utente si trova in un data center vSphere diverso da quello del cluster di amministrazione.

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

  • Il cluster utente utilizza un registry dei contenitori privato diverso da quello 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.30.300-gke.84-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 

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

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 seguito per interagire con il cluster di utenti.

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

Console

Inizia

  1. Nella console Google Cloud, vai alla pagina Crea un cluster Google Distributed Cloud.

    Vai a Crea un cluster Google Distributed Cloud

  2. Seleziona il progetto Google Cloud in cui vuoi creare il cluster. Il progetto selezionato viene utilizzato anche come progetto host del parco risorse. Deve essere lo stesso progetto a cui è registrato il cluster di amministrazione. Dopo la creazione, il cluster degli utenti viene registrato automaticamente nel parco risorse del progetto selezionato.

Impostazioni di base del cluster

Inserisci le informazioni di base sul cluster.

  1. Inserisci un nome per il cluster di utenti.

  2. In Cluster di amministrazione, seleziona il cluster di amministrazione dall'elenco. Se non hai specificato un nome per il cluster di amministrazione quando lo hai creato, il nome viene generato nel formato gke-admin-[HASH]. Se non riconosci il nome del cluster di amministrazione, esegui il comando seguente sulla workstation di amministrazione:

    KUBECONFIG=ADMIN_CLUSTER_KUBECONFIG
    kubectl get OnPremAdminCluster -n kube-system -o=jsonpath='{.items[0].metadata.name}'
    

    Se il cluster di amministrazione che vuoi utilizzare non viene visualizzato, consulta la sezione sulla risoluzione dei problemi Il cluster di amministrazione non viene visualizzato nell'elenco a discesa Nozioni di base sui cluster.

  3. Nel campo Posizione API Google Cloud, seleziona la regione Google Cloud dall'elenco. Questa impostazione specifica la regione in cui vengono eseguiti i seguenti API e servizi:

    • API GKE On-Prem (gkeonprem.googleapis.com)
    • Servizio per il parco risorse (gkehub.googleapis.com)
    • Servizio di connessione (gkeconnect.googleapis.com)

    Questa impostazione controlla anche la regione in cui vengono archiviati i seguenti elementi:

    • I metadati del cluster utente di cui l'API GKE On-Prem ha bisogno per gestire il ciclo di vita del cluster
    • I dati di Cloud Logging e Cloud Monitoring dei componenti di sistema
    • L'audit log amministrativo creato da Cloud Audit Logs

    Il nome, il progetto e la località del cluster identificano in modo univoco il cluster in Google Cloud.

  4. Seleziona la versione di Google Distributed Cloud per il cluster di utenti.

  5. In qualità di creatore del cluster, ti vengono concessi i privilegi di amministratore del cluster. Se vuoi, inserisci l'indirizzo email di un altro utente che gestirà il cluster nel campo Utente amministratore del cluster della sezione Autorizzazione.

    Quando viene creato il cluster, l'API GKE On-Prem applica al cluster i criteri di controllo dell'accesso dell'accesso basato sui ruoli (RBAC) di Kubernetes per concedere a te e agli altri utenti amministratore il ruolo clusterrole/cluster-admin di Kubernetes, che fornisce l'accesso completo a tutte le risorse del cluster in tutti gli spazi dei nomi.

  6. Fai clic su Avanti per passare alla sezione Piano di controllo.

Control plane

Tutti i campi della sezione Piano di controllo sono impostati con i valori predefiniti. Esamina i valori predefiniti e, se opportuno, modificali in base alle esigenze.

  1. Nel campo VCPU dei nodi del piano di controllo, inserisci il numero di vCPU (minimo 4) per ciascun nodo del piano di controllo per il tuo cluster utente.

  2. Nel campo Memoria del nodo del control plane, inserisci la dimensione della memoria in MiB (minimo 8192 e deve essere un multiplo di 4) per ogni control plane per il tuo cluster utente.

  3. In Nodi del piano di controllo, seleziona il numero di nodi del piano di controllo per il cluster utente. Ad esempio, puoi selezionare 1 nodo del piano di controllo per un ambiente di sviluppo e 3 nodi del piano di controllo per ambienti di produzione ad alta disponibilità (HA).

  4. Se vuoi, seleziona Ridimensionamento automatico dei nodi. Il ridimensionamento significa che le risorse vCPU e di memoria assegnate a un nodo vengono regolate automaticamente. Se questa opzione è abilitata, i nodi del piano di controllo per il cluster utente vengono ridimensionati in base al numero di nodi worker nel cluster utente. Pertanto, man mano che aggiungi altri nodi worker al cluster utente, le dimensioni dei nodi del piano di controllo vengono aumentate.

  5. Se vuoi, seleziona Attiva control plane v2. L'abilitazione del control plane v2 significa che il control plane per un cluster utente viene eseguito su uno o più nodi nel cluster utente stesso, anziché nel cluster di amministrazione (chiamato kubeception).

    Quando selezioni Abilita control plane v2, viene visualizzata la sezione IP dei nodi del control plane. Inserisci l'indirizzo IP del gateway, la maschera di sottorete e gli indirizzi IP dei nodi del piano di controllo.

    Quando il control plane v2 è abilitato, i campi vCPU e memoria si applicano ai nodi del piano di controllo nel cluster utente. Il numero di nodi è determinato dal numero di indirizzi IP inseriti. Quando il control plane v2 non è attivo, i campi vCPU, memoria e numero di nodi del control plane si applicano ai nodi del cluster di amministrazione. Assicurati di mettere da parte indirizzi IP sufficienti per il cluster di amministrazione.

  6. Fai clic su Avanti per andare alla sezione Networking.

Networking

In questa sezione specifichi gli indirizzi IP dei nodi, dei pod e dei servizi del tuo cluster. Un cluster utente deve avere un indirizzo IP per ogni nodo e un indirizzo IP aggiuntivo per un nodo temporaneo necessario durante gli upgrade, gli aggiornamenti e la riparazione automatica del cluster. Per ulteriori informazioni, consulta Quanti indirizzi IP sono necessari per un cluster di utenti?.

  1. Nella sezione Indirizzi IP dei nodi, seleziona la modalità IP per il cluster utente. Seleziona una delle seguenti opzioni:

    • DHCP: scegli DHCP se vuoi che i nodi del cluster ricevano il loro indirizzo IP da un server DHCP.

    • Statico: scegli Statico se vuoi fornire indirizzi IP statici per i nodi del cluster o se vuoi configurare il bilanciamento del carico manuale.

  2. Se hai selezionato DHCP, vai al passaggio successivo per specificare CIDR di servizi e pod. Per la modalità IP statico, fornisci le seguenti informazioni:

    1. Inserisci l'indirizzo IP del gateway per il cluster utente.

    2. Inserisci la subnet mask per i nodi del cluster utente.

    3. Nella sezione Indirizzi IP, inserisci gli indirizzi IP e, facoltativamente, i nomi host dei nodi del cluster utente. Puoi inserire un singolo indirizzo IP v4 (ad esempio 192.0.2.1) o un blocco CIDR di indirizzi IPv4 (ad esempio 192.0.2.0/24).

      • Se inserisci un blocco CIDR, non inserire un nome host.

      • Se inserisci un singolo indirizzo IP, puoi anche inserire un nome host. Se non inserisci un nome host, Google Distributed Cloud utilizza il nome della VM di vSphere come nome host.

    4. Fai clic su + Aggiungi indirizzo IP, se necessario, per inserire altri indirizzi IP.

  3. Nella sezione CIDR servizi e pod, la console fornisce i seguenti intervalli di indirizzi per i servizi e i pod Kubernetes:

    • CIDR dei servizi: 10.96.0.0/20
    • CIDR pod: 192.168.0.0/16

    Se preferisci inserire i tuoi intervalli di indirizzi, consulta Indirizzi IP per pod e servizi per le best practice.

  4. Se hai selezionato Modalità IP statico o Abilita il piano di controllo v2, specifica le seguenti informazioni nella sezione Configurazione host:

    1. Inserisci gli indirizzi IP dei server DNS.
    2. Inserisci gli indirizzi IP dei server NTP.
    3. Se vuoi, inserisci i domini di ricerca DNS.
  5. Fai clic su Avanti per andare alla sezione Bilanciatore del carico.

Bilanciatore del carico

Scegli il bilanciatore del carico da configurare per il cluster. Per ulteriori informazioni, consulta la Panoramica del bilanciatore del carico.

Seleziona il tipo di bilanciatore del carico dall'elenco.

Abbinato a MetalLB

Configura il bilanciamento del carico in bundle con MetalLB. Puoi utilizzare MetalLB per il cluster di utenti solo se il cluster di amministrazione utilizza SeeSaw o MetalLB. Questa opzione richiede una configurazione minima. MetalLB viene eseguito direttamente sui nodi del cluster e non richiede VM aggiuntive. Per saperne di più sui vantaggi dell'utilizzo di MetalLB e sul suo confronto con le altre opzioni di bilanciamento del carico, consulta Bilanciamento del carico in bundle con MetalLB.

  1. Nella sezione Pool di indirizzi, configura almeno un pool di indirizzi come segue:

    1. Inserisci un nome per il pool di indirizzi.

    2. Inserisci un intervallo di indirizzi IP contenente il VIP di ingresso in notazione CIDR (ad es. 192.0.2.0/26) o la notazione dell'intervallo (ad es. 192.0.2.64-192.0.2.72). Per specificare un singolo indirizzo IP in un pool, utilizza /32 nella notazione CIDR (ad es. 192.0.2.1/32).

    3. Se gli indirizzi IP per i servizi di tipo LoadBalancer non rientrano nello stesso intervallo di indirizzi IP del VIP in entrata, fai clic su + Aggiungi intervallo di indirizzi IP e inserisci un altro intervallo di indirizzi.

      Gli indirizzi IP in ogni pool non possono sovrapporsi e devono trovarsi nella stessa subnet dei nodi del cluster.

    4. In Assegnazione degli indirizzi IP, seleziona una delle seguenti opzioni:

      • Automatico: scegli questa opzione se vuoi che il controller MetalLB assegni automaticamente gli indirizzi IP del pool di indirizzi ai servizi di tipo LoadBalancer

      • Manuale: scegli questa opzione se intendi utilizzare gli indirizzi del pool per specificare manualmente gli indirizzi per i servizi di tipoLoadBalancer

    5. Fai clic su Evita indirizzi IP che presentano bug se non vuoi che il controller MetalLB utilizzi indirizzi del pool che terminano con .0 o .255. In questo modo si evita il problema dei dispositivi consumer con bug che eliminano erroneamente il traffico inviato a questi indirizzi IP speciali.

    6. Al termine, fai clic su Fine.

  2. Se necessario, fai clic su Aggiungi pool di indirizzi.

  3. Nella sezione Indirizzi IP virtuali, inserisci quanto segue:

    • VIP del piano di controllo: l'indirizzo IP di destinazione da utilizzare per il traffico inviato al server API Kubernetes del cluster utente. Il server API Kubernetes per il cluster utente viene eseguito su un nodo del cluster di amministrazione. Questo indirizzo IP deve trovarsi nello stesso dominio L2 dei nodi del cluster di amministrazione. Non aggiungere questo indirizzo nella sezione Pool di indirizzi.

    • VIP in entrata: l'indirizzo IP da configurare sul bilanciatore del carico per il proxy in entrata. Devi aggiungerlo a un pool di indirizzi nella sezione Pool di indirizzi.

  4. Fai clic su Continua.

F5 BIG-IP

Puoi utilizzare F5 BIG-IP per il cluster utente solo se il cluster di amministrazione utilizza F5 BIG-IP. Assicurati di installare e configurare l'ADC BIG-IP di F5 prima di integrarlo con Google Distributed Cloud.

Il nome utente e la password F5 vengono ereditati dal cluster amministrativo.

  1. Nella sezione Indirizzi IP virtuali, inserisci quanto segue:

    • VIP del piano di controllo: l'indirizzo IP di destinazione da utilizzare per il traffico inviato al server API Kubernetes.

    • VIP in entrata: l'indirizzo IP da configurare sul bilanciatore del carico per il proxy in entrata.

  2. Nel campo Indirizzo, inserisci l'indirizzo del bilanciatore del carico BIG-IP di F5.

  3. Nel campo Partition (Partizione), inserisci il nome di una partizione BIG-IP che hai creato per il cluster di utenti.

  4. Nel campo Nome pool SNAT, inserisci il nome del pool SNAT, se applicabile.

  5. Fai clic su Continua.

Manuale

Puoi utilizzare un bilanciatore del carico manuale per il cluster utente solo se il cluster di amministrazione utilizza un bilanciatore del carico manuale. In Google Distributed Cloud, il server API Kubernetes e il proxy in entrata sono esposti ciascuno da un servizio Kubernetes di tipo LoadBalancer. Scegli i tuoi valori nodePort nell'intervallo 30000-32767 per questi servizi. Per il proxy in entrata, scegli un valore nodePort sia per il traffico HTTP che per quello HTTPS. Per ulteriori informazioni, consulta Attivare la modalità di bilanciamento del carico manuale.

  1. Nella sezione Indirizzi IP virtuali, inserisci quanto segue:

    • VIP del piano di controllo: l'indirizzo IP di destinazione da utilizzare per il traffico inviato al server API Kubernetes.

    • VIP in entrata: l'indirizzo IP da configurare sul bilanciatore del carico per il proxy in entrata.

  2. Nel campo Porta del nodo del piano di controllo, inserisci un valore nodePort per il server API Kubernetes.

  3. Nel campo Porta nodo HTTP Ingress, inserisci un valore nodePort per il traffico HTTP verso il proxy in entrata.

  4. Nel campo Porta nodo HTTPS Ingress, inserisci un valore nodePort per il traffico HTTPS verso il proxy in entrata.

  5. Nel campo Porta del nodo del server Konnectivity, inserisci un valore nodePort per il server Konnectivity.

  6. Fai clic su Continua.

Funzionalità

Questa sezione mostra le funzionalità e le operazioni abilitate nel cluster.

  1. I seguenti elementi vengono attivati automaticamente e non possono essere disattivati:

  2. I seguenti elementi sono attivati per impostazione predefinita, ma puoi disattivarli:

    • Attiva il driver CSI vSphere: chiamato anche plug-in vSphere Container Storage. Il driver Container Storage Interface (CSI) viene eseguito in un cluster Kubernetes di cui è stato eseguito il deployment in vSphere per il provisioning di volumi permanenti nell'archiviazione vSphere. Per ulteriori informazioni, consulta Utilizzare il driver Container Storage Interface di vSphere.

    • Attiva i gruppi anti-affinità: le regole anti-affinità Distributed Resource Scheduler (DRS) di VMware vengono create automaticamente per i nodi del cluster utente, in modo da distribuirle in almeno 3 host fisici del data center. Assicurati che l'ambiente vSphere soddisfi i requisiti.

  3. Fai clic su Avanti per configurare un pool di nodi

Pool di nodi

Il cluster verrà creato con almeno un pool di nodi. Un pool di nodi è un modello per un gruppo di nodi worker creati in questo cluster. Per scoprire di più, consulta la pagina Creare e gestire i pool di nodi .

  1. Nella sezione Valori predefiniti del pool di nodi, completa quanto segue:

    1. Inserisci il nome del pool di nodi o accetta "default-pool" come nome.
    2. Inserisci il numero di vCPUs per ogni nodo nel pool (minimo 4 per worker cluster utente).
    3. Inserisci la dimensione della memoria in mebibyte (MiB) per ogni nodo del pool (minimo 8192 MiB per nodo worker del cluster utente e deve essere un multiplo di 4).
    4. Nel campo Nodi, inserisci il numero di nodi nel pool (min 3). Se hai inserito indirizzi IP statici per gli indirizzi IP dei nodi nella sezione Networking, assicurati di aver inserito indirizzi IP sufficiente per gestire questi nodi del cluster utente.
    5. Seleziona il tipo di immagine del sistema operativo: Ubuntu, Ubuntu Containerd o COS.
    6. Inserisci la dimensione del disco di avvio in gibibyte (GiB) (minimo 40 GiB).
    7. Se utilizzi MetalLB come bilanciatore del carico, MetalLB deve essere abilitato in almeno un pool di nodi. Lascia selezionata l'opzione Utilizza questo pool di nodi per il bilanciamento del carico MetalLB o aggiungi un altro pool di nodi da utilizzare per MetalLB.
  2. Nella sezione Metadati del node pool (facoltativo), se vuoi aggiungere etichette e contaminazioni di Kubernetes, procedi nel seguente modo:

    1. Fai clic su + Aggiungi etichette Kubernetes. Inserisci la chiave e il valore per l'etichetta. Ripeti queste operazioni in base alle necessità.
    2. Fai clic su + Aggiungi contaminazione. Inserisci Chiave, Valore e Effetto per l'alterazione. Ripeti queste operazioni in base alle necessità.
  3. Fai clic su Verifica e completa per creare il cluster di utenti. La creazione del cluster utente richiede almeno 15 minuti. La console mostra i messaggi di stato durante la verifica delle impostazioni e la creazione del cluster nel tuo data center.

    Se si verifica un errore durante la verifica delle impostazioni, la console mostra un messaggio di errore sufficientemente chiaro per consentirti di correggere il problema di configurazione e riprovare a creare il cluster.

    Per ulteriori informazioni su possibili errori e su come risolverli, consulta Risolvere i problemi di creazione dei cluster di utenti nella console Google Cloud.

Interfaccia a riga di comando gcloud

Per creare un cluster utente, utilizza il seguente comando:

gcloud container vmware clusters create

Dopo aver creato il cluster, devi creare almeno un pool di nodi utilizzando il seguente comando:

gcloud container vmware node-pools create

La maggior parte dei flag per la creazione del cluster e del pool di nodi corrisponde ai campi del file di configurazione del cluster utente. Per aiutarti a iniziare, puoi testare un comando completo nella sezione Esempi.

Raccogliere informazioni

Raccogli alcune informazioni necessarie per creare il cluster.

  1. Ottieni il nome e la posizione dell'appartenenza al parco risorse del tuo cluster di amministrazione:

    gcloud container fleet memberships list \
        --project=FLEET_HOST_PROJECT_ID
    

    Sostituisci FLEET_HOST_PROJECT_ID con l'ID del progetto a cui è registrato il cluster di amministrazione.

    L'output è simile al seguente:

    NAME             EXTERNAL_ID                           LOCATION
    admin-cluster-1  bb7803b4-8438-4b22-859f-4559b4b29072  global
    admin-cluster-2  ee16ee2b-6ec0-49fc-9413-3c89cbc70854  global
    admin-cluster-3  fc2b7ef5-39ff-4b63-b919-04c5adc67be4  us-west1
    

    La località specifica dove vengono eseguiti i servizi Fleet e Connect. I cluster di amministrazione creati prima della versione 1.28 sono gestiti dai servizi globali Fleet e Connect. In 1.28 e versioni successive, puoi specificare global o una regione Google Cloud quando crei il cluster di amministrazione. Specifica la regione nel flag --admin-cluster-membership-location nei comandi di esempio che seguono.

  2. Per visualizzare un elenco delle versioni disponibili:

    gcloud container vmware clusters query-version-config \
        --admin-cluster-membership=ADMIN_CLUSTER_NAME \
        --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \
        --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \
        --location=REGION
    

    Sostituisci quanto segue:

    • ADMIN_CLUSTER_NAME: il nome del cluster di amministrazione.

    • FLEET_HOST_PROJECT_ID: l'ID del progetto a cui è registrato il cluster di amministrazione.

    • ADMIN_CLUSTER_REGION: la regione di appartenenza del fleet del cluster di amministrazione. Può essere globale o una regione Google Cloud. Utilizza la posizione del cluster di amministrazione dall'output di gcloud container fleet memberships list.

    • REGION: la regione Google Cloud che utilizzerai per creare il cluster utente. Si tratta della regione in cui viene eseguita l'API GKE On-Prem e in cui vengono archiviati i relativi metadati.

      • Se il cluster di amministrazione è registrato nell'API GKE On-Prem, utilizza la stessa regione del cluster di amministrazione. Per conoscere la regione del cluster amministrativo, esegui il seguente comando:

        gcloud container vmware admin-clusters list \
          --project=FLEET_HOST_PROJECT_ID \
          --location=-
        
      • Se il cluster di amministrazione non è registrato nell'API GKE On-Prem, specificaus-west1 o un'altra regione supportata. Se successivamente registri il cluster di amministrazione nell'API GKE On-Prem, utilizza la stessa regione del cluster utente.

    L'output del comando gcloud container vmware clusters query-version-config è simile al seguente:

    versions:
    - isInstalled: true
      version: 1.28.800-gke.109
    - version: 1.29.0-gke.1456
    - version: 1.29.100-gke.248
    - version: 1.29.200-gke.245
    - version: 1.29.300-gke.184
    

    Il comando genera anche una spiegazione delle versioni che puoi utilizzare per la creazione o l'upgrade dei cluster utente. Le versioni che puoi utilizzare per creare o eseguire l'upgrade di un cluster utente sono contrassegnate da isInstalled: true, il che significa che il cluster di amministrazione dispone dei componenti specifici della versione necessari per gestire i cluster utente di quella versione. Se vuoi utilizzare una versione installata sul cluster di amministrazione, vai alla sezione Esempi per creare il cluster utente.

Installa una versione più recente

Un cluster di amministrazione può gestire cluster utente con versioni diverse. L'output del comando query-version-config elenca altre versioni che puoi utilizzare quando crei il cluster. Se vuoi creare un cluster utente con una versione superiore a quella del cluster di amministrazione, devi scaricare ed eseguire il deployment dei componenti di cui il cluster di amministrazione ha bisogno per gestire i cluster utente di quella versione, come segue:

gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
    --project=FLEET_HOST_PROJECT_ID \
    --location=REGION \
    --required-platform-version=VERSION

Sostituisci VERSION con una delle versioni elencate nell'output del comando query-version-config.

Il comando scarica la versione dei componenti specificata in --required-platform-version nel cluster di amministrazione e poi esegue il deployment dei componenti. Ora puoi creare un cluster utente con la versione specificata.

Se esegui di nuovo il gcloud container vmware clusters query-version-config, la versione specificata viene annotata con isInstalled: true.

Esempi

Gli esempi riportati di seguito mostrano come creare un cluster di utenti con diversi bilanciatori di carico con Controlplane V2 abilitato. Con Controlplane V2, il control plane per un cluster utente viene eseguito su uno o più nodi nel cluster utente stesso. Ti consigliamo di attivare Controlplane V2 e, nella versione 1.30 e successive, è obbligatorio attivare Controlplane V2 per i nuovi cluster utente. Per informazioni sulle opzioni di bilanciamento del carico disponibili, consulta la Panoramica del bilanciatore del carico.

La maggior parte degli esempi utilizza i valori predefiniti per la configurazione dei nodi del piano di controllo. Se vuoi modificare una delle impostazioni predefinite, includi i flag descritti nella sezione Flag del piano di controllo. Se necessario, puoi anche modificare alcune impostazioni di vSphere.

Prima di eseguire il comando gcloud per creare il cluster, puoi includere --validate-only per convalidare la configurazione specificata nei flag del comando gcloud. Quando è tutto pronto per creare il cluster,rimuovi questo flag ed esegui il comando.

Se ricevi un errore dopo che il comando gcloud container vmware clusters create è stato eseguito per circa un minuto o più, controlla se il cluster è stato creato parzialmente eseguendo il seguente comando:

gcloud container vmware clusters list \
    --project=FLEET_HOST_PROJECT_ID \
    --location=-

Se il cluster non è elencato nell'output, correggi l'errore e esegui di nuovo il comando gcloud container vmware clusters create.

Se il cluster è elencato nell'output, eliminalo utilizzando il seguente comando:

gcloud container vmware clusters delete USER_CLUSTER_NAME \
    --project=FLEET_HOST_PROJECT_ID \
    --location=REGION \
    --force \
    --allow-missing

Poi correggi l'errore ed esegui di nuovo gcloud container vmware clusters create.

Dopo l'avvio del cluster, devi aggiungere un pool di nodi prima di eseguire il deployment dei carichi di lavoro, come descritto nella sezione Creare un pool di nodi.

MetalLB e DHCP

Questo esempio mostra come creare un cluster utente con il bilanciatore del carico MetalLB incluso e utilizzare il server DHCP per ottenere gli indirizzi IP per i nodi worker del cluster.

Puoi utilizzare MetalLB per il cluster utente solo se il cluster di amministrazione utilizza MetalLB. Questa opzione di bilanciamento del carico richiede una configurazione minima. MetalLB viene eseguito direttamente sui nodi del cluster e non richiede VM aggiuntive. Per saperne di più sui vantaggi dell'utilizzo di MetalLB e sul suo confronto con le altre opzioni di bilanciamento del carico, consulta Bilanciamento del carico in bundle con MetalLB.

Il comando di esempio crea un cluster di utenti con le seguenti caratteristiche, che puoi modificare in base alle esigenze del tuo ambiente.

Bandiera Descrizione
--admin-users Concedi a te e a un altro utente diritti amministrativi completi sul cluster.
--enable-control-plane-v2 Attiva Controlplane V2, che è consigliato e obbligatorio nella versione 1.30 e successive.
--control-plane-ip-block Un indirizzo IP per il nodo del piano di controllo. Per creare un cluster utente ad alta disponibilità (HA), specifica tre indirizzi IP e aggiungi il flag --replicas=3.
--metal-lb-config-address-pools Due pool di indirizzi per il bilanciatore del carico MetalLB. Devi avere almeno un pool di indirizzi e puoi specificarne altri, se necessario. Per comodità, l'esempio contiene un pool di indirizzi con il nome "ingress-vip-pool" per ricordare che l'indirizzo IP del VIP in entrata deve trovarsi in uno dei pool di indirizzi. Specifica il CIDR per un singolo indirizzo IP aggiungendo /32 all'indirizzo IP.
gcloud container vmware clusters create USER_CLUSTER_NAME \
    --project=FLEET_HOST_PROJECT_ID \
    --admin-cluster-membership=ADMIN_CLUSTER_NAME \
    --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \
    --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \
    --location=REGION \
    --version=VERSION \
    --admin-users=YOUR_EMAIL_ADDRESS \
    --admin-users=ANOTHER_EMAIL_ADDRESS \
    --service-address-cidr-blocks=10.96.0.0/20 \
    --pod-address-cidr-blocks=192.168.0.0/16 \
    --metal-lb-config-address-pools='pool=NAME,avoid-buggy-ips=AVOID_BUGGY_IPS,manual-assign=MANUAL_ASSIGN,addresses=IP_ADDRESS_RANGE_1' \
    --metal-lb-config-address-pools='pool=ingress-vip-pool,avoid-buggy-ips=False,manual-assign=True,addresses=INGRESS_VIP/32' \
    --enable-control-plane-v2 \
    --dns-servers=DNS_SERVER_1 \
    --ntp-servers=NTP_SERVER_1 \
    --control-plane-ip-block 'gateway=CP_GATEWAY,netmask=CP_NETMASK,ips=CP_IP_ADDRESS_1 CP_HOST_1' \
    --control-plane-vip=CONTROL_PLANE_VIP \
    --ingress-vip=INGRESS_VIP \
    --enable-dhcp

Sostituisci quanto segue:

  • USER_CLUSTER_NAME: un nome a tua scelta per il cluster di utenti. Il nome non può essere modificato dopo la creazione del cluster. Il nome deve avere le seguenti caratteristiche:
    • Deve contenere al massimo 40 caratteri.
    • Deve contenere solo caratteri alfanumerici minuscoli o un trattino (-).
    • Deve iniziare con un carattere alfabetico
    • Deve terminare con un carattere alfanumerico
  • FLEET_HOST_PROJECT_ID: l'ID del progetto in cui vuoi creare il cluster. Il progetto specificato viene utilizzato anche come progetto host del parco risorse. Deve essere lo stesso progetto a cui è registrato il cluster di amministrazione. Dopo la creazione, il cluster utente viene registrato automaticamente nel parco risorse del progetto selezionato. Il progetto host del parco risorse non può essere modificato dopo la creazione del cluster.
  • ADMIN_CLUSTER_NAME: il nome del cluster di amministrazione che gestisce il cluster utente. Nel flag --admin-cluster-membership puoi utilizzare il nome del cluster completamente specificato, che ha il seguente formato:
        projects/FLEET_HOST_PROJECT_ID/locations/ADMIN_CLUSTER_REGION/memberships/ADMIN_CLUSTER_NAME

    In alternativa, puoi impostare --admin-cluster-membership sul nome del cluster di amministrazione, come nel comando di esempio. Quando utilizzi solo il nome del cluster di amministrazione, imposta l'ID progetto del cluster di amministrazione con --admin-cluster-membership-project e la località con --admin-cluster-membership-location. La località del cluster amministrativo è global o una regione Google Cloud. Se devi trovare la regione, esegui gcloud container fleet memberships list.

  • REGION: la regione Google Cloud in cui vengono eseguiti l'API GKE On-Prem (gkeonprem.googleapis.com), il servizio Fleet (gkehub.googleapis.com) e il servizio Connect (gkeconnect.googleapis.com). Specifica us-west1 o un'altra regione supportata. La regione non può essere modificata dopo la creazione del cluster. Questa impostazione specifica la regione in cui vengono archiviati i seguenti elementi:
    • I metadati del cluster utente di cui l'API GKE On-Prem ha bisogno per gestire il ciclo di vita del cluster
    • I dati di Cloud Logging e Cloud Monitoring dei componenti di sistema
    • L'audit log amministrativo creato da Cloud Audit Logs

    Il nome, il progetto e la posizione del cluster identificano in modo univoco il cluster in Google Cloud.

  • VERSION: la versione di Google Distributed Cloud per il tuo cluster di utenti.
  • YOUR_EMAIL_ADDRESS e ANOTHER_EMAIL_ADDRESS: se non includi il flag --admin-users, in qualità di creatore del cluster, per impostazione predefinita ti vengono concessi i privilegi di amministratore del cluster. Tuttavia, se includi --admin-users per designare un altro utente come amministratore, sostituisci il valore predefinito e devi includere sia il tuo indirizzo email sia l'indirizzo email dell'altro amministratore. Ad esempio, per aggiungere due amministratori:
        --admin-users=sara@example.com \
        --admin-users=amal@example.com

    Quando viene creato il cluster, l'API GKE On-Prem applica al cluster i criteri di controllo dell'accesso dell'accesso basato sui ruoli (RBAC) di Kubernetes per concedere a te e agli altri utenti amministratore il ruolo clusterrole/cluster-admin di Kubernetes, che fornisce l'accesso completo a tutte le risorse del cluster in tutti gli spazi dei nomi.

  • SERVICE_CIDR_BLOCK: un intervallo di indirizzi IP in formato CIDR da utilizzare per i servizi nel cluster. Deve essere un intervallo di almeno /24.

    Esempio: --service-address-cidr-blocks=10.96.0.0/20

  • POD_CIDR_BLOCK: un intervallo di indirizzi IP in formato CIDR da utilizzare per i pod nel cluster. Deve essere un intervallo di almeno /18.

    Esempio: --pod-address-cidr-blocks=192.168.0.0/16

  • --metal-lb-config-address-pools: includi questo flag per specificare la configurazione per i pool di indirizzi da utilizzare dal bilanciatore del carico MetalLB. Il valore del flag ha il seguente formato:
    --metal-lb-config-address-pool 'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \

    Il valore ha segmenti che iniziano con le parole chiave pool, avoid-buggy-ip, manual-assign e addresses. Separa ogni segmento con una virgola.

    • pool: un nome scelto da te per il pool.
    • avoid-buggy-ips1: se imposti questo valore su True, il controller MetalLB non assegnerà indirizzi IP che terminano con .0 o .255 ai servizi. In questo modo si evita il problema dei dispositivi consumer con bug che eliminano erroneamente il traffico inviato a questi indirizzi IP speciali. Se non specificato, il valore predefinito è False.
    • manual-assign: se non vuoi che il controller MetalLB assegni automaticamente gli indirizzi IP di questo pool ai servizi, imposta questo valore su True. Uno sviluppatore può quindi creare un servizio di tipo LoadBalancer e specificare manualmente uno degli indirizzi del pool. Se non specificato, manual-assign viene impostato su False.
    • Nell'elenco di addresses: ogni indirizzo deve essere un intervallo in CIDR o nel formato con intervallo tra virgole. Per specificare un singolo indirizzo IP in un pool (ad esempio per l'indirizzo VIP di ingresso), utilizza /32 in notazione CIDR, ad esempio: 192.0.2.1/32.

    Tieni presente quanto segue:

    • Racchiudi l'intero valore tra virgolette singole.
    • Gli spazi vuoti non sono consentiti.
    • Separa ogni intervallo di indirizzi IP con un punto e virgola.

    Ad esempio:

    --metal-lb-config-address-pool 'pool=pool1,avoid-buggy-ips=True,manual-assign=True,addresses=10.251.134.80/32;192.168.1.0/26;192.168.1.2-192.168.1.3'
  • CONTROL_PLANE_VIP: l'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il server API Kubernetes del cluster utente.

    Esempio: --control-plane-vip=203.0.113.3

  • INGRESS_VIP: l'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il proxy in entrata.

    Esempio: --ingress-vip=10.251.134.80

    L'indirizzo IP del VIP in entrata deve trovarsi in uno dei pool di indirizzi MetalLB.

  • --enable-dhcp: includi --enable-dhcp se vuoi che i nodi del cluster ricevano il proprio indirizzo IP da un server DHCP che fornisci. Non includere questo flag se vuoi fornire indirizzi IP statici per i nodi del cluster o se vuoi configurare il bilanciamento del carico manuale.

MetalLB e IP statici

Questo esempio mostra come creare un cluster di utenti con il bilanciatore del carico MetalLB incluso e assegnare indirizzi IP statici ai nodi worker del cluster.

Puoi utilizzare MetalLB per il cluster utente solo se il cluster di amministrazione utilizza MetalLB. Questa opzione di bilanciamento del carico richiede una configurazione minima. MetalLB viene eseguito direttamente sui nodi del cluster e non richiede VM aggiuntive. Per saperne di più sui vantaggi dell'utilizzo di MetalLB e sul suo confronto con le altre opzioni di bilanciamento del carico, consulta Bilanciamento del carico in bundle con MetalLB.

Il comando di esempio crea un cluster di utenti con le seguenti caratteristiche, che puoi modificare in base alle esigenze del tuo ambiente.

Bandiera Descrizione
--admin-users Concedi a te e a un altro utente diritti amministrativi completi sul cluster.
--enable-control-plane-v2 Attiva Controlplane V2, che è consigliato e obbligatorio nella versione 1.30 e successive.
--control-plane-ip-block Un indirizzo IP per il nodo del piano di controllo. Per creare un cluster utente ad alta disponibilità (HA), specifica tre indirizzi IP e aggiungi il flag --replicas=3.
--metal-lb-config-address-pools Due pool di indirizzi per il bilanciatore del carico MetalLB. Devi avere almeno un pool di indirizzi e puoi specificarne altri, se necessario. Per comodità, l'esempio contiene un pool di indirizzi con il nome "ingress-vip-pool" per ricordare che l'indirizzo IP del VIP in entrata deve trovarsi in uno dei pool di indirizzi. Specifica il CIDR per un singolo indirizzo IP aggiungendo /32 all'indirizzo IP.
--static-ip-config-ip-blocks Quattro indirizzi IP per i nodi worker nei cluster. tra cui un indirizzo per un nodo aggiuntivo che può essere utilizzato durante l'upgrade e l'aggiornamento. Se necessario, puoi specificare altri indirizzi IP. Il nome host è facoltativo.
gcloud container vmware clusters create USER_CLUSTER_NAME \
    --project=FLEET_HOST_PROJECT_ID \
    --admin-cluster-membership=ADMIN_CLUSTER_NAME \
    --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \
    --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \
    --location=REGION \
    --version=VERSION \
    --admin-users=YOUR_EMAIL_ADDRESS \
    --admin-users=ANOTHER_EMAIL_ADDRESS \
    --service-address-cidr-blocks=10.96.0.0/20 \
    --pod-address-cidr-blocks=192.168.0.0/16 \
    --metal-lb-config-address-pools='pool=NAME,avoid-buggy-ips=AVOID_BUGGY_IPS,manual-assign=MANUAL_ASSIGN,addresses=IP_ADDRESS_RANGE_1' \
    --metal-lb-config-address-pools='pool=ingress-vip-pool,avoid-buggy-ips=False,manual-assign=True,addresses=INGRESS_VIP/32' \
    --enable-control-plane-v2 \
    --control-plane-ip-block 'gateway=CP_GATEWAY,netmask=CP_NETMASK,ips=CP_IP_ADDRESS_1 CP_HOST_1' \
    --control-plane-vip=CONTROL_PLANE_VIP \
    --ingress-vip=INGRESS_VIP \
    --static-ip-config-ip-blocks='gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1 HOST_1;IP_ADDRESS_2 HOST_2;IP_ADDRESS_3 HOST_3;IP_ADDRESS_4 HOST_4' \
    --dns-servers=DNS_SERVER_1 \
    --ntp-servers=NTP_SERVER_1

Sostituisci quanto segue:

  • USER_CLUSTER_NAME: un nome a tua scelta per il cluster di utenti. Il nome non può essere modificato dopo la creazione del cluster. Il nome deve avere le seguenti caratteristiche:
    • Deve contenere al massimo 40 caratteri.
    • Deve contenere solo caratteri alfanumerici minuscoli o un trattino (-).
    • Deve iniziare con un carattere alfabetico
    • Deve terminare con un carattere alfanumerico
  • FLEET_HOST_PROJECT_ID: l'ID del progetto in cui vuoi creare il cluster. Il progetto specificato viene utilizzato anche come progetto host del parco risorse. Deve essere lo stesso progetto a cui è registrato il cluster di amministrazione. Dopo la creazione, il cluster utente viene registrato automaticamente nel parco risorse del progetto selezionato. Il progetto host del parco risorse non può essere modificato dopo la creazione del cluster.
  • ADMIN_CLUSTER_NAME: il nome del cluster di amministrazione che gestisce il cluster utente. Nel flag --admin-cluster-membership puoi utilizzare il nome del cluster completamente specificato, che ha il seguente formato:
        projects/FLEET_HOST_PROJECT_ID/locations/ADMIN_CLUSTER_REGION/memberships/ADMIN_CLUSTER_NAME

    In alternativa, puoi impostare --admin-cluster-membership sul nome del cluster di amministrazione, come nel comando di esempio. Quando utilizzi solo il nome del cluster di amministrazione, imposta l'ID progetto del cluster di amministrazione con --admin-cluster-membership-project e la località con --admin-cluster-membership-location. La località del cluster amministrativo è global o una regione Google Cloud. Se devi trovare la regione, esegui gcloud container fleet memberships list.

  • REGION: la regione Google Cloud in cui vengono eseguiti l'API GKE On-Prem (gkeonprem.googleapis.com), il servizio Fleet (gkehub.googleapis.com) e il servizio Connect (gkeconnect.googleapis.com). Specifica us-west1 o un'altra regione supportata. La regione non può essere modificata dopo la creazione del cluster. Questa impostazione specifica la regione in cui vengono archiviati i seguenti elementi:
    • I metadati del cluster utente di cui l'API GKE On-Prem ha bisogno per gestire il ciclo di vita del cluster
    • I dati di Cloud Logging e Cloud Monitoring dei componenti di sistema
    • L'audit log amministrativo creato da Cloud Audit Logs

    Il nome, il progetto e la posizione del cluster identificano in modo univoco il cluster in Google Cloud.

  • VERSION: la versione di Google Distributed Cloud per il tuo cluster di utenti.
  • YOUR_EMAIL_ADDRESS e ANOTHER_EMAIL_ADDRESS: se non includi il flag --admin-users, in qualità di creatore del cluster, per impostazione predefinita ti vengono concessi i privilegi di amministratore del cluster. Tuttavia, se includi --admin-users per designare un altro utente come amministratore, sostituisci il valore predefinito e devi includere sia il tuo indirizzo email sia l'indirizzo email dell'altro amministratore. Ad esempio, per aggiungere due amministratori:
        --admin-users=sara@example.com \
        --admin-users=amal@example.com

    Quando viene creato il cluster, l'API GKE On-Prem applica al cluster i criteri di controllo dell'accesso dell'accesso basato sui ruoli (RBAC) di Kubernetes per concedere a te e agli altri utenti amministratore il ruolo clusterrole/cluster-admin di Kubernetes, che fornisce l'accesso completo a tutte le risorse del cluster in tutti gli spazi dei nomi.

  • SERVICE_CIDR_BLOCK: un intervallo di indirizzi IP in formato CIDR da utilizzare per i servizi nel cluster. Deve essere un intervallo di almeno /24.

    Esempio: --service-address-cidr-blocks=10.96.0.0/20

  • POD_CIDR_BLOCK: un intervallo di indirizzi IP in formato CIDR da utilizzare per i pod nel cluster. Deve essere un intervallo di almeno /18.

    Esempio: --pod-address-cidr-blocks=192.168.0.0/16

  • --metal-lb-config-address-pools: includi questo flag per specificare la configurazione per i pool di indirizzi da utilizzare dal bilanciatore del carico MetalLB. Il valore del flag ha il seguente formato:
    --metal-lb-config-address-pool 'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \

    Il valore ha segmenti che iniziano con le parole chiave pool, avoid-buggy-ip, manual-assign e addresses. Separa ogni segmento con una virgola.

    • pool: un nome scelto da te per il pool.
    • avoid-buggy-ips1: se imposti questo valore su True, il controller MetalLB non assegnerà indirizzi IP che terminano con .0 o .255 ai servizi. In questo modo si evita il problema dei dispositivi consumer con bug che eliminano erroneamente il traffico inviato a questi indirizzi IP speciali. Se non specificato, il valore predefinito è False.
    • manual-assign: se non vuoi che il controller MetalLB assegni automaticamente gli indirizzi IP di questo pool ai servizi, imposta questo valore su True. Uno sviluppatore può quindi creare un servizio di tipo LoadBalancer e specificare manualmente uno degli indirizzi del pool. Se non specificato, manual-assign viene impostato su False.
    • Nell'elenco di addresses: ogni indirizzo deve essere un intervallo in CIDR o nel formato con intervallo tra virgole. Per specificare un singolo indirizzo IP in un pool (ad esempio per l'indirizzo VIP di ingresso), utilizza /32 in notazione CIDR, ad esempio: 192.0.2.1/32.

    Tieni presente quanto segue:

    • Racchiudi l'intero valore tra virgolette singole.
    • Gli spazi vuoti non sono consentiti.
    • Separa ogni intervallo di indirizzi IP con un punto e virgola.

    Ad esempio:

    --metal-lb-config-address-pool 'pool=pool1,avoid-buggy-ips=True,manual-assign=True,addresses=10.251.134.80/32;192.168.1.0/26;192.168.1.2-192.168.1.3'
  • CONTROL_PLANE_VIP: l'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il server API Kubernetes del cluster utente.

    Esempio: --control-plane-vip=203.0.113.3

  • INGRESS_VIP: l'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il proxy in entrata.

    Esempio: --ingress-vip=10.251.134.80

    L'indirizzo IP del VIP in entrata deve trovarsi in uno dei pool di indirizzi MetalLB.

  • --static-ip-config-ip-blocks: specifica il gateway predefinito, la subnet mask e un elenco degli indirizzi IP statici per i nodi worker nel cluster utente. Il valore del flag ha il seguente formato:
    --static-ip-config-ip-blocks 'gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1;IP_ADDRESS_2 HOST_2;...'

    Il valore contiene segmenti che iniziano con le parole chiave gateway, netmask e ips. Separa i segmenti con una virgola.

    Tieni presente quanto segue:

    • Racchiudi l'intero valore tra virgolette singole.
    • Gli spazi non sono consentiti, tranne tra un indirizzo IP e un nome host.

    Nell'elenco di indirizzi IP:

    • Puoi specificare un singolo indirizzo IP o un blocco CIDR di indirizzi IP.
    • Separa ogni indirizzo IP o blocco CIDR con un punto e virgola.
    • Per un singolo indirizzo IP, puoi specificare facoltativamente un nome host dopo l'indirizzo IP. Separa l'indirizzo IP e il nome host con uno spazio. Se non specifichi un nome host, Google Distributed Cloud utilizza il nome della VM da vSphere come nome host.
    • Se specifichi un blocco CIDR, non specificare un valore per il nome host.

    Ad esempio:

    --static-ip-config-ip-blocks 'gateway=172.16.23.254,netmask=255.255.252.0,ips=172.16.20.10;172.16.20.11 host2;172.16.20.12/30'
  • DNS_SERVER: un elenco separato da virgole degli indirizzi IP dei server DNS per le VM.
  • DNS_SEARCH_DOMAIN: un elenco separato da virgole dei domini di ricerca DNS da utilizzare per gli host. Questi domini vengono utilizzati come parte di un elenco di ricerca di domini.

    Ad esempio:

    --dns-search-domains example.com,examplepetstore.com
  • NTP_SERVER: un elenco separato da virgole degli indirizzi IP dei server di tempo da utilizzare per le VM.

Bilanciatore del carico manuale e IP statici

Questo esempio mostra come creare un cluster di utenti con un bilanciatore del carico manuale e assegnare indirizzi IP statici ai nodi worker del cluster.

Puoi utilizzare un bilanciatore del carico manuale per il cluster utente solo se il tuo cluster di amministrazione utilizza un bilanciatore del carico manuale. In Google Distributed Cloud, il server API, il proxy in entrata e il servizio aggiuntivo per l'aggregazione dei log sono esposti ciascuno da un servizio Kubernetes di tipo LoadBalancer. Scegli i tuoi valori nodePort nell'intervallo 30000-32767 per questi servizi. Per il proxy in entrata, scegli un valore nodePort sia per il traffico HTTP che per quello HTTPS. Per ulteriori informazioni, consulta Attivare la modalità di bilanciamento del carico manuale.

Il comando di esempio crea un cluster di utenti con le seguenti caratteristiche, che puoi modificare in base alle esigenze del tuo ambiente.

Bandiera Descrizione
--admin-users Concedi a te e a un altro utente diritti amministrativi completi sul cluster.
--enable-control-plane-v2 Attiva Controlplane V2, che è consigliato e obbligatorio nella versione 1.30 e successive.
--control-plane-ip-block Un indirizzo IP per il nodo del piano di controllo. Per creare un cluster utente ad alta disponibilità (HA), specifica tre indirizzi IP e aggiungi il flag --replicas=3.
--static-ip-config-ip-blocks Quattro indirizzi IP per i nodi worker nei cluster. tra cui un indirizzo per un nodo aggiuntivo che può essere utilizzato durante l'upgrade e l'aggiornamento. Se necessario, puoi specificare altri indirizzi IP. Il nome host è facoltativo.
gcloud container vmware clusters create USER_CLUSTER_NAME \
    --project=FLEET_HOST_PROJECT_ID \
    --admin-cluster-membership=ADMIN_CLUSTER_NAME \
    --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \
    --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \
    --location=REGION \
    --version=VERSION \
    --admin-users=YOUR_EMAIL_ADDRESS \
    --admin-users=ANOTHER_EMAIL_ADDRESS \
    --service-address-cidr-blocks=10.96.0.0/20 \
    --pod-address-cidr-blocks=192.168.0.0/16 \
    --enable-control-plane-v2 \
    --control-plane-ip-block 'gateway=CP_GATEWAY,netmask=CP_NETMASK,ips=CP_IP_ADDRESS_1 CP_HOST_1' \
    --control-plane-vip=CONTROL_PLANE_VIP \
    --ingress-vip=INGRESS_VIP \
    --ingress-http-node-port=INGRESS_HTTP_NODE_PORT \
    --ingress-https-node-port=INGRESS_HTTPS_NODE_PORT \
    --static-ip-config-ip-blocks='gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1 HOST_1;IP_ADDRESS_2 HOST_2;IP_ADDRESS_3 HOST_3;IP_ADDRESS_4 HOST_4' \
    --dns-servers=DNS_SERVER_1 \
    --ntp-servers=NTP_SERVER_1

Sostituisci quanto segue:

  • USER_CLUSTER_NAME: un nome a tua scelta per il cluster di utenti. Il nome non può essere modificato dopo la creazione del cluster. Il nome deve avere le seguenti caratteristiche:
    • Deve contenere al massimo 40 caratteri.
    • Deve contenere solo caratteri alfanumerici minuscoli o un trattino (-).
    • Deve iniziare con un carattere alfabetico
    • Deve terminare con un carattere alfanumerico
  • FLEET_HOST_PROJECT_ID: l'ID del progetto in cui vuoi creare il cluster. Il progetto specificato viene utilizzato anche come progetto host del parco risorse. Deve essere lo stesso progetto a cui è registrato il cluster di amministrazione. Dopo la creazione, il cluster utente viene registrato automaticamente nel parco risorse del progetto selezionato. Il progetto host del parco risorse non può essere modificato dopo la creazione del cluster.
  • ADMIN_CLUSTER_NAME: il nome del cluster di amministrazione che gestisce il cluster utente. Nel flag --admin-cluster-membership puoi utilizzare il nome del cluster completamente specificato, che ha il seguente formato:
        projects/FLEET_HOST_PROJECT_ID/locations/ADMIN_CLUSTER_REGION/memberships/ADMIN_CLUSTER_NAME

    In alternativa, puoi impostare --admin-cluster-membership sul nome del cluster di amministrazione, come nel comando di esempio. Quando utilizzi solo il nome del cluster di amministrazione, imposta l'ID progetto del cluster di amministrazione con --admin-cluster-membership-project e la località con --admin-cluster-membership-location. La località del cluster amministrativo è global o una regione Google Cloud. Se devi trovare la regione, esegui gcloud container fleet memberships list.

  • REGION: la regione Google Cloud in cui vengono eseguiti l'API GKE On-Prem (gkeonprem.googleapis.com), il servizio Fleet (gkehub.googleapis.com) e il servizio Connect (gkeconnect.googleapis.com). Specifica us-west1 o un'altra regione supportata. La regione non può essere modificata dopo la creazione del cluster. Questa impostazione specifica la regione in cui vengono archiviati i seguenti elementi:
    • I metadati del cluster utente di cui l'API GKE On-Prem ha bisogno per gestire il ciclo di vita del cluster
    • I dati di Cloud Logging e Cloud Monitoring dei componenti di sistema
    • L'audit log amministrativo creato da Cloud Audit Logs

    Il nome, il progetto e la posizione del cluster identificano in modo univoco il cluster in Google Cloud.

  • VERSION: la versione di Google Distributed Cloud per il tuo cluster di utenti.
  • YOUR_EMAIL_ADDRESS e ANOTHER_EMAIL_ADDRESS: se non includi il flag --admin-users, in qualità di creatore del cluster, per impostazione predefinita ti vengono concessi i privilegi di amministratore del cluster. Tuttavia, se includi --admin-users per designare un altro utente come amministratore, sostituisci il valore predefinito e devi includere sia il tuo indirizzo email sia l'indirizzo email dell'altro amministratore. Ad esempio, per aggiungere due amministratori:
        --admin-users=sara@example.com \
        --admin-users=amal@example.com

    Quando viene creato il cluster, l'API GKE On-Prem applica al cluster i criteri di controllo dell'accesso dell'accesso basato sui ruoli (RBAC) di Kubernetes per concedere a te e agli altri utenti amministratore il ruolo clusterrole/cluster-admin di Kubernetes, che fornisce l'accesso completo a tutte le risorse del cluster in tutti gli spazi dei nomi.

  • SERVICE_CIDR_BLOCK: un intervallo di indirizzi IP in formato CIDR da utilizzare per i servizi nel cluster. Deve essere un intervallo di almeno /24.

    Esempio: --service-address-cidr-blocks=10.96.0.0/20

  • POD_CIDR_BLOCK: un intervallo di indirizzi IP in formato CIDR da utilizzare per i pod nel cluster. Deve essere un intervallo di almeno /18.

    Esempio: --pod-address-cidr-blocks=192.168.0.0/16

  • CONTROL_PLANE_VIP: l'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il server API Kubernetes del cluster utente.

    Esempio: --control-plane-vip=203.0.113.3

  • INGRESS_VIP: l'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il proxy in entrata.

    Esempio: --ingress-vip=203.0.113.4

  • INGRESS_HTTP_NODE_PORT: un valore nodePort per il traffico HTTP al proxy di ingresso (ad esempio 30243).

  • INGRESS_HTTPS_NODE_PORT: un valore nodePort per il traffico HTTPS al proxy di ingresso (ad esempio 30879).

  • --static-ip-config-ip-blocks: specifica il gateway predefinito, la subnet mask e un elenco degli indirizzi IP statici per i nodi worker nel cluster utente. Il valore del flag ha il seguente formato:
    --static-ip-config-ip-blocks 'gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1;IP_ADDRESS_2 HOST_2;...'

    Il valore contiene segmenti che iniziano con le parole chiave gateway, netmask e ips. Separa i segmenti con una virgola.

    Tieni presente quanto segue:

    • Racchiudi l'intero valore tra virgolette singole.
    • Gli spazi non sono consentiti, tranne tra un indirizzo IP e un nome host.

    Nell'elenco di indirizzi IP:

    • Puoi specificare un singolo indirizzo IP o un blocco CIDR di indirizzi IP.
    • Separa ogni indirizzo IP o blocco CIDR con un punto e virgola.
    • Per un singolo indirizzo IP, puoi specificare facoltativamente un nome host dopo l'indirizzo IP. Separa l'indirizzo IP e il nome host con uno spazio. Se non specifichi un nome host, Google Distributed Cloud utilizza il nome della VM da vSphere come nome host.
    • Se specifichi un blocco CIDR, non specificare un valore per il nome host.

    Ad esempio:

    --static-ip-config-ip-blocks 'gateway=172.16.23.254,netmask=255.255.252.0,ips=172.16.20.10;172.16.20.11 host2;172.16.20.12/30'
  • DNS_SERVER: un elenco separato da virgole degli indirizzi IP dei server DNS per le VM.
  • DNS_SEARCH_DOMAIN: un elenco separato da virgole dei domini di ricerca DNS da utilizzare per gli host. Questi domini vengono utilizzati come parte di un elenco di ricerca di domini.

    Ad esempio:

    --dns-search-domains example.com,examplepetstore.com
  • NTP_SERVER: un elenco separato da virgole degli indirizzi IP dei server di tempo da utilizzare per le VM.

Flag del control plane

Se vuoi utilizzare valori non predefiniti per la configurazione del piano di controllo, includi uno o più dei seguenti flag:

  • --cpus=vCPUS: il numero di vCPU (minimo 4) per ciascun nodo del control plane per il tuo cluster utente. Se non specificato, il valore predefinito è 4 vCPU.

  • --memory=MEMORY: la dimensione della memoria in mebibyte (MiB) per ogni control plane per il tuo cluster utente. Il valore minimo è 8192 e deve essere un multiplo di 4. Se non specificato, il valore predefinito è 8192.

  • --replicas=NODES: il numero di nodi del piano di controllo per il cluster utente. Ad esempio, puoi selezionare un nodo del piano di controllo per un ambiente di sviluppo e tre nodi del piano di controllo per ambienti di produzione ad alta disponibilità.

  • --enable-auto-resize: se vuoi attivare il ridimensionamento automatico dei nodi del piano di controllo per il cluster utente, includi --enable-auto-resize. Il ridimensionamento significa che le risorse vCPU e di memoria assegnate a un nodo vengono aggiustate automaticamente. Se questa opzione è abilitata, i nodi del piano di controllo per il cluster utente vengono ridimensionati in base al numero di nodi worker nel cluster utente. Pertanto, man mano che aggiungi altri nodi worker al cluster utente, le dimensioni dei nodi del piano di controllo aumentano.

  • --enable-control-plane-v2: per attivare Controlplane V2, che consigliamo, includere questo flag. Quando il control plane v2 è abilitato, il control plane per un cluster utente viene eseguito su uno o più nodi nel cluster dell'utente stesso. Nella versione 1.30 e successive, è richiesta la versione 2 di Controlplane.

    Quando attivi Controlplane v2, devi specificare anche i seguenti flag:

    • --dns-servers=DNS_SERVER_1,...: un elenco di indirizzi IP dei server DNS per le VM separati da virgole.

    • --ntp-servers=NTP_SERVER_1,...: un elenco separato da virgole degli indirizzi IP dei server di ora da utilizzare per le VM.

    • --control-plane-ip-block, che ha il seguente formato:

        --control-plane-ip-block 'gateway=CP_GATEWAY,netmask=CP_NETMASK,ips=CP_IP_ADDRESS_1;CP_IP_ADDRESS_2 CP_HOST_2'

      Il valore contiene segmenti che iniziano con le parole chiave gateway, netmask e ips. Separa i segmenti con una virgola.

      Tieni presente quanto segue:

      • Racchiudi l'intero valore tra virgolette singole.
      • Gli spazi non sono consentiti, tranne tra un indirizzo IP e un nome host.

        Nell'elenco di indirizzi IP:

      • Puoi specificare un singolo indirizzo IP o un blocco CIDR di indirizzi IP.

      • Separa ogni indirizzo IP o blocco CIDR con un punto e virgola.

      • Per un singolo indirizzo IP, puoi facoltativamente specificare un nome host dopo l'indirizzo IP. Separa l'indirizzo IP e il nome host con uno spazio.

      • Se specifichi un blocco CIDR, non specificare un valore per il nome host.

        Ad esempio:

        --control-plane-ip-block 'gateway=192.168.0.1,netmask=255.0.0.0,ips=192.168.1.1;192.168.1.2 hostname-2;192.168.2.2/28`
        
    • (Facoltativo) --dns-search-domains=DNS_SEARCH_DOMAIN_1,...: un elenco separato da virgole dei domini di ricerca DNS utilizzabili dagli host. Questi domini vengono utilizzati come parte di un elenco di ricerca di domini.

      Ad esempio:

      --dns-search-domains example.com,examplepetstore.com

    Per un elenco completo dei flag e delle relative descrizioni, consulta la documentazione di riferimento dell'interfaccia a riga di comando gcloud.

    Flag vSphere

    Se necessario, specifica i seguenti flag facoltativi:

  • --disable-aag-config: se non includi questo flag, le regole anti-affinità Distributed Resource Scheduler (DRS) di VMware vengono create automaticamente per i nodi del cluster utente, in modo da distribuirle in almeno 3 host fisici del data center. Assicurati che l'ambiente vSphere soddisfi i requisiti. Se il cluster non soddisfa i requisiti, includi questo flag.

  • --disable-vsphere-csi: se non includi questo flag, i componenti CSI (Container Storage Interface) di vSphere vengono dipartiti nel cluster di utenti. Il driver CSI viene eseguito in un cluster Kubernetes nativo di cui è stato eseguito il deployment in vSphere per il provisioning di volumi permanenti nell'archiviazione di vSphere. Per ulteriori informazioni, consulta Utilizzare il driver Container Storage Interface di vSphere. Se non vuoi eseguire il deployment dei componenti CSI, includi questo flag.

    Per un elenco completo dei flag e delle relative descrizioni, consulta il riferimento all'interfaccia a riga di comando gcloud

    Monitorare l'avanzamento della creazione del cluster

    L'output del comando di creazione del cluster è simile al seguente:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    Nell'output di esempio, la stringa operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 è il OPERATION_ID dell'operazione a lunga esecuzione. Puoi scoprire lo stato dell'operazione con il seguente comando:

    gcloud container vmware operations describe OPERATION_ID \
      --project=FLEET_HOST_PROJECT_ID \
      --location=REGION
    

    Per ulteriori informazioni, consulta gcloud container vmware operations.

    La creazione del cluster di utenti richiede almeno 15 minuti. Puoi visualizzare il cluster nella console Google Cloud nella pagina Cluster GKE.

    Crea un node pool

    Dopo aver creato il cluster, devi creare almeno un pool di nodi prima di eseguire il deployment dei carichi di lavoro.

    gcloud container vmware node-pools create NODE_POOL_NAME \
    --cluster=USER_CLUSTER_NAME  \
    --project=FLEET_HOST_PROJECT_ID \
    --location=REGION \
    --image-type=IMAGE_TYPE  \
    --boot-disk-size=BOOT_DISK_SIZE \
    --cpus=vCPUS \
    --memory=MEMORY \
    --replicas=NODES \
    --enable-load-balancer
    

    Sostituisci quanto segue:

  • NODE_POOL_NAME: un nome scelto da te per il node pool. Il nome deve:

    • Deve contenere al massimo 40 caratteri.
    • Deve contenere solo caratteri alfanumerici minuscoli o un trattino (-).
    • Deve iniziare con un carattere alfabetico
    • Deve terminare con un carattere alfanumerico
  • USER_CLUSTER_NAME: il nome del cluster di utenti appena creato.

  • FLEET_HOST_PROJECT_ID: l'ID del progetto a cui è registrato il cluster.

  • REGION: la regione Google Cloud specificata al momento della creazione del cluster.

  • IMAGE_TYPE: il tipo di immagine del sistema operativo da eseguire sulle VM nel pool di nodi. Imposta uno dei seguenti valori: ubuntu_containerd o cos.

  • BOOT_DISK_SIZE: le dimensioni del disco di avvio in gibibyte (GiB) per ogni nodo del pool. Il valore minimo è 40 GiB.

  • vCPUs: il numero di vCPU per ogni nodo nel pool di nodi. Il numero minimo è 4.

  • MEMORY: la dimensione della memoria in mebibyte (MiB) per ogni nodo nel pool. Il valore minimo è 8192 MiB per nodo worker del cluster utente e deve essere un multiplo di 4.

  • NODES: il numero di nodi nel pool di nodi. Il minimo è 3.

  • Se utilizzi MetalLB come bilanciatore del carico, se vuoi consentire l'esecuzione dello speaker MetalLB sui nodi del pool, puoi includere --enable-load-balancer. MetalLB deve essere abilitato in almeno un pool di nodi. Se non includi questo flag, devi creare un altro pool di nodi da utilizzare per MetalLB.

    Per informazioni sui flag facoltativi, consulta Aggiungere un pool di nodi e la documentazione di riferimento dell'interfaccia a riga di comando gcloud.

Comandi gcloud di esempio

MetalLB e DHCP

gcloud container vmware clusters create user-cluster-1 \
    --project=example-project-12345 \
    --location=us-west1 \
    --admin-cluster-membership=projects/example-project-12345/locations/us-west1/memberships/admin-cluster-1 \
    --version=1.30.200-gke.101 \
    --admin-users=sara@example.com \
    --admin-users=amal@example.com \
    --enable-dhcp \
    --service-address-cidr-blocks=10.96.0.0/20 \
    --pod-address-cidr-blocks=192.168.0.0/16 \
    --metal-lb-config-address-pools='pool=lb-pool-1,manual-assign=False,avoid-buggy-ips=True,addresses=192.0.2.0/26;pool=lb-ingress-vip-pool,manual-assign=True,addresses=198.51.100.1/32' \
    --enable-control-plane-v2 \
    --control-plane-vip=203.0.113.1 \
    --ingress-vip=198.51.100.1

MetalLB e IP statici

gcloud container vmware clusters create user-cluster-3 \
    --project=example-project-12345 \
    --location=europe-west1 \
    --admin-cluster-membership=projects/example-project-12345/locations/global/memberships/admin-cluster-1 \
    --version=1.30.200-gke.101 \
    --admin-users=sara@example.com \
    --admin-users=amal@example.com \
    --static-ip-config-ip-blocks='gateway=192.0.2.254,netmask=255.255.255.0,ips=192.0.2.10 user-vm-1;192.0.2.11 user-vm-2' \
    --static-ip-config-ip-blocks='gateway=192.0.2.254,netmask=255.255.255.0,ips=192.0.2.12 user-vm-3;192.0.2.13 extra-vm' \
    --dns-servers=203.0.113.1,203.0.113.2  \
    --dns-search-domains=example.com,altostrat.com \
    --ntp-servers=203.0.113.3,203.0.113.4 \
    --service-address-cidr-blocks=10.96.0.0/20 \
    --pod-address-cidr-blocks=192.168.0.0/16 \
    --enable-control-plane-v2 \
    --control-plane-ip-block 'gateway=192.0.2.254,netmask=255.255.255.0,ips=198.51.100.1 cp-vm-1;198.51.100.2 cp-vm-2;198.51.100.3 cp-vm-3' \
    --replicas=3 \
    --metal-lb-config-address-pools='pool=lb-pool-1,manual-assign=False,avoid-buggy-ips=True,addresses=192.0.2.0/26;lb-ingress-vip-pool,manual-assign=True,addresses=198.51.100.1/32' \
    --control-plane-vip=172.16.20.61 \
    --ingress-vip=172.16.20.62

Bilanciatore del carico manuale e IP statici

gcloud container vmware clusters create user-cluster-4 \
    --project=example-project-12345 \
    --location=asia-east1 \
    --admin-cluster-membership=projects/example-project-12345/locations/asia-east1/memberships/admin-cluster-1 \
    --version=1.30.200-gke.101 \
    --admin-users=sara@example.com \
    --admin-users=amal@example.com \
    --static-ip-config-ip-blocks='gateway=192.0.2.254,netmask=255.255.255.0,ips=192.0.2.10 user-vm-1;192.0.2.11 user-vm-2';ips=192.0.2.12 user-vm-3;192.0.2.13 extra-vm'\
    --dns-servers=203.0.113.1,203.0.113.2  \
    --ntp-servers=203.0.113.3,203.0.113.4 \
    --service-address-cidr-blocks=10.96.0.0/20 \
    --pod-address-cidr-blocks=192.168.0.0/16 \
    --enable-control-plane-v2 \
    --control-plane-ip-block 'gateway=192.0.2.254,netmask=255.255.255.0,ips=198.51.100.1 cp-vm-1;198.51.100.2 cp-vm-2;198.51.100.3 cp-vm-3' \
    --replicas=3 \
    --control-plane-vip=192.0.2.60 \
    --ingress-vip=192.0.2.50 \
    --ingress-http-node-port=30243 \
    --ingress-https-node-port=30879

Terraform

Prima di iniziare

  1. Ottieni il nome e la posizione dell'appartenenza al parco risorse del tuo cluster di amministrazione:

    gcloud container fleet memberships list \
        --project=FLEET_HOST_PROJECT_ID
    

    Sostituisci FLEET_HOST_PROJECT_ID con l'ID del progetto a cui è registrato il cluster di amministrazione.

    L'output è simile al seguente:

    NAME             EXTERNAL_ID                           LOCATION
    admin-cluster-1  bb7803b4-8438-4b22-859f-4559b4b29072  global
    admin-cluster-2  ee16ee2b-6ec0-49fc-9413-3c89cbc70854  global
    admin-cluster-3  fc2b7ef5-39ff-4b63-b919-04c5adc67be4  us-west1
    

    La località specifica dove vengono eseguiti i servizi Fleet e Connect. I cluster di amministrazione creati prima della versione 1.28 sono gestiti dai servizi globali Fleet e Connect. In 1.28 e versioni successive, puoi specificare global o una regione Google Cloud quando crei il cluster.

  2. Per visualizzare un elenco delle versioni disponibili:

    gcloud container vmware clusters query-version-config \
        --admin-cluster-membership=ADMIN_CLUSTER_NAME \
        --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \
        --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \
        --location=REGION
    

    Sostituisci quanto segue:

    • ADMIN_CLUSTER_NAME: il nome del cluster di amministrazione.

    • FLEET_HOST_PROJECT_ID: l'ID del progetto a cui è registrato il cluster di amministrazione.

    • ADMIN_CLUSTER_REGION: la regione di appartenenza del fleet del cluster di amministrazione. Può essere globale o una regione Google Cloud. Utilizza la posizione del cluster di amministrazione dall'output di gcloud container fleet memberships list.

    • REGION: la regione Google Cloud che utilizzerai per creare il cluster. Si tratta della regione in cui vengono eseguiti l'API GKE On-Prem e i servizi Fleet e Connect. Specifica us-west1 o un'altra regione supportata.

    L'output del comando è simile al seguente:

    versions:
    - isInstalled: true
      version: 1.14.3-gke.25
    - version: 1.14.4-gke.54
    - version: 1.15.0-gke.581
    

    Le versioni che puoi utilizzare per creare un cluster utente sono contrassegnate da isInstalled=true, il che significa che il cluster di amministrazione dispone dei componenti specifici della versione necessari per gestire i cluster utente di quella versione. Se vuoi creare un cluster utente con un'altra versione disponibile, consulta Installare una versione successiva a quella del cluster di amministrazione.

Esempio

Puoi utilizzare il seguente esempio di configurazione di base per creare un cluster di utenti con il bilanciatore del carico MetalLB in bundle e un pool di nodi.

Per ulteriori informazioni e altri esempi, consulta la documentazione di riferimento di google_gkeonprem_vmware_cluster.

Imposta le variabili in terraform.tfvars

Il sample fornisce un file di variabili di esempio da passare a main.tf, che mostra come configurare il bilanciatore del carico MetalLB incluso e consente ai nodi del cluster di ottenere i propri indirizzi IP da un server DHCP fornito da te.

  1. Clona il repository anthos-samples e vai alla directory dove si trova l'esempio Terraform:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-onprem-terraform/avmw_user_cluster_metallb
    
  2. Crea una copia del file terraform.tfvars.sample:

    cp terraform.tfvars.sample terraform.tfvars
    
  3. Modifica i valori dei parametri in terraform.tfvars.

    project_id                  = "FLEET_HOST_PROJECT_ID"
    region                      = "REGION"
    admin_cluster_name          = "ADMIN_CLUSTER_NAME"
    on_prem_version             = "VERSION"
    admin_user_emails           = ["YOUR_EMAIL_ADDRESS", "ADMIN_2_EMAIL_ADDRESS"]
    cluster_name                = "avmw-user-cluster-metallb"
    control_plane_node_cpus     = 4
    control_plane_node_memory   = 8192
    control_plane_node_replicas = 3
    control_plane_vip           = "CONTROL_PLANE_VIP"
    ingress_vip                 = "INGRESS_VIP"
    lb_address_pools            = [
        { name = "lbpool_1", addresses = ["10.200.0.51-10.200.0.70"] }
    ]
    

    L'elenco seguente descrive le variabili:

    • project_id: l'ID del progetto in cui vuoi creare il cluster. Il progetto specificato viene utilizzato anche come progetto host del parco risorse. Deve essere lo stesso progetto a cui è registrato il cluster di amministrazione. Dopo la creazione, il cluster utente viene registrato automaticamente nel parco risorse del progetto selezionato. Il progetto host del parco risorse non può essere modificato dopo la creazione del cluster.

    • region: la regione Google Cloud in cui vengono eseguite l'API GKE On-Prem (gkeonprem.googleapis.com), il servizio Fleet (gkehub.googleapis.com) e il servizio Connect (gkeconnect.googleapis.com). Specifica us-west1 o un'altra regione supportata.

    • admin_cluster_name: il nome del cluster di amministrazione che gestisce il cluster di utenti. L'esempio presuppone che il cluster di amministrazione utilizzi global come regione. Se hai un cluster di amministrazione regionale:

      1. Apri main.tf in un editor di testo.
      2. Cerca admin_cluster_membership, che ha il seguente aspetto:
      admin_cluster_membership = "projects/${var.project_id}/locations/global/memberships/${var.admin_cluster_name}"
      1. Sostituisci global con la regione utilizzata dal cluster di amministrazione e salva il file.
    • on_prem_version: la versione di Google Distributed Cloud per il tuo cluster di utenti. In genere, viene specificata la stessa versione del cluster di amministrazione. Per specificare una versione successiva, installa una versione successiva a quella del cluster di amministrazione. Se non conosci la versione del cluster di amministrazione, esegui gcloud container vmware clusters query-version-config, che è il primo passaggio di Installa una versione successiva alla versione del cluster di amministrazione.

    • admin_user_emails: un elenco di indirizzi email degli utenti a cui devono essere concessi i privilegi amministrativi sul cluster. Assicurati di aggiungere il tuo indirizzo email se intendi amministrare il cluster.

      Quando viene creato il cluster, l'API GKE On-Prem applica al cluster i criteri di controllo dell'accesso basato su ruoli (RBAC) di Kubernetes per concedere agli utenti amministratore il ruolo clusterrole/cluster-admin di Kubernetes, che fornisce l'accesso completo a tutte le risorse del cluster in tutti gli spazi dei nomi. In questo modo, gli utenti possono accedere alla console anche utilizzando la propria identità Google.

    • cluster_name: un nome a tua scelta per il cluster di utenti. Il nome non può essere modificato dopo la creazione del cluster. Il nome deve:

      • Deve contenere al massimo 40 caratteri.
      • Deve contenere solo caratteri alfanumerici minuscoli o un trattino (-).
      • Deve iniziare con un carattere alfabetico
      • Deve terminare con un carattere alfanumerico
    • control_plane_node_cpus: il numero di vCPU per ciascun nodo del control plane per il tuo cluster utente. Il numero minimo è 4 vCPU.

    • control_plane_node_memory: la dimensione della memoria in mebibyte (MiB) per ogni control plane del tuo cluster utente. Il valore minimo è 8192 e deve essere un multiplo di 4.

    • control_plane_node_replicas: il numero di nodi del piano di controllo per il cluster utente. Ad esempio, puoi inserire un nodo del piano di controllo per un ambiente di sviluppo e tre nodi del piano di controllo per ambienti di produzione ad alta disponibilità (HA).

    • control_plane_vip: l'indirizzo IP virtuale (VIP) che hai scelto da configurare sul bilanciatore del carico per il server API Kubernetes del cluster utente.

    • ingress_vip: l'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il proxy in entrata.

    • lb_address_pools: un elenco di mappe che definiscono i pool di indirizzi da utilizzare dal bilanciatore del carico MetalLB. Il VIP in entrata deve trovarsi in uno di questi pool. Specifica quanto segue:

      • name: un nome per il pool.
      • addresses: un intervallo di indirizzi in notazione CIDR o in formato con trattini. Per specificare un singolo indirizzo IP in un pool (ad esempio per il VIP di ingresso), utilizza /32 nella notazione CIDR, ad esempio: 192.0.2.1/32.

      Sostituisci gli indirizzi IP di esempio con i tuoi valori e aggiungi altri pool di indirizzi, se necessario.

  4. Salva le modifiche in terraform.tfvars. Se non vuoi apportare modifiche facoltative a main.tf, vai alla sezione successiva, Creare il cluster e un pool di nodi.

(Facoltativo) Configura le impostazioni del cluster in main.tf

Questa sezione illustra alcune modifiche di configurazione facoltative che puoi apportare in main.tf. Prima di apportare modifiche, esegui il backup di main.tf:

cp main.tf main.tf.bak

Modalità di indirizzamento IP del nodo worker

Per impostazione predefinita, main.tf configura il cluster in modo da utilizzare un server DHCP fornito da te per assegnare indirizzi IP ai nodi worker del cluster. DHCP viene configurato includendo la mappa dhcp_config all'interno del blocco network_config. Se vuoi fornire indirizzi IP statici per i tuoi nodi worker, apporta le seguenti modifiche a main.tf:

  1. Sostituisci il blocco network_config e includi un blocco static_ip_config. Ad esempio:

      network_config {
        service_address_cidr_blocks = ["10.96.0.0/12"]
        pod_address_cidr_blocks = ["192.168.0.0/16"]
        host_config {
          dns_servers = ["10.254.41.1"]
          ntp_servers = ["216.239.35.8"]
        }
        static_ip_config {
          ip_blocks {
            netmask = "255.255.252.0"
            gateway = "10.251.31.254"
            ips {
              ip = "10.251.30.153"
              hostname = "vm-1"
            }
            ips {
              ip = "10.251.31.206"
              hostname = "vm-2"
            }
            ips {
              ip = "10.251.31.193"
              hostname = "vm-3"
            }
            ips {
              ip = "10.251.30.230"
              hostname = "vm-4"
            }
          }
        }
      }
    
  2. Sostituisci quanto segue con i tuoi valori:

    • service_address_cidr_blocks: un intervallo di indirizzi IP in formato CIDR da utilizzare per i servizi nel cluster. Deve essere un intervallo di almeno /24.

    • pod_address_cidr_blocks: un intervallo di indirizzi IP in formato CIDR da utilizzare per i pod nel cluster. Deve essere un intervallo di almeno /18.

    • dns_servers: un elenco degli indirizzi IP dei server DNS per le VM.

    • ntp_servers: un elenco degli indirizzi IP dei server di tempo da utilizzare per le VM.

    • Nel blocco static_ip_config, sostituisci i valori di netmask e gateway con gli indirizzi della tua rete. Sostituisciip e hostname con gli indirizzi IP e i nomi host dei tuoi nodi worker.

Configurare Controlplane V2

Per impostazione predefinita, main.tf configura il control plane per il cluster utente in modo che venga eseguito su uno o più nodi del cluster di amministrazione (modello kubeception). Se preferisci, puoi attivare Controlplane V2. Quando il control plane v2 è abilitato, quello per un cluster utente viene eseguito su uno o più nodi nel cluster utente stesso. Per configurare Controlplane V2, apporta le seguenti modifiche a main.tf:

  1. Aggiungi la seguente riga dopo la riga con admin_cluster_membership:

      enable_control_plane_v2 = "true"
    
  2. Aggiungi una mappa control_plane_v2_config al blocco network_config, ad esempio:

      control_plane_v2_config {
        control_plane_ip_block {
          netmask = "255.255.252.0"
          gateway = "10.250.71.254"
          ips {
            ip = "10.250.68.54"
            hostname = "cpv2-vm1"
          }
          ips {
            ip = "10.250.68.128"
            hostname = "cpv2-vm2"
          }
          ips {
            ip = "10.250.71.50"
            hostname = "cpv2-vm3"
          }
        }
      }
    
  3. Sostituisci i valori di netmask e gateway con gli indirizzi IP della tua rete. Sostituisci ip e hostname con gli indirizzi IP dei tuoi nodi del control plane.

Crea il cluster e un pool di nodi

  1. Inizializza e crea il piano Terraform:

    terraform init
    

    Terraform installa le librerie necessarie, ad esempio il provider Google Cloud.

  2. Esamina la configurazione e apporta le modifiche necessarie:

    terraform plan
    
  3. Applica il piano Terraform per creare il cluster utente:

    terraform apply
    

    La creazione del cluster utente richiede circa 15 minuti o più e altri 15 minuti per creare il pool di nodi. Puoi visualizzare il cluster nella console Google Cloud nella pagina Cluster GKE.

Risoluzione dei problemi

Consulta la sezione Risoluzione dei problemi relativi alla creazione e all'upgrade dei cluster.

Passaggi successivi