Crea un cluster standard per eseguire carichi di lavoro dei container

Questo documento spiega come creare un cluster Kubernetes standard in una zona Google Distributed Cloud (GDC) con air gap. Un cluster standard fornisce un cluster Kubernetes con ambito a livello di progetto e altamente configurabile che include un insieme minimo di servizi gestiti inclusi. Il cluster standard offre una maggiore flessibilità per la configurazione del servizio rispetto al cluster condiviso, ma richiede anche un overhead di gestione maggiore. Per saperne di più sui cluster standard, consulta Configurazioni dei cluster Kubernetes.

I cluster standard sono una risorsa di zona e non possono estendersi su più zone. Per gestire i cluster in un universo multizona, devi crearli manualmente in ogni zona.

Questo documento è rivolto a un pubblico come gli sviluppatori di applicazioni all'interno del gruppo di operatori di applicazioni, responsabili della gestione dei workload dei container all'interno della propria organizzazione. Per saperne di più, consulta la documentazione sui segmenti di pubblico per GDC con air gap.

Prima di iniziare

Per creare un cluster standard, richiedi le autorizzazioni necessarie e prepara l'ambiente.

Richiedi ruoli IAM

Contatta l'amministratore dell'organizzazione IAM per farti concedere i seguenti ruoli:

  • IAM Project Admin (project-iam-admin): concede ad altri utenti i ruoli necessari per gestire l'accesso all'interno dei cluster standard.
  • Standard Cluster Admin (standard-cluster-admin): crea cluster standard nel progetto.

Questi ruoli sono associati allo spazio dei nomi del progetto.

prepara l'ambiente

Pianifica il blocco CIDR dei pod

Per allocare il blocco CIDR dei pod di dimensioni appropriate per i tuoi workload, devi calcolare la quantità di indirizzi IP necessari per il tuo cluster Kubernetes prima di crearlo. La maggior parte dei parametri di networking non può essere modificata dopo la creazione del cluster.

Un cluster Kubernetes segue la logica seguente per l'allocazione degli indirizzi IP:

  • Kubernetes assegna un blocco CIDR /24 composto da 256 indirizzi a ciascuno dei nodi. Questo numero rispetta il numero massimo predefinito di 110 pod per nodo per i cluster Kubernetes.
  • La dimensione del blocco CIDR assegnato a un nodo dipende dal valore dei pod massimi per nodo.
  • Il blocco contiene sempre almeno il doppio degli indirizzi rispetto al numero massimo di pod per nodo.

Consulta l'esempio seguente per capire come è stato calcolato il valore predefinito di Dimensione maschera per nodo= /24 per supportare 110 pod:

Maximum pods per node = 110
Total number of IP addresses required = 2 * 110 = 220

Per node mask size = /24
Number of IP addresses in a /24 = 2(32 - 24) = 256

Determina la maschera CIDR del pod richiesta per configurare il cluster Kubernetes in base al numero di nodi richiesto. Pianifica le aggiunte future di nodi al cluster durante la configurazione dell'intervallo CIDR:

  Total number of nodes supported = 2(Per node mask size - pod CIDR mask)

Poiché esiste una dimensione della maschera per nodo predefinita= /24 , consulta la tabella seguente che mappa la maschera CIDR del pod al numero di nodi supportati.

Maschera CIDR pod Calcolo: 2(dimensione della maschera per nodo - maschera CIDR) Numero massimo di nodi supportati, inclusi i nodi del control plane
/21 2(24 - 21) 8
/20 2(24-20) 16
/19 2(24 - 19) 32
/18 2(24 - 18) 64

Dopo aver calcolato il blocco CIDR dei pod per il cluster Kubernetes, configuralo come parte del flusso di lavoro di creazione del cluster nella sezione successiva.

crea un cluster standard

Per creare un cluster Standard, completa i seguenti passaggi:

Console

  1. Nel selettore di progetti, seleziona il tuo progetto.

    I cluster standard sono risorse con ambito di progetto. Se invece selezioni un'organizzazione, creerai un cluster condiviso, che ha come ambito l'organizzazione. Per saperne di più, consulta la gerarchia delle risorse.

  2. Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.

  3. Fai clic su Crea cluster.

  4. Nel campo Nome, specifica un nome per il cluster.

  5. Seleziona la zona in cui creare il cluster.

  6. Seleziona la versione di Kubernetes per il cluster.

  7. Fai clic su Avanti.

  8. Configura le impostazioni della rete per il cluster. Non puoi modificare queste impostazioni della rete dopo aver creato il cluster. L'Internet Protocol predefinito e l'unico supportato per i cluster Kubernetes è Internet Protocol versione 4 (IPv4).

    1. Se vuoi creare nodi del bilanciatore del carico dedicati, inserisci il numero di nodi da creare. Per impostazione predefinita, non ricevi nodi e il traffico del bilanciatore del carico viene eseguito attraverso i nodi del control plane.

    2. Seleziona il CIDR (Classless Inter-Domain Routing) del servizio da utilizzare. Ai servizi di cui hai eseguito il deployment, come i bilanciatori del carico, vengono assegnati indirizzi IP di questo intervallo.

    3. Seleziona il CIDR pod da utilizzare. Il cluster assegna gli indirizzi IP di questo intervallo ai pod e alle VM.

    4. Fai clic su Avanti.

  9. Esamina i dettagli del pool di nodi predefinito generato automaticamente per il cluster. Fai clic su Modifica per modificare il pool di nodi predefinito.

  10. Per creare altri node pool, seleziona Aggiungi node pool. Quando modifichi il pool di nodi predefinito o ne aggiungi uno nuovo, lo personalizzi con le seguenti opzioni:

    1. Assegna un nome al pool di nodi. Non puoi modificare il nome dopo aver creato il pool di nodi.
    2. Specifica il numero di nodi worker da creare nel pool di nodi.
    3. Seleziona la classe di macchina più adatta ai requisiti del tuo workload. Visualizza l'elenco delle seguenti impostazioni:

      • Tipo di macchina
      • CPU
      • Memoria
    4. Fai clic su Salva.

  11. Fai clic su Crea per creare il cluster.

La creazione di un cluster Standard può richiedere fino a 60 minuti.

API

  1. Crea una risorsa personalizzata Cluster e salvala come file YAML, ad esempio cluster.yaml:

    apiVersion: cluster.gdc.goog/v1
    kind: Cluster
    metadata:
      name: CLUSTER_NAME
      namespace: PROJECT_NAME
    spec:
      clusterNetwork:
        podCIDRSize: POD_CIDR
        serviceCIDRSize: SERVICE_CIDR
      initialVersion:
        kubernetesVersion: KUBERNETES_VERSION
      nodePools:
      - machineTypeName: MACHINE_TYPE
        name: NODE_POOL_NAME
        nodeCount: NUMBER_OF_WORKER_NODES
        taints: TAINTS
        labels: LABELS
        acceleratorOptions:
          gpuPartitionScheme: GPU_PARTITION_SCHEME
      releaseChannel:
        channel: UNSPECIFIED
    

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster. Il nome del cluster non deve terminare con -system. Il suffisso -system è riservato ai cluster creati da GDC.
    • PROJECT_NAME: il nome del progetto in cui creare il cluster.
    • POD_CIDR: la dimensione degli intervalli di rete da cui vengono allocati gli indirizzi IP virtuali dei pod. Se non viene impostato, viene utilizzato un valore predefinito 21.
    • SERVICE_CIDR: le dimensioni degli intervalli di rete da cui vengono allocati gli indirizzi IP virtuali del servizio. Se non viene impostato, viene utilizzato un valore predefinito 23.
    • KUBERNETES_VERSION: la versione di Kubernetes del cluster, ad esempio 1.26.5-gke.2100. Per elencare le versioni di Kubernetes disponibili da configurare, consulta Elenca le versioni di Kubernetes disponibili per un cluster.
    • MACHINE_TYPE: il tipo di macchina per i nodi worker del pool di nodi. Consulta i tipi di macchine disponibili per scoprire cosa puoi configurare.
    • NODE_POOL_NAME: il nome del pool di nodi.
    • NUMBER_OF_WORKER_NODES: il numero di nodi worker di cui eseguire il provisioning nel pool di nodi.
    • TAINTS: i taint da applicare ai nodi di questo pool di nodi. Questo è un campo facoltativo.
    • LABELS: le etichette da applicare ai nodi di questo pool di nodi. Contiene un elenco di coppie chiave-valore. Questo è un campo facoltativo.
    • GPU_PARTITION_SCHEME: lo schema di partizionamento della GPU, se esegui workload GPU. Questo è un campo facoltativo. Ad esempio, mixed-2. La GPU non viene partizionata se questo campo non è impostato. Per saperne di più sui profili GPU multi-istanza (MIG) disponibili, consulta Profili MIG supportati.
  2. Applica la risorsa personalizzata alla tua istanza GDC:

    kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVER
    

    Sostituisci MANAGEMENT_API_SERVER con il percorso kubeconfig del server API di zona. Se non hai ancora generato un file kubeconfig per il server API nella zona di destinazione, consulta Accedi.

La creazione di un cluster Standard può richiedere fino a 60 minuti.

Terraform

  1. In un file di configurazione Terraform, inserisci il seguente snippet di codice:

    provider "kubernetes" {
      config_path = "MANAGEMENT_API_SERVER"
    }
    
    resource "kubernetes_manifest" "cluster-create" {
      manifest = {
        "apiVersion" = "cluster.gdc.goog/v1"
        "kind" = "Cluster"
        "metadata" = {
          "name" = "CLUSTER_NAME"
          "namespace" = "PROJECT_NAME"
        }
        "spec" = {
          "clusterNetwork" = {
            "podCIDRSize" = "POD_CIDR"
            "serviceCIDRSize" = "SERVICE_CIDR"
          }
          "initialVersion" = {
            "kubernetesVersion" = "KUBERNETES_VERSION"
          }
          "nodePools" = [{
            "machineTypeName" = "MACHINE_TYPE"
            "name" = "NODE_POOL_NAME"
            "nodeCount" = "NUMBER_OF_WORKER_NODES"
            "taints" = "TAINTS"
            "labels" = "LABELS"
            "acceleratorOptions" = {
              "gpuPartitionScheme" = "GPU_PARTITION_SCHEME"
            }
          }]
          "releaseChannel" = {
            "channel" = "UNSPECIFIED"
          }
        }
      }
    }
    

    Sostituisci quanto segue:

    • MANAGEMENT_API_SERVER: il percorso kubeconfig del server API di zona. Se non hai ancora generato un file kubeconfig per il server API nella zona di destinazione, consulta Accedi.
    • CLUSTER_NAME: il nome del cluster. Il nome del cluster non deve terminare con -system. Il suffisso -system è riservato ai cluster creati da GDC.
    • PROJECT_NAME: il nome del progetto in cui creare il cluster.
    • POD_CIDR: la dimensione degli intervalli di rete da cui vengono allocati gli indirizzi IP virtuali dei pod. Se non viene impostato, viene utilizzato un valore predefinito 21.
    • SERVICE_CIDR: le dimensioni degli intervalli di rete da cui vengono allocati gli indirizzi IP virtuali del servizio. Se non viene impostato, viene utilizzato un valore predefinito 23.
    • KUBERNETES_VERSION: la versione di Kubernetes del cluster, ad esempio 1.26.5-gke.2100. Per elencare le versioni di Kubernetes disponibili da configurare, consulta Elenca le versioni di Kubernetes disponibili per un cluster.
    • MACHINE_TYPE: il tipo di macchina per i nodi worker del pool di nodi. Consulta i tipi di macchine disponibili per scoprire cosa puoi configurare.
    • NODE_POOL_NAME: il nome del pool di nodi.
    • NUMBER_OF_WORKER_NODES: il numero di nodi worker di cui eseguire il provisioning nel pool di nodi.
    • TAINTS: i taint da applicare ai nodi di questo pool di nodi. Questo è un campo facoltativo.
    • LABELS: le etichette da applicare ai nodi di questo pool di nodi. Contiene un elenco di coppie chiave-valore. Questo è un campo facoltativo.
    • GPU_PARTITION_SCHEME: lo schema di partizionamento della GPU, se esegui workload GPU. Questo è un campo facoltativo. Ad esempio, mixed-2. La GPU non viene partizionata se questo campo non è impostato. Per saperne di più sui profili GPU multi-istanza (MIG) disponibili, consulta Profili MIG supportati.
  2. Applica il nuovo cluster standard utilizzando Terraform:

    terraform apply
    

La creazione di un cluster Standard può richiedere fino a 60 minuti.

Passaggi successivi