Creazione di un cluster di zona


Questa pagina mostra come creare un cluster di zona standard con le funzionalità predefinite abilitate in Google Kubernetes Engine (GKE). I cluster zonali hanno un unico piano di controllo in una singola zona. A seconda dei requisiti di disponibilità, puoi scegliere di distribuire i nodi del cluster a livello di zona in una singola zona o in più zone.

Best practice: utilizza i cluster a livello di regione per eseguire i carichi di lavoro di produzione, in quanto offrono una disponibilità superiore rispetto ai cluster zonali.

Per informazioni sui diversi tipi di disponibilità del cluster, consulta Informazioni sulle scelte di configurazione del cluster.

Zona singola o multi-zona

Un cluster a zona singola ha un unico piano di controllo in esecuzione in una zona. Questo piano di controllo gestisce i carichi di lavoro sui nodi in esecuzione nella stessa zona. Se esegui un caricamento di lavoro in una singola zona, questo non sarà disponibile in caso di interruzione di servizio della zona.

I nodi di un cluster multi-zona vengono eseguiti in più zone, ma ha solo un'unica replica del piano di controllo. Se esegui un carico di lavoro in più zone e si verifica un'interruzione a livello di zona, il carico di lavoro viene interrotto in quella zona, ma rimane disponibile nelle altre zone.

Se hai bisogno di una maggiore disponibilità per il piano di controllo, valuta la possibilità di creare un cluster regionale. In un cluster a livello di regione, il piano di controllo viene replicato in più zone di una regione.

Una volta creato un cluster, non puoi modificarlo da zonale a regionale o da regionale a zonale.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo gcloud components update.
  • I cluster multizonali utilizzano più risorse rispetto ai cluster monozonali. Se stai creando un cluster multi-zonale, assicurati di disporre di quote adeguate.
  • Assicurati di disporre delle autorizzazioni corrette per creare cluster. Come minimo, devi avere il ruolo Amministratore cluster Kubernetes Engine.
  • Se vuoi registrare il nuovo cluster in un parco risorse, assicurati di disporre delle API e delle autorizzazioni necessarie.

Configurare gli account di servizio IAM per GKE

GKE utilizza service account IAM collegati ai tuoi nodi per eseguire attività di sistema come il logging e il monitoraggio. Come minimo, questi account di servizio dei nodi devono avere il ruolo Account di servizio dei nodi predefinito di Kubernetes Engine (roles/container.defaultNodeServiceAccount) nel progetto. Per impostazione predefinita, GKE utilizza l'account di servizio predefinito di Compute Engine, creato automaticamente nel progetto, come account di servizio del nodo.

Per concedere il ruolo roles/container.defaultNodeServiceAccount all'account di servizio predefinito di Compute Engine, completa i seguenti passaggi:

console

  1. Vai alla pagina Welcome (Ti diamo il benvenuto):

    Vai a Benvenuto

  2. Nel campo Numero progetto, fai clic su Copia negli appunti.
  3. Vai alla pagina IAM:

    Vai a IAM

  4. Fai clic su Concedi accesso.
  5. Nel campo Nuove entità, specifica il seguente valore:
    PROJECT_NUMBER-compute@developer.gserviceaccount.com
    Sostituisci PROJECT_NUMBER con il numero del progetto che hai copiato.
  6. Nel menu Seleziona un ruolo, seleziona il ruolo Account di servizio del nodo predefinito Kubernetes Engine.
  7. Fai clic su Salva.

gcloud

  1. Trova il numero del tuo progetto Google Cloud:
    gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)"

    Sostituisci PROJECT_ID con l'ID progetto.

    L'output è simile al seguente:

    12345678901
    
  2. Concedi il ruolo roles/container.defaultNodeServiceAccount all'account di servizio predefinito Compute Engine:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/container.defaultNodeServiceAccount"

    Sostituisci PROJECT_NUMBER con il numero del progetto del passaggio precedente.

Creazione di un cluster di zona

Le informazioni minime che devi specificare quando crei un nuovo cluster zonale sono un nome, un progetto (di solito il progetto corrente) e una zona (di solito la posizione predefinita per gli strumenti a riga di comando), utilizzando le impostazioni predefinite per tutti gli altri valori. Tuttavia, esistono altre impostazioni di configurazione possibili, solo alcune delle quali sono descritte in questa sezione e alcune delle quali non possono essere modificate dopo la creazione del cluster. Assicurati di comprendere quali impostazioni non possono essere modificate dopo la creazione del cluster e di scegliere l'impostazione corretta quando crei un cluster se non vuoi doverlo creare di nuovo.

Puoi visualizzare una panoramica delle opzioni di configurazione del cluster in Informazioni sulle scelte di configurazione del cluster e un elenco completo delle possibili opzioni nelle guide di riferimento di gcloud container clusters create e Terraform google_container_cluster.

Puoi creare un cluster zonale utilizzando gcloud CLI, la console Google Cloud o Terraform.

Se stai sviluppando applicazioni GKE con Cloud Code per VS Code, prova a creare cluster con Cloud Code.

gcloud

Per creare un cluster di zona con gcloud CLI, utilizza uno dei seguenti comandi.

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del nuovo cluster.
  • CHANNEL: il tipo di canale di rilascio, che può essere rapid, regular, stable o None. Per impostazione predefinita, il cluster è registrato nel canale di rilascio regular, a meno che non sia specificato almeno uno dei seguenti flag: --cluster-version, --release-channel, --no-enable-autoupgrade e --no-enable-autorepair.
  • COMPUTE_ZONE: la zona di calcolo per il piano di controllo del cluster.
  • VERSION: la versione da specificare per il cluster.
  • COMPUTE_ZONE,COMPUTE_ZONE1,[...]: le zone in cui vengono creati i nodi. Puoi specificare tutte le zone necessarie per il tuo cluster. Tutte le zone devono trovarsi nella stessa regione del piano di controllo del cluster, specificato dal flag --zone. Per i cluster zonali, --node-locations deve contenere la zona principale del cluster.

Ti consigliamo vivamente di specificare un account di servizio IAM con privilegi minimi che i tuoi nodi possano utilizzare al posto dell'account di servizio predefinito di Compute Engine. Per imparare a creare un account di servizio con privilegi minimi, consulta Utilizzare un account di servizio con privilegio minimo minimi.

Per specificare un account di servizio personalizzato in gcloud CLI, aggiungi il seguente flag al comando:

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Sostituisci SERVICE_ACCOUNT_NAME con il nome del tuo account di servizio con privilegi minimi.

Utilizzando un canale di rilascio specifico:

Per creare un nuovo cluster utilizzando un canale di release specifico, esegui il seguente comando:

gcloud container clusters create CLUSTER_NAME \
    --release-channel CHANNEL \
    --zone COMPUTE_ZONE \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

Utilizzo di una versione specifica:

Per creare un nuovo cluster utilizzando una versione specifica, esegui il seguente comando:

gcloud container clusters create CLUSTER_NAME \
    --cluster-version VERSION \
    --zone COMPUTE_ZONE \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

Utilizzo della versione predefinita per i cluster non registrati in un canale di rilascio:

Per creare un nuovo cluster utilizzando la versione predefinita per i cluster non registrati in un canale di rilascio, non è necessario specificare una versione del cluster, ma è necessario impostare il canale di rilascio su None:

gcloud container clusters create CLUSTER_NAME \
    --release-channel None \
    --zone COMPUTE_ZONE \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

Esempio

Il comando seguente crea un cluster multi-zonale denominato example-cluster, in cui il piano di controllo del cluster si trova nella zona us-central-a e sono presenti tre posizioni dei nodi. Il cluster è registrato nel canale di rilascio regular.

Se il flag --num-nodes viene omesso, il numero predefinito di nodi per zona creati dal cluster è tre. Poiché sono state specificate tre zone, questo comando crea un cluster di nove nodi con tre nodi ciascuno in us-central1-a, us-central1-b e us-central1-c.

gcloud container clusters create example-cluster \
    --zone us-central1-a \
    --node-locations us-central1-a,us-central1-b,us-central1-c

Console

Per creare un cluster zonale con la console Google Cloud, svolgi le seguenti attività:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea.

  3. Nella sezione Nozioni di base sul cluster, completa quanto segue:

    1. Inserisci il nome del cluster.
    2. Per Tipo di località, seleziona A livello di zona, quindi seleziona la zona per il tuo cluster.
    3. Se stai creando un cluster multizonale, seleziona la casella di controllo Specifica le posizioni dei nodi predefiniti e poi scegli le zone aggiuntive in cui vuoi che vengano eseguiti i pool di nodi.

    4. Scegli un canale di rilascio. Se vuoi, puoi selezionare Nessun canale dall'elenco a discesa, ma ti consigliamo di esaminare il confronto tra i cluster registrati e non registrati a un canale di rilascio prima di scegliere questa opzione. GKE esegue automaticamente l'upgrade dei cluster non in un canale di rilascio con le versioni del canale stabile.

    5. (Facoltativo) Specifica una versione del piano di controllo dall'elenco a discesa Versione.

  4. (Facoltativo, disponibile con GKE Enterprise) Se vuoi registrare il nuovo cluster in un parco risorse, vai alla sezione Registrazione del parco risorse e segui le istruzioni della console Google Cloud per creare e registrare un nuovo cluster per completare la registrazione del cluster.

  5. Nel riquadro di navigazione, in Pool di nodi, fai clic su default-pool.

  6. Nella sezione Dettagli del pool di nodi, completa quanto segue:

    1. Inserisci un nome per il pool di nodi predefinito.
    2. (Facoltativo) Scegli la versione del nodo.
    3. Inserisci il numero di nodi da creare nel cluster. Devi avere una quota di risorse disponibile per i nodi e le relative risorse (ad esempio le route del firewall).
    4. (Facoltativo) Puoi scegliere di disattivare gli upgrade automatici dei nodi, ma ti consigliamo di esaminare le considerazioni prima di disattivare gli upgrade automatici dei nodi prima di scegliere questa opzione.
  7. Nel riquadro di navigazione, in Pool di nodi, fai clic su Nodi.

  8. Nell'elenco a discesa Tipo di immagine, seleziona l'immagine del nodo.

  9. Scegli la configurazione della macchina predefinita da utilizzare per le istanze. Ogni tipo di macchina viene fatturato in modo diverso. Il tipo di macchina predefinito è e2-medium. Per informazioni sui prezzi dei tipo di macchina, consulta il listino dei prezzi dei tipi di macchine.

  10. Nell'elenco a discesa Tipo di disco di avvio, seleziona il tipo di disco.

  11. Inserisci la dimensione del disco di avvio.

  12. (Facoltativo) Nel riquadro di navigazione, fai clic su Sicurezza in Pool di nodi.

  13. Se vuoi, specifica un account di servizio IAM personalizzato per i tuoi nodi:
    1. Nella pagina Impostazioni avanzate, espandi la sezione Sicurezza.
    2. Nel menu Account di servizio, seleziona l'account di servizio che preferisci.

    Ti consigliamo vivamente di specificare un account di servizio IAM con privilegi minimi che i tuoi nodi possano utilizzare al posto dell'account di servizio predefinito di Compute Engine. Per imparare a creare un account di servizio con privilegi minimi, consulta Utilizzare un account di servizio con privilegio minimo minimi.

  14. Fai clic su Crea.

Terraform

Per creare un cluster zonale con un pool di nodi a zona singola utilizzando Terraform, consulta il seguente esempio:

resource "google_container_cluster" "default" {
  name               = "gke-standard-zonal-single-zone"
  location           = "us-central1-a"
  initial_node_count = 1

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

Per creare un cluster zonale con un pool di nodi multizona utilizzando Terraform, consulta il seguente esempio:

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-multi-zone"
  location           = "us-central1"
  node_locations     = ["us-central1-b", "us-central1-c"]
  initial_node_count = 2

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

Per scoprire di più sull'utilizzo di Terraform, consulta Assistenza di Terraform per GKE.

Interagire con un cluster utilizzando kubectl

Dopo aver creato un cluster, devi configurare kubectl prima di poter interagire con il cluster dalla riga di comando.

Modelli di cluster

In precedenza, GKE supportava i modelli per i cluster. Questi modelli sono stati rimossi dalla console Google Cloud, ma sono ancora accessibili dai seguenti link:

Passaggi successivi

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni di GKE in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Prova GKE gratuitamente