Crea un cluster standard per eseguire carichi di lavoro containerizzati

Questo documento spiega come creare un cluster Kubernetes standard in una zona air-gapped di Google Distributed Cloud (GDC). Un cluster standard fornisce un cluster Kubernetes altamente configurabile e con ambito di progetto che include un insieme minimo di servizi gestiti inclusi. Il cluster standard offre 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 utilizzare i cluster in un universo multizona, devi creare manualmente i cluster in ogni zona.

Questo documento è destinato a un pubblico come gli sviluppatori di applicazioni all'interno del gruppo di operatori di applicazioni, responsabili della gestione dei carichi di lavoro dei container all'interno della propria organizzazione. Per saperne di più, consulta la documentazione relativa ai segmenti di pubblico per GDC air-gapped.

Prima di iniziare

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

Richiedere ruoli IAM

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

  • Amministratore IAM progetto (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

  • Verifica di disporre della configurazione appropriata per accedere e gestire i cluster standard. Per saperne di più, vedi Gestire l'accesso ai cluster standard.
  • Genera il file kubeconfig del server API zonale per ospitare il cluster. Imposta la variabile di ambiente MANAGEMENT_API_SERVER sul percorso kubeconfig. Per saperne di più, consulta Risorse del server API di gestione delle zone.
  • Esamina i limiti del cluster per le considerazioni sulle risorse.

Pianifica il blocco CIDR del pod

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

Un cluster Kubernetes segue la logica di procedura quando alloca indirizzi IP:

  • Kubernetes assegna a ciascun nodo un blocco CIDR /24 composto da 256 indirizzi. Questo importo rispetta il limite massimo predefinito di 110 pod per nodo per i cluster Kubernetes.
  • Le dimensioni del blocco CIDR assegnato a un nodo dipendono dal valore massimo di pod per nodo.
  • Il blocco contiene sempre almeno il doppio degli indirizzi rispetto al numero massimo di pod per nodo.

Consulta il seguente esempio per capire come è stato calcolato il valore predefinito di Per node mask size= /24 per ospitare 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 necessaria da configurare per il cluster Kubernetes in base al numero di nodi richiesto. Pianifica le future aggiunte di nodi al cluster durante la configurazione dell'intervallo CIDR:

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

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

Maschera CIDR pod Calcolo: 2(dimensione 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 del pod per il cluster Kubernetes, configurarlo nell'ambito del flusso di lavoro di creazione del cluster nella sezione successiva.

crea un cluster standard

Per creare un cluster standard, completa i seguenti passaggi:

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 configurato, viene utilizzato un valore predefinito 21.
    • SERVICE_CIDR: la dimensione degli intervalli di rete da cui vengono allocati gli indirizzi IP virtuali del servizio. Se non viene configurato, 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. Visualizza i tipi di macchina disponibili per ciò che è possibile configurare.
    • NODE_POOL_NAME: il nome del pool di nodi.
    • NUMBER_OF_WORKER_NODES: il numero di nodi di lavoro di cui eseguire il provisioning nelpool di nodil.
    • TAINTS: le incompatibilità da applicare ai nodi di questopool di nodil. Questo è un campo facoltativo.
    • LABELS: le etichette da applicare ai nodi di questopool di nodil. Contiene un elenco di coppie chiave-valore. Questo è un campo facoltativo.
    • GPU_PARTITION_SCHEME: lo schema di partizionamento della GPU, se esegui carichi di lavoro 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 all'istanza GDC:

    kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVER
    

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

La creazione del 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 zonale. 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 configurato, viene utilizzato un valore predefinito 21.
    • SERVICE_CIDR: la dimensione degli intervalli di rete da cui vengono allocati gli indirizzi IP virtuali del servizio. Se non viene configurato, 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. Visualizza i tipi di macchina disponibili per ciò che è possibile configurare.
    • NODE_POOL_NAME: il nome del pool di nodi.
    • NUMBER_OF_WORKER_NODES: il numero di nodi di lavoro di cui eseguire il provisioning nelpool di nodil.
    • TAINTS: le incompatibilità da applicare ai nodi di questopool di nodil. Questo è un campo facoltativo.
    • LABELS: le etichette da applicare ai nodi di questopool di nodil. Contiene un elenco di coppie chiave-valore. Questo è un campo facoltativo.
    • GPU_PARTITION_SCHEME: lo schema di partizionamento della GPU, se esegui carichi di lavoro 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 del cluster standard può richiedere fino a 60 minuti.

Passaggi successivi