Questa pagina mostra come controllare l'infrastruttura di computing e la scalabilità automatica il comportamento dei cluster Google Kubernetes Engine (GKE) in base alle esigenze specifiche i tuoi carichi di lavoro utilizzando classi di calcolo personalizzate. Dovresti già conoscere il concetto di classi di calcolo personalizzate. Per maggiori dettagli, consulta Informazioni sui tipi di calcolo personalizzati.
Questa pagina è rivolta agli amministratori della piattaforma che vogliono definire in modo dichiarativo i profili di scalabilità automatica per i nodi e agli operatori di cluster che vogliono eseguire i propri carichi di lavoro su classi di calcolo specifiche.
Informazioni sulle classi di calcolo personalizzate
Le classi di calcolo personalizzate sono Kubernetes Risorse personalizzate che ti consentono di definire le priorità che GKE deve seguire dei nodi per l'esecuzione dei carichi di lavoro. Puoi usare una classe di computing personalizzata segui questi passaggi:
- Fornisci a GKE un insieme di priorità da seguire in sequenza durante il provisioning dei nodi, ciascuno con parametri specifici come una serie di macchine Compute Engine o una capacità di risorse minima
- Definizione delle soglie e dei parametri di scalabilità automatica per la rimozione di elementi sottoutilizzati i nodi e il consolidamento efficiente dei carichi di lavoro sulla capacità di calcolo esistente
- Indica a GKE di sostituire automaticamente il nodo meno preferito configurazioni con più configurazioni preferite dei nodi per un carico di lavoro ottimale rendimento
Per comprendere tutte le opzioni di configurazione e il modo in cui interagiscono con ciascuna e con la modalità GKE Autopilot e GKE Modalità Standard, consulta Informazioni sulle classi di calcolo personalizzate.
Prezzi
La risorsa personalizzata ComputeClass
è fornita senza costi aggiuntivi in GKE. Si applicano le seguenti considerazioni sui prezzi:
Modalità GKE Autopilot: gli addebiti vengono effettuati utilizzando basata sui nodi. Per maggiori dettagli, consulta Prezzi della modalità Autopilot.
Modalità GKE Standard: consulta Prezzi della modalità Standard.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
install e poi
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente
eseguendo
gcloud components update
.
- Assicurati di avere un cluster GKE esistente che esegue la versione 1.30.3-gke.1451000 o successive. Per ulteriori informazioni, consulta Creare un cluster Autopilot.
- Se utilizzi un cluster in modalità Standard, assicurati di avere almeno un pool di nodi con la scalabilità automatica abilitata o che il cluster utilizzi il provisioning automatico dei nodi.
Scenario di esempio per le classi di calcolo
Questa pagina presenta uno scenario di esempio per il quale definisci un'istanza di computing . Nella pratica, dovresti considerare i requisiti dei tuoi carichi di lavoro e organizzazione e definisci le classi di calcolo che soddisfano tali i tuoi requisiti. Per descrizioni complete di tutte le opzioni per le classi di computing, e per considerazioni speciali, vedi Informazioni sulle classi di calcolo personalizzate.
Considera il seguente esempio di scenario:
- Il tuo obiettivo è ottimizzare i costi di gestione dei tuoi carichi di lavoro
- I carichi di lavoro sono a tolleranza di errore e non richiedono un arresto controllato runtime esteso
- I carichi di lavoro richiedono almeno 64 vCPU per funzionare in modo ottimale
- Hai un limite della serie di macchine Compute Engine N2
In base allo scenario di esempio, decidi di creare un gruppo di calcolo che:
- Dai la priorità ai nodi spot N2 con almeno 64 vCPU
- Consente a GKE di eseguire il fallback su qualsiasi nodo Spot N2, indipendentemente dal calcolo capacità
- Se non sono disponibili nodi N2 Spot, consente a GKE di utilizzare i nodi N2 on demand
- Indica a GKE di spostare i carichi di lavoro sui nodi spot ogni volta sono di nuovo disponibili
Configura una classe di computing in modalità Autopilot
In GKE Autopilot, definisci una classe di calcolo, la esegui nel cluster e la richiedi nei tuoi carichi di lavoro. GKE esegue qualsiasi passaggio di configurazione dei nodi, ad esempio l'applicazione di etichette e incompatibilità.
Salva il seguente manifest come compute-class.yaml
:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: cost-optimized
spec:
priorities:
- machineFamily: n2
spot: true
minCores: 64
- machineFamily: n2
spot: true
- machineFamily: n2
spot: false
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
Configurare una classe di calcolo in modalità Standard
Nei cluster in modalità GKE Standard, definisci una classe di calcolo, dopodiché potresti dover eseguire una configurazione manuale per assicurarti che i pod della classe di calcolo vengano pianificati come previsto. La configurazione manuale dipende dal fatto che il provisioning dei pool di nodi sia automatico o meno, come segue:
- Pool di nodi gestiti dal provisioning automatico dei nodi: non è richiesta alcuna configurazione manuale. Il provisioning automatico dei nodi esegue automaticamente la classe di calcolo la procedura di configurazione. Per maggiori dettagli, consulta Provisioning automatico dei nodi e classi di calcolo.
- Pool di nodi creati manualmente: è richiesta la configurazione manuale. Devi aggiungi etichette dei nodi e incompatibilità dei nodi ai pool di nodi creati manualmente per associare i nodi a una specifica classe di computing. Per maggiori dettagli, vedi Configura pool di nodi creati manualmente per l'utilizzo delle classi di calcolo.
Utilizzare le classi di calcolo con i pool di nodi creati manualmente
Questa sezione mostra come definire una classe di computing in un cluster che utilizza solo pool di nodi creati manualmente.
Salva il seguente manifest come
compute-class.yaml
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: cost-optimized spec: priorities: - machineFamily: n2 spot: true minCores: 64 - machineFamily: n2 spot: false activeMigration: optimizeRulePriority: true
Crea un nuovo pool di nodi con scalabilità automatica che utilizza VM spot e associa con la classe compute:
gcloud container node-pools create cost-optimized-pool \ --location=LOCATION \ --cluster=CLUSTER_NAME \ --machine-type=n2-standard-64 \ --spot \ --enable-autoscaling \ --max-nodes=9 \ --node-labels="cloud.google.com/compute-class=cost-optimized" \ --node-taints="cloud.google.com/compute-class=cost-optimized:NoSchedule"
Sostituisci quanto segue:
LOCATION
: la località del cluster.CLUSTER_NAME
: il nome del cluster esistente.
Crea un nuovo pool di nodi a scalabilità automatica con VM on demand e associalo a la classe compute:
gcloud container node-pools create on-demand-pool \ --location=LOCATION \ --cluster=CLUSTER_NAME \ --machine-type=n2-standard-64 \ --enable-autoscaling \ --max-nodes=9 \ --num-nodes=0 \ --node-labels="cloud.google.com/compute-class=cost-optimized" \ --node-taints="cloud.google.com/compute-class=cost-optimized:NoSchedule"
Quando esegui il deployment di pod che richiedono questa classe di computing e i nuovi nodi devono essere
vengono creati, GKE dà la priorità alla creazione di nodi
Pool di nodi cost-optimized-pool
. Se non è possibile creare nuovi nodi,
GKE crea nodi nel pool di nodi on-demand-pool
.
Per maggiori dettagli su come i pool di nodi creati manualmente interagiscono con di computing, consulta Configura pool di nodi creati manualmente per l'utilizzo delle classi di calcolo.
Usa classi di calcolo con pool di nodi di cui è stato eseguito il provisioning automatico
Questa sezione mostra come definire una classe di computing in un cluster che utilizza e provisioning automatico.
Salva il seguente manifest come compute-class.yaml
:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: cost-optimized
spec:
priorities:
- machineFamily: n2
spot: true
minCores: 64
- machineFamily: n2
spot: true
- machineFamily: n2
spot: false
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
Quando esegui il deployment di pod che richiedono questa classe di computing e i nuovi nodi devono essere
creati, GKE dà la priorità alla creazione di nodi negli elementi dell'ordine
campo priorities
. Se necessario, GKE crea nuovi pool di nodi chesoddisfano i requisiti hardware della classe di calcolo.
Per maggiori dettagli su come funziona il provisioning automatico dei nodi con il calcolo personalizzato corsi, vedi Classi di calcolo e provisioning automatico dei nodi.
Personalizza le soglie di scalabilità automatica per il consolidamento dei nodi
Per impostazione predefinita, GKE rimuove i nodi sottoutilizzati e ripianifica
carichi di lavoro in altri nodi disponibili. Puoi personalizzare ulteriormente le soglie
e i tempi dopo i quali un nodo diventa un candidato per la rimozione utilizzando il
campo autoscalingPolicy
nella definizione della classe di calcolo, come nell'esempio seguente:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: cost-optimized
spec:
priorities:
- machineFamily: n2
spot: true
minCores: 64
- machineFamily: n2
spot: true
- machineFamily: n2
spot: false
activeMigration:
optimizeRulePriority: true
autoscalingPolicy:
consolidationDelayMinutes : 5
consolidationThreshold : 70
In questo esempio, un nodo diventa un candidato alla rimozione se è sottoutilizzato per il 70% della sua capacità di CPU e memoria disponibile per più di cinque minuti. Per un elenco dei parametri disponibili, vedi Imposta i parametri di scalabilità automatica per il consolidamento dei nodi.
Esegui il deployment di una classe di calcolo in un cluster
Dopo aver definito una classe di computing, esegui il deployment nel cluster:
kubectl apply -f compute-class.yaml
Questa classe di computing è pronta per essere utilizzata nel cluster. Puoi richiedere la classe di calcolo nelle specifiche del pod o, facoltativamente, impostarla come classe di calcolo predefinita in uno spazio dei nomi specifico.
Imposta una classe di computing predefinita per uno spazio dei nomi
Quando imposti una classe di calcolo predefinita per uno spazio dei nomi, GKE la utilizza per creare i nodi per tutti i pod di cui esegui il deployment nello spazio dei nomi. Se un pod richiede esplicitamente una classe di calcolo diversa, la richiesta a livello di pod sostituisce quella predefinita dello spazio dei nomi.
Per impostare una classe di computing come predefinita per uno spazio dei nomi specifico:
Crea uno spazio dei nomi:
kubectl create namespace cost-optimized-ns
Etichetta lo spazio dei nomi con la classe di computing:
kubectl label namespaces cost-optimized-ns \ cloud.google.com/default-compute-class=cost-optimized
Richiedere una classe di calcolo in un carico di lavoro
Per richiedere una classe di calcolo in un carico di lavoro, aggiungi un selettore di nodi per la classe di calcolo nel file manifest.
Salva il seguente manifest come
cc-workload.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: custom-workload spec: replicas: 2 selector: matchLabels: app: custom-workload template: metadata: labels: app: custom-workload spec: nodeSelector: cloud.google.com/compute-class: cost-optimized containers: - name: test image: gcr.io/google_containers/pause resources: requests: cpu: 1.5 memory: "4Gi"
Esegui il deployment del carico di lavoro:
kubectl apply -f cc-workload.yaml
Quando esegui il deployment di questo carico di lavoro, GKE aggiunge automaticamente ai pod una tolleranza che corrisponde al taint del nodo per la classe di calcolo richiesta. Questa tolleranza garantisce che solo i pod che richiedono l'elaborazione su nodi delle classi di computing.