Crea un pool di nodi per EKS Auto Mode - Amazon EKS

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:

  1. Crea un file YAML denominato nodepool.yaml con la configurazione NodePool richiesta. Puoi utilizzare la configurazione di esempio seguente.

  2. Applica il NodePool al cluster:

    kubectl apply -f nodepool.yaml
  3. Verificare che il NodePool sia stato creato correttamente:

    kubectl get nodepools
  4. (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 sull’istanza

karpenter.sh/capacity-type

spot

I tipi di capacità includono spot, on-demand

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

aws

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:

  1. Crea un cluster EKS con i valori nodePools e nodeRoleArn vuoti.

  2. Crea una classe di nodi personalizzata con un ruolo del nodo ARN

  3. Crea una voce di accesso per la classe di nodi personalizzata

  4. 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 nella documentazione di Karpenter.

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.