Crea un cluster Kubernetes per consentire il deployment del workload container. I cluster sono una risorsa di zona e non possono estendersi su più zone. Per utilizzare i cluster in un deployment multizona, devi creare manualmente i cluster in ogni zona.
Prima di iniziare
Per ottenere le autorizzazioni necessarie per creare un cluster Kubernetes, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore cluster utente (user-cluster-admin
). Questo ruolo non è associato a uno spazio dei nomi.
Google Distributed Cloud (GDC) con air gap presenta i seguenti limiti 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
Configura il blocco CIDR del pod
Il cluster segue questa logica quando alloca gli indirizzi IP:
- Kubernetes assegna a ciascun nodo un blocco CIDR /24 composto da 256 indirizzi. Questo valore rispetta il valore massimo predefinito di 110 pod per nodo per i cluster utente.
- 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 richiesta da configurare per il cluster utente 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 abbiamo una dimensione della maschera per nodo predefinita= /24 , consulta la seguente tabella 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 |
Crea un cluster Kubernetes
Per creare un cluster Kubernetes:
Console
Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.
Fai clic su Crea cluster.
Nel campo Nome, specifica un nome per il cluster.
Seleziona la versione di Kubernetes per il cluster.
Seleziona la zona in cui creare il cluster.
Fai clic su Allega progetto e seleziona un progetto esistente da allegare al cluster. Quindi, fai clic su Salva. Puoi allegare o scollegare i progetti dopo aver creato il cluster dalla pagina dei dettagli del progetto. Prima di eseguire il deployment dei carichi di lavoro dei container, devi collegare un progetto al cluster.
Fai clic su Avanti.
Configura le impostazioni di rete per il cluster. Non puoi modificare queste impostazioni di rete dopo aver creato il cluster. Il protocollo internet predefinito e unico 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 viene eseguito tramite i nodi di controllo.
Seleziona il CIDR del servizio (Classless Inter-Domain Routing) da utilizzare. Ai tuoi servizi di cui è stato eseguito il deployment, come i bilanciatori del carico, vengono allocati indirizzi IP da questo intervallo.
Seleziona il CIDR dei pod da utilizzare. Il cluster alloca indirizzi IP da questo intervallo ai tuoi pod e alle tue VM.
Fai clic su Avanti.
Rivedi 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 node pool, seleziona Aggiungi node pool. Quando modifichi il pool di nodil predefinito o aggiungi un nuovopool di nodil, lo personalizzi 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 macchine più adatta ai requisiti del tuo workload. Visualizza l'elenco delle seguenti impostazioni:
- Tipo di macchina
- CPU
- Memoria
Fai clic su Salva.
Fai clic su Crea per creare il cluster.
API
Per creare un nuovo cluster utilizzando direttamente l'API, applica una risorsa personalizzata all'istanza GDC:
Crea una risorsa personalizzata
Cluster
e salvala come file YAML, ad esempiocluster.yaml
:apiVersion: cluster.gdc.goog/v1 kind: Cluster metadata: name: CLUSTER_NAME namespace: platform spec: clusterNetwork: podCIDRSize: POD_CIDR serviceCIDRSize: SERVICE_CIDR initialVersion: kubernetesVersion: KUBERNETES_VERSION loadBalancer: ingressServiceIPSize: LOAD_BALANCER_POOL_SIZE 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.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.LOAD_BALANCER_POOL_SIZE
: la dimensione dei pool di indirizzi IP non sovrapposti utilizzati dai servizi di bilanciamento del carico. Se non viene impostato, viene utilizzato un valore predefinito20
.MACHINE_TYPE
: il tipo di macchina per i nodi worker delpool di nodil. Visualizza i tipi di macchina disponibili per ciò che è disponibile per la configurazione.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 questo pool di nodi. 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. Ad esempio,mixed-2
. La GPU non è partizionata se questo campo non è impostato. Per i profili GPU multi-istanza (MIG) disponibili, vedi Profili MIG supportati.
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 per i dettagli.
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" = "platform" } "spec" = { "clusterNetwork" = { "podCIDRSize" = "POD_CIDR" "serviceCIDRSize" = "SERVICE_CIDR" } "initialVersion" = { "kubernetesVersion" = "KUBERNETES_VERSION" } "loadBalancer" = { "ingressServiceIPSize" = "LOAD_BALANCER_POOL_SIZE" } "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 per maggiori dettagli.CLUSTER_NAME
: il nome del cluster. Il nome del cluster non deve terminare con-system
. Il suffisso-system
è riservato ai cluster creati da GDC.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.LOAD_BALANCER_POOL_SIZE
: la dimensione dei pool di indirizzi IP non sovrapposti utilizzati dai servizi di bilanciamento del carico. Se non viene impostato, viene utilizzato un valore predefinito20
.MACHINE_TYPE
: il tipo di macchina per i nodi worker delpool di nodil. Visualizza i tipi di macchina disponibili per ciò che è disponibile per la configurazione.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 questo pool di nodi. 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. Ad esempio,mixed-2
. La GPU non è partizionata se questo campo non è impostato. Per i profili GPU multi-istanza (MIG) disponibili, vedi Profili MIG supportati.
Applica il nuovo cluster Kubernetes utilizzando Terraform:
terraform apply
Elenca le versioni di Kubernetes disponibili per un cluster
Puoi elencare le versioni di Kubernetes disponibili nella tua istanza GDC
utilizzando la CLI kubectl
:
kubectl get userclustermetadata.upgrade.private.gdc.goog \
-o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \
--kubeconfig MANAGEMENT_API_SERVER
Sostituisci MANAGEMENT_API_SERVER
con il percorso kubeconfig
del server API zonale del cluster.
L'output è simile al seguente:
K8S-VERSION
1.25.10-gke.2100
1.26.5-gke.2100
1.27.4-gke.500
Supportare i carichi di lavoro GPU in un cluster
Distributed Cloud fornisce il supporto delle GPU NVIDIA per i cluster Kubernetes, che eseguono i tuoi dispositivi GPU come workload utente. Ad esempio, potresti preferire eseguire notebook di intelligenza artificiale (AI) e machine learning (ML) in un ambiente GPU. Assicurati che il cluster supporti i dispositivi GPU prima di utilizzare i notebook di AI e ML. Il supporto GPU è abilitato per impostazione predefinita per i cluster per cui sono state sottoposte a provisioning macchine GPU.
I cluster possono essere creati utilizzando direttamente la console o l'API GDC. Assicurati di eseguire il provisioning delle macchine GPU per il cluster per supportare i carichi di lavoro GPU sui relativi container. Per saperne di più, vedi Creare un cluster Kubernetes.
Le GPU vengono allocate in modo statico. Le prime quattro GPU sono sempre dedicate a workload come le API di intelligenza artificiale (AI) e machine learning (ML) preaddestrate. Queste GPU non vengono eseguite su un cluster Kubernetes. Le GPU rimanenti sono disponibili per i cluster Kubernetes. I notebook AI e ML vengono eseguiti su cluster Kubernetes.
Assicurati di allocare macchine GPU per i tipi di cluster corretti per garantire l'utilizzo di componenti come le API AI e ML e i blocchi note.