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 con ambito di progetto e altamente configurabile che include un insieme minimo di servizi gestiti inclusi. Il cluster standard offre maggiore flessibilità per configurazione del servizio rispetto al cluster condiviso, ma richiede anche un maggiore overhead di gestione. Per saperne di più sui cluster standard, consulta Configurazione 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 con container all'interno della propria organizzazione. Per saperne di più, consulta Pubblico per la documentazione GDC con air gap.
Prima di iniziare
Per creare un cluster standard, richiedi le autorizzazioni necessarie e prepara l'ambiente.
Richiedi i ruoli IAM
Contatta l'amministratore IAM dell'organizzazione per concederti i seguenti ruoli:
- Project IAM 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
- Verifica di avere la configurazione appropriata per accedere e gestire i cluster standard. Per saperne di più, consulta Gestire l'accesso ai cluster standard.
- Genera il file kubeconfig del server API di zona per ospitare il cluster.
Imposta la variabile di ambiente
MANAGEMENT_API_SERVERsul percorso kubeconfig. Per saperne di più, consulta Risorse del server API di gestione di zona. - Esamina i limiti dei cluster per le considerazioni sulle risorse.
Pianifica il blocco CIDR dei 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 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 procedere quando alloca gli indirizzi IP:
- Kubernetes assegna un blocco CIDR
/24composto da 256 indirizzi a ciascuno dei nodi. Questo importo rispetta il valore 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 dei pod richiesta da configurare per 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)
Dato che esiste un valore predefinito Per node mask size= /24 , consulta la seguente tabella che mappa la maschera CIDR dei pod al numero di nodi supportati.
| Maschera CIDR dei pod | Calcolo: 2(Per node mask size - CIDR mask) | Numero massimo di nodi supportati, inclusi i nodi del piano di controllo |
|---|---|---|
| /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, 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:
Console
Nel selettore di progetti, seleziona il tuo progetto.
I cluster standard sono risorse con ambito di progetto. Se selezioni un'organizzazione, creerai un cluster condiviso, che ha ambito di organizzazione. Per saperne di più, consulta la gerarchia delle risorse.
Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.
Fai clic su Crea cluster.
Nel campo Nome, specifica un nome per il cluster.
Seleziona la zona in cui creare il cluster.
Seleziona la versione di Kubernetes per il cluster.
Fai clic su Avanti.
Configura le impostazioni della rete per il cluster. Non puoi modificare queste impostazioni della rete dopo aver creato il cluster. Il protocollo internet predefinito e supportato per i cluster Kubernetes è Internet Protocol versione 4 (IPv4).
Se vuoi creare nodi del bilanciatore del carico dedicati, inserisci il numero di nodi da creare. Per impostazione predefinita, ricevi zero nodi e il traffico del bilanciatore del carico passa attraverso i nodi del piano di controllo.
Seleziona il CIDR del servizio (Classless Inter-Domain Routing) da utilizzare. Gli indirizzi IP dei servizi di cui hai eseguito il deployment, come i bilanciatori del carico, vengono allocati da questo intervallo.
Seleziona il CIDR dei pod da utilizzare. Il cluster alloca gli indirizzi IP da questo intervallo ai pod e alle VM.
Fai clic su Avanti.
Esamina i dettagli del pool di nodi predefinito generato automaticamente per il cluster. Fai clic su edit Modifica per modificare il pool di nodi predefinito.
Per creare altri pool di nodi, seleziona Aggiungi pool di nodi. Quando modifichi il pool di nodi predefinito o aggiungi un nuovo pool di nodi, puoi personalizzarlo con le seguenti opzioni:
- Assegna un nome al pool di nodi. Non puoi modificare il nome dopo aver creato il pool di nodi.
- Specifica il numero di nodi worker da creare nel pool di nodi.
Seleziona la classe di macchina più adatta ai requisiti del tuo carico di lavoro. Visualizza l'elenco delle seguenti impostazioni:
- Tipo di macchina
- CPU
- Memoria
Fai clic su Salva.
Fai clic su Crea per creare il cluster.
La creazione del cluster standard può richiedere fino a 60 minuti.
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: le dimensioni 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: le dimensioni degli intervalli di rete da cui vengono allocati gli indirizzi IP virtuali dei servizi. 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 la configurazione.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: le incompatibilità 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 carichi di lavoro con GPU. Questo è un campo facoltativo. Ad esempio,mixed-2. Se questo campo non è impostato, la GPU non viene partizionata. Per saperne di più sui profili MIG (Multi-Instance GPU) 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 di zona. Se non hai ancora generato un file kubeconfig per il server API nella zona di destinazione, consulta Accedere.
La creazione del cluster standard può richiedere fino a 60 minuti.
Terraform
In un file di configurazione di 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 Accedere.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: le dimensioni 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: le dimensioni degli intervalli di rete da cui vengono allocati gli indirizzi IP virtuali dei servizi. 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 la configurazione.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: le incompatibilità 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 carichi di lavoro con GPU. Questo è un campo facoltativo. Ad esempio,mixed-2. Se questo campo non è impostato, la GPU non viene partizionata. Per saperne di più sui profili MIG (Multi-Instance GPU) 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
- Eseguire il deployment di un'app containerizzata ad alta disponibilità
- Carichi di lavoro con container in GDC
- Gerarchia delle risorse
- Configurare Cloud NAT per i cluster standard