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 a livello 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 segmenti di 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-gap.
Prima di iniziare
Verifica di disporre della configurazione appropriata per accedere ai cluster standard e gestirli. Per saperne di più, consulta Gestire l'accesso ai cluster standard.
Per ottenere le autorizzazioni necessarie per creare un cluster standard, chiedi all'amministratore IAM dell'organizzazione di concederti i ruoli Amministratore IAM progetto (
project-iam-admin) e Amministratore cluster standard (standard-cluster-admin). Questi ruoli sono associati allo spazio dei nomi del progetto.Pianifica i seguenti limiti di Google Distributed Cloud (GDC) con air gap per i cluster Kubernetes:
- 16 cluster per organizzazione
- 42 nodi worker per cluster e un minimo di tre nodi worker
- 4620 pod per cluster
- 110 pod per nodo
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
/24composto 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 l'esempio seguente 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 pod richiesta 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 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:
API
Crea una risorsa personalizzata
Clustere salvala come file YAML, ad esempiocluster.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: UNSPECIFIEDSostituisci 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 predefinito21.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 predefinito23.KUBERNETES_VERSION: la versione di Kubernetes del cluster, ad esempio1.26.5-gke.2100. Per elencare le versioni di Kubernetes disponibili da configurare, consulta Elencare 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 worker 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.
Applica la risorsa personalizzata all'istanza GDC:
kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVERSostituisci
MANAGEMENT_API_SERVERcon 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
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 predefinito21.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 predefinito23.KUBERNETES_VERSION: la versione di Kubernetes del cluster, ad esempio1.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 worker 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.
Applica il nuovo cluster standard utilizzando Terraform:
terraform apply
La creazione del cluster standard può richiedere fino a 60 minuti.
Passaggi successivi
- Gestire l'accesso ai cluster standard
- Esegui il deployment di un'app container ad alta disponibilità
- Carichi di lavoro con container in GDC
- Gerarchia delle risorse
- Configura Cloud NAT per i cluster standard