Contribuisci a migliorare questa pagina
Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.
Crea un pool di nodi per EKS Auto Mode
I pool di nodi Amazon EKS forniscono un modo flessibile per gestire le risorse di calcolo nel cluster Kubernetes. Questo argomento mostra come creare e configurare pool di nodi usando Karpenter, uno strumento di provisioning dei nodi che aiuta a ottimizzare il dimensionamento dei cluster e l’utilizzo delle risorse. Con la risorsa NodePool di Karpenter, puoi definire requisiti specifici per le tue risorse di calcolo, inclusi i tipi di istanze, le zone di disponibilità, le architetture e i tipi di capacità.
Non è possibile modificare il system integrato e i pool di nodi general-purpose. È solo possibile abilitarli o disabilitarli. Per ulteriori informazioni, consulta Abilitazione o disabilitazione i NodePools integrati.
La specifica NodePool permette un controllo granulare delle risorse di elaborazione del cluster EKS tramite diverse etichette e requisiti supportati. Queste comprendono opzioni per specificare le categorie di istanze EC2, le configurazioni della CPU, le zone di disponibilità, le architetture (ARM64/AMD64) e i tipi di capacità (spot o on-demand). È inoltre possibile impostare limiti di risorse per l’utilizzo della CPU e della memoria, garantendo che il cluster rimanga entro i limiti operativi richiesti.
EKS Auto Mode sfrutta le note etichette Kubernetes per offrire metodi coerenti e standardizzati di identificazione delle caratteristiche dei nodi. Queste etichette, come topology.kubernetes.io/zone per le zone di disponibilità e kubernetes.io/arch per l’architettura della CPU, seguono le convenzioni stabilite da Kubernetes. Inoltre, le etichette specifiche EKS (precedute dal prefisso eks.amazonaws.com/) estendono questa funzionalità con attributi specifici AWS quali tipi di istanza, produttori di CPU, capacità GPU e specifiche di rete. Questo sistema di etichettatura standardizzato consente un’integrazione ottimale con gli strumenti Kubernetes esistenti, fornendo al tempo stesso una profonda integrazione dell’infrastruttura AWS.
Creazione di NodePool
Segui i seguenti passaggi per creare un NodePool per il cluster Amazon EKS:
-
Crea un file YAML denominato
nodepool.yamlcon la configurazione NodePool richiesta. Puoi utilizzare la configurazione di esempio seguente. -
Applica il NodePool al cluster:
kubectl apply -f nodepool.yaml -
Verificare che il NodePool sia stato creato correttamente:
kubectl get nodepools -
(Facoltativo) Monitora lo stato del NodePool:
kubectl describe nodepool default
Assicurati che il NodePool faccia riferimento a una NodeClass valida ed esistente nel tuo cluster. NodeClass definisce configurazioni specifiche AWS per le risorse di calcolo. Per ulteriori informazioni, consulta Creazione di una classe di nodi per Amazon EKS.
NodePool di esempio
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: my-node-pool spec: template: metadata: labels: billing-team: my-team spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["c", "m", "r"] - key: "eks.amazonaws.com/instance-cpu" operator: In values: ["4", "8", "16", "32"] - key: "topology.kubernetes.io/zone" operator: In values: ["us-west-2a", "us-west-2b"] - key: "kubernetes.io/arch" operator: In values: ["arm64", "amd64"] limits: cpu: "1000" memory: 1000Gi
Etichette supportate da EKS Auto Mode
EKS Auto Mode supporta le seguenti etichette note.
Nota
EKS Auto Mode utilizza etichette diverse rispetto a Karpenter. Le etichette relative alle istanze gestite da EC2 iniziano con eks.amazonaws.com.
| Etichetta | Esempio | Descrizione |
|---|---|---|
|
topology.kubernetes.io/zone |
us-east-2a |
Regione AWS |
|
node.kubernetes.io/instance-type |
g4dn.8xlarge |
Tipo di istanza AWS |
|
kubernetes.io/arch |
amd64 |
Le architetture sono definite dai valori GOARCH |
|
karpenter.sh/capacity-type |
spot |
I tipi di capacità includono |
|
eks.amazonaws.com/instance-hypervisor |
nitro |
Tipi di istanze che usano un hypervisor specifico |
|
eks.amazonaws.com/compute-type |
auto |
Identifica i nodi gestiti da EKS Auto Mode |
|
eks.amazonaws.com/instance-encryption-in-transit-supported |
true |
Tipi di istanza che supportano (o non supportano) la crittografia in transito |
|
eks.amazonaws.com/instance-category |
g |
Tipi di istanza della stessa categoria, in genere la stringa che precede il numero di generazione |
|
eks.amazonaws.com/instance-generation |
4 |
Numero di generazione del tipo di istanza in una categoria di istanza |
|
eks.amazonaws.com/instance-family |
g4dn |
Tipi di istanza con proprietà simili ma quantità di risorse differenti |
|
eks.amazonaws.com/instance-size |
8xlarge |
Tipi di istanza con quantità di risorse simili ma proprietà differenti |
|
eks.amazonaws.com/instance-cpu |
32 |
Numero di CPU sull’istanza |
|
eks.amazonaws.com/instance-cpu-manufacturer |
|
Nome del produttore della CPU |
|
eks.amazonaws.com/instance-memory |
131072 |
Numero di mebibyte di memoria sull’istanza |
|
eks.amazonaws.com/instance-ebs-bandwidth |
9500 |
Numero massimo di megabit di EBS disponibili sull’istanza |
|
eks.amazonaws.com/instance-network-bandwidth |
131072 |
Numero di megabit di base disponibili sull’istanza |
|
eks.amazonaws.com/instance-gpu-name |
t4 |
Nome della GPU nell’istanza, se disponibile |
|
eks.amazonaws.com/instance-gpu-manufacturer |
nvidia |
Nome del produttore della GPU |
|
eks.amazonaws.com/instance-gpu-count |
1 |
Numero di GPU nell’istanza |
|
eks.amazonaws.com/instance-gpu-memory |
16384 |
Numero di mebibyte di memoria sulla GPU |
|
eks.amazonaws.com/instance-local-nvme |
900 |
Gibibyte di storage nvme locale nell’istanza |
Nota
EKS Auto Mode supporta solo certe istanze e prevede dei requisiti minimi di dimensione. Per ulteriori informazioni, consulta Riferimento all’istanza supportata da EKS Auto Mode.
Etichette non supportate da EKS Auto Mode
EKS Auto Mode non supporta le seguenti etichette.
-
EKS Auto Mode supporta soltanto Linux
-
node.kubernetes.io/windows-build -
kubernetes.io/os
-
Disattivare i pool di nodi integrati
Se crei pool di nodi personalizzati, puoi disattivare i pool di nodi integrati. Per ulteriori informazioni, consulta Abilitazione o disabilitazione i NodePools integrati.
Cluster senza pool di nodi integrati
Puoi creare un cluster senza pool di nodi integrati. È utile quando l’organizzazione ha creato pool di nodi personalizzati.
Nota
Quando crei un cluster senza pool di nodi integrati, il provisioning di NodeClass default non viene eseguito automaticamente. Sarà necessario creare una NodeClass personalizzata. Per ulteriori informazioni, consulta Creazione di una classe di nodi per Amazon EKS.
Panoramica:
-
Crea un cluster EKS con i valori
nodePoolsenodeRoleArnvuoti.-
Esempio eksctl
autoModeConfig:autoModeConfig: enabled: true nodePools: [] # Do not set a nodeRoleARNPer ulteriori informazioni, consulta Crea un cluster di EKS Auto Mode con la CLI di eksctl
-
-
Crea una classe di nodi personalizzata con un ruolo del nodo ARN
-
Per ulteriori informazioni, consulta Creazione di una classe di nodi per Amazon EKS
-
-
Crea una voce di accesso per la classe di nodi personalizzata
-
Per ulteriori informazioni, consulta Creazione di una voce di accesso alla classe di nodi
-
-
Crea un pool di nodi personalizzato come descritto sopra.
Interruzione
Puoi configurare EKS Auto Mode in modo che interrompa i nodi tramite NodePool in diversi modi. Puoi usare spec.disruption.consolidationPolicy, spec.disruption.consolidateAfter o spec.template.spec.expireAfter. Puoi anche limitare l’interruzione di EKS Auto Mode tramite il spec.disruption.budgets del NodePool. Puoi inoltre controllare le finestre temporali e il numero di nodi simultanei interrotti. Per istruzioni sulla configurazione di questo comportamento, consulta la pagina Disruption
Puoi configurare l’interruzione per i pool di nodi per:
-
Identifica le istanze sottoutilizzate e consolida i carichi di lavoro.
-
Crea un budget per le interruzioni dei pool di nodi per limitare le interruzioni dei nodi causate da deviazioni, vuoto e consolidamento.
Per impostazione predefinita, EKS Auto Mode:
-
Consolida le istanze sottoutilizzate.
-
Termina le istanze dopo 336 ore.
-
Imposta un budget unico per le interruzioni pari al 10% dei nodi.
-
Permette la sostituzione dei nodi a causa della deriva quando viene rilasciata una nuova AMI in Auto Mode, cosa che avviene circa una volta alla settimana.
Periodo di tolleranza della terminazione
Quando un terminationGracePeriod non è definito esplicitamente su un EKS Auto NodePool, il sistema applica automaticamente un periodo di tolleranza della terminazione predefinito di 24 ore al NodeClaim associato. Sebbene i clienti EKS Auto non vedranno un termine terminationGracePeriod predefinito nelle loro configurazioni NodePool personalizzate, osserveranno questo valore predefinito su NodeClaim. La funzionalità rimane coerente sia che il periodo di tolleranza sia impostato esplicitamente sul NodePool sia che sia predefinito sul NodeClaim, garantendo così un comportamento prevedibile di terminazione dei nodi in tutto il cluster.