Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti - Amazon EKS

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti

I gruppi di nodi EKS gestiti da Amazon automatizzano il provisioning e la gestione del ciclo di vita dei nodi (EC2istanze Amazon) per i cluster Amazon. EKS Kubernetes

Con i gruppi di nodi EKS gestiti da Amazon, non è necessario effettuare il provisioning o registrare separatamente EC2 le istanze Amazon che forniscono capacità di calcolo per eseguire le Kubernetes applicazioni. È possibile creare, aggiornare o terminare automaticamente i nodi per il cluster con una singola operazione. Gli aggiornamenti e le interruzioni dei nodi svuotano automaticamente i nodi per garantire che le applicazioni rimangano disponibili.

Ogni nodo gestito viene fornito come parte di un gruppo Amazon EC2 Auto Scaling gestito per te da Amazon. EKS Ogni risorsa, incluse le istanze e i gruppi Auto Scaling, viene eseguita all'interno dell'account AWS . Ogni gruppo di nodi viene eseguito su più zone di disponibilità definite.

Puoi aggiungere un gruppo di nodi gestiti a cluster nuovi o esistenti utilizzando la EKS console Amazon,eksctl, AWS CLI; o l'infrastruttura come strumenti di codice AWS API, tra cui AWS CloudFormation. I nodi avviati come parte di un gruppo di nodi gestiti vengono automaticamente taggati per l'individuazione automatica tramite il cluster Autoscaler di Kubernetes. È possibile utilizzare il gruppo di nodi per applicare le etichette Kubernetes ai nodi e aggiornarle in qualsiasi momento.

Non ci sono costi aggiuntivi per l'utilizzo dei gruppi di nodi EKS gestiti da Amazon, paghi solo per le AWS risorse fornite. Questi includono EC2 istanze Amazon, EBS volumi Amazon, ore dei EKS cluster Amazon e qualsiasi altra AWS infrastruttura. Non sono previste tariffe minime né impegni anticipati.

Per iniziare a usare un nuovo EKS cluster Amazon e un gruppo di nodi gestiti, consultaInizia a usare Amazon EKS AWS Management Console e AWS CLI.

Per aggiungere un gruppo di nodi gestiti a un cluster esistente, vedi Crea un gruppo di nodi gestito per il tuo cluster.

Concetti sui gruppi di nodi gestiti

  • I gruppi di nodi EKS gestiti da Amazon creano e gestiscono EC2 istanze Amazon per te.

  • Ogni nodo gestito viene fornito come parte di un gruppo Amazon EC2 Auto Scaling gestito per te da Amazon. EKS Inoltre, tutte le risorse, incluse EC2 le istanze Amazon e i gruppi di Auto Scaling, vengono eseguite all'interno AWS del tuo account.

  • Il gruppo Auto Scaling di un gruppo di nodi gestiti si estende su ogni sottorete specificata al momento della creazione del gruppo.

  • Amazon EKS contrassegna le risorse dei gruppi di nodi gestiti in modo che siano configurate per utilizzare Kubernetes Cluster Autoscaler.

    Importante

    Se stai eseguendo un'applicazione stateful su più zone di disponibilità supportata da EBS volumi Amazon e utilizzi la KubernetesRidimensiona l'elaborazione del cluster con e KarpenterCluster Autoscaler, devi configurare più gruppi di nodi, ciascuno con l'ambito di una singola zona di disponibilità. Inoltre, è necessario abilitare la funzionalità --balance-similar-node-groups.

  • È possibile utilizzare un modello di avvio personalizzato per un maggiore livello di flessibilità e personalizzazione durante l'implementazione dei nodi gestiti. Ad esempio, puoi specificare kubelet argomenti aggiuntivi e utilizzarne uno personalizzato. AMI Per ulteriori informazioni, consulta Personalizza i nodi gestiti con modelli di lancio. Se non si utilizza un modello di avvio personalizzato quando si crea per la prima volta un gruppo di nodi gestiti, è disponibile un modello di avvio generato automaticamente. Non modificare manualmente questo modello generato automaticamente o si verificano errori.

  • Amazon EKS segue il modello di responsabilità condivisa CVEs e le patch di sicurezza sui gruppi di nodi gestiti. Quando i nodi gestiti eseguono un sistema EKS ottimizzato per AmazonAMI, Amazon EKS è responsabile della creazione di versioni con patch di AMI quando vengono segnalati bug o problemi. A questo scopo vengono pubblicate delle correzioni. Tuttavia, sei responsabile della distribuzione di queste AMI versioni con patch nei tuoi gruppi di nodi gestiti. Quando i nodi gestiti eseguono una soluzione personalizzataAMI, sei responsabile della creazione di versioni con patch del AMI caso in cui vengono segnalati bug o problemi e quindi della distribuzione di. AMI Per ulteriori informazioni, consulta Aggiorna un gruppo di nodi gestiti per il tuo cluster.

  • I gruppi di nodi EKS gestiti da Amazon possono essere lanciati in sottoreti pubbliche e private. Se si avvia un gruppo di nodi gestiti in una sottorete pubblica in data 22 aprile 2020 o successiva, sarà necessario che la sottorete abbia MapPublicIpOnLaunch impostato su VERO affinché le istanze possano partecipare correttamente a un cluster. Se la sottorete pubblica è stata creata utilizzando eksctl o i EKS AWS CloudFormation modelli forniti da Amazon a partire dal 26 marzo 2020, questa impostazione è già impostata su true. Se le sottoreti pubbliche sono state create prima del 26 marzo 2020 devi modificare manualmente l'impostazione. Per ulteriori informazioni, consulta Modifica dell'attributo di assegnazione degli indirizzi IPv4 pubblici per la sottorete.

  • Quando distribuisci un gruppo di nodi gestiti in sottoreti private, devi assicurarti che possa accedere ad Amazon ECR per estrarre le immagini dei container. Puoi farlo collegando un NAT gateway alla tabella di routing della sottorete o aggiungendo i seguenti endpoint:AWS PrivateLink VPC

    • Interfaccia ECR API endpoint Amazon — com.amazonaws.region-code.ecr.api

    • Interfaccia API endpoint del registro Amazon ECR Docker — com.amazonaws.region-code.ecr.dkr

    • Endpoint del gateway Amazon S3: com.amazonaws.region-code.s3

    Per altri servizi ed endpoint di uso comune, consulta la sezione Implementa cluster privati con accesso limitato a Internet.

  • I gruppi di nodi gestiti non possono essere distribuiti su AWS Outpostso all'interno AWS Wavelength delle nostre AWS Local Zones.

  • È possibile creare più gruppi di nodi gestiti all'interno di un singolo cluster. Ad esempio, puoi creare un gruppo di nodi con lo standard Amazon Linux EKS ottimizzato per Amazon AMI per alcuni carichi di lavoro e un altro con la GPU variante per i carichi di lavoro che richiedono GPU supporto.

  • Se il tuo gruppo di nodi gestiti rileva un errore nel controllo dello stato delle EC2 istanze Amazon, Amazon EKS restituisce un codice di errore per aiutarti a diagnosticare il problema. Per ulteriori informazioni, consulta Codici di errore dei gruppi di nodi gestiti.

  • Amazon EKS aggiunge Kubernetes etichette alle istanze di gruppi di nodi gestiti. Queste etichette EKS fornite da Amazon hanno il prefisso. eks.amazonaws.com

  • Amazon prosciuga EKS automaticamente i nodi utilizzando il Kubernetes API durante le terminazioni o gli aggiornamenti.

  • I budget di interruzione del pod non vengono rispettati quando si termina un nodo con AZRebalance o si riduce il numero di nodi desiderato. Queste operazioni cercano di espellere Pods dal nodo. Tuttavia, se trascorrono più di 15 minuti, il nodo viene terminato a prescindere dal fatto che tutti i Pods sul nodo siano stati terminati. Per prolungare il periodo fino alla terminazione del nodo, aggiungi un hook del ciclo di vita al gruppo con scalabilità automatica. Per ulteriori informazioni, consulta Add lifecycle hook nella Amazon EC2Auto Scaling User Guide.

  • Per eseguire correttamente il processo di scarico dopo aver ricevuto una notifica di interruzione spot o una notifica di ribilanciamento della capacità, CapacityRebalance deve essere impostato su true.

  • L'aggiornamento di gruppi di nodi gestiti rispettano i budget di interruzione Pod impostati per i Pods. Per ulteriori informazioni, consulta Comprendi ogni fase degli aggiornamenti dei nodi.

  • Non ci sono costi aggiuntivi per l'utilizzo dei gruppi di nodi EKS gestiti da Amazon. Paghi solo per le AWS risorse che fornisci.

  • Se desideri crittografare i EBS volumi Amazon per i tuoi nodi, puoi distribuire i nodi utilizzando un modello di avvio. Per distribuire nodi gestiti con EBS volumi Amazon crittografati senza utilizzare un modello di avvio, crittografa tutti i nuovi EBS volumi Amazon creati nel tuo account. Per ulteriori informazioni, consulta Encryption by default nella Amazon EC2 User Guide.

Tipi di capacità del gruppo di nodi gestiti

Quando si crea un gruppo di nodi gestito, è possibile scegliere il tipo di capacità su on demand o Spot. Amazon EKS distribuisce un gruppo di nodi gestiti con un gruppo Amazon EC2 Auto Scaling che contiene solo istanze On-Demand o solo istanze Amazon EC2 Spot. All'interno di un singolo cluster Kubernetes, puoi pianificare i Pods per le applicazioni a tolleranza d'errore su gruppi di nodi gestiti Spot e per le applicazioni non a tolleranza d'errore su gruppi di nodi on demand. Per impostazione predefinita, un gruppo di nodi gestiti distribuisce istanze Amazon EC2 On-Demand.

On demand

Con Istanze on demand, sono previsti costi per la capacità di calcolo entro la seconda ora senza impegni a lungo termine.

Come funziona

Per impostazione predefinita, se non specifichi un Capacity Type (Tipo di capacità), il provisioning del gruppo di nodi gestiti viene eseguito con istanze on demand. Un gruppo di nodi gestito configura un gruppo Amazon EC2 Auto Scaling per tuo conto con le seguenti impostazioni applicate:

  • La strategia di allocazione per il provisioning della capacità On-Demand è impostata su prioritized. I gruppi di nodi gestiti utilizzano l'ordine dei tipi di istanza trasmessi API per determinare quale tipo di istanza utilizzare per primo per soddisfare la capacità On-Demand. Ad esempio, è possibile specificare tre tipi di istanza nell'ordine seguente: c5.large, c4.large, e c3.large. Quando le istanze on demand vengono avviate, il gruppo di nodi gestiti soddisfa la capacità on demand a partire da c5.large, quindi c4.large, e infine c3.large. Per ulteriori informazioni, consulta il gruppo Amazon EC2 Auto Scaling nella Amazon Auto EC2 Scaling User Guide.

  • Amazon EKS aggiunge la seguente Kubernetes etichetta a tutti i nodi del gruppo di nodi gestiti che specifica il tipo di capacità:eks.amazonaws.com/capacityType: ON_DEMAND. È possibile utilizzare questa etichetta sui nodi on demand per pianificare applicazioni con stato o fault intolerant.

Spot

Le istanze Amazon EC2 Spot sono una EC2 capacità Amazon inutilizzata che offre forti sconti sui prezzi On-Demand. Le istanze Amazon EC2 Spot possono essere interrotte con un avviso di interruzione di due minuti quando è EC2 necessario ripristinare la capacità. Per ulteriori informazioni, consulta le istanze Spot nella Amazon EC2 User Guide. Puoi configurare un gruppo di nodi gestito con Amazon EC2 Spot Instances per ottimizzare i costi per i nodi di calcolo in esecuzione nel tuo cluster AmazonEKS.

Come funziona

Per utilizzare istanze Spot all'interno di un gruppo di nodi gestiti, creare un gruppo di nodi gestiti impostando il tipo di capacità come spot. Un gruppo di nodi gestito configura un gruppo Amazon EC2 Auto Scaling per tuo conto applicando le seguenti best practice Spot:

  • Per garantire che il provisioning dei nodi Spot venga eseguito nei pool di capacità Spot ottimali, la strategia di allocazione è impostata su uno dei seguenti valori:

    • price-capacity-optimized(PCO) — Quando si creano nuovi gruppi di nodi in un cluster con Kubernetes versione 1.28 o superiore, la strategia di allocazione è impostata su. price-capacity-optimized Tuttavia, la strategia di allocazione non verrà modificata per i gruppi di nodi già creati capacity-optimized prima che i gruppi di nodi EKS gestiti da Amazon iniziassero a supportarePCO.

    • capacity-optimized (CO): quando si creano nuovi gruppi di nodi in un cluster con Kubernetes versione 1.27 o successive, la strategia di allocazione è impostata su capacity-optimized.

    Per aumentare il numero di pool di capacità Spot disponibili da cui allocare le capacità, configurare un gruppo di nodi gestiti per l'utilizzo di più tipi di istanza.

  • Amazon EC2 Spot Capacity Rebalancing è abilitato in modo che Amazon EKS possa drenare e ribilanciare senza problemi i nodi Spot per ridurre al minimo l'interruzione delle applicazioni quando un nodo Spot è a elevato rischio di interruzione. Per ulteriori informazioni, consulta Amazon EC2 Auto Scaling Capacity Rebalancing nella Amazon Auto Scaling EC2 User Guide.

    • Quando un nodo Spot riceve una raccomandazione di ribilanciamento, Amazon tenta EKS automaticamente di lanciare un nuovo nodo Spot sostitutivo.

    • Se arriva un avviso di interruzione di due minuti prima che il nodo Spot sostitutivo sia in uno Ready stato, Amazon EKS inizia a svuotare il nodo Spot che ha ricevuto la raccomandazione di ribilanciamento. Amazon EKS prosciuga il nodo con la massima diligenza. Di conseguenza, non è garantito che Amazon EKS attenda che il nodo sostitutivo si unisca al cluster prima di svuotare il nodo esistente.

    • Quando un nodo Spot sostitutivo viene avviato e si trova Ready nello stato attivo, Kubernetes Amazon EKS isola e drena il nodo Spot che ha ricevuto la raccomandazione di ribilanciamento. L'isolamento del nodo Spot assicura che il controller di servizio non invii nuove richieste a questo nodo Spot. Il nodo viene rimosso anche dall'elenco elenco di nodi Spot sani e attivi. Lo svuotamento del nodo Spot assicura che i Pods in esecuzione vengano espulsi in modo aggraziato.

  • Amazon EKS aggiunge la seguente Kubernetes etichetta a tutti i nodi del gruppo di nodi gestiti che specifica il tipo di capacità:eks.amazonaws.com/capacityType: SPOT. È possibile utilizzare questa etichetta per pianificare applicazioni fault tolerant sui nodi Spot.

Considerazioni per la selezione di un tipo di capacità

Quando si decide se implementare un gruppo di nodi con capacità On-Demand o Spot, è necessario considerare le seguenti condizioni:

  • Le istanze Spot sono consigliate per applicazioni senza stato, fault tolerant e flessibili. Questi includono carichi di lavoro di formazione in batch e machine learning, big data ETLs come Apache Spark, applicazioni di elaborazione delle code ed endpoint stateless. API Poiché Spot è una EC2 capacità Amazon inutilizzata, che può cambiare nel tempo, ti consigliamo di utilizzare la capacità Spot per carichi di lavoro tolleranti alle interruzioni. Più specificamente, la capacità Spot è adatta per carichi di lavoro in grado di tollerare periodi in cui la capacità richiesta non è disponibile.

  • Consigliamo di utilizzare On-demand per le applicazioni che sono fault intolerant. Ciò include strumenti di gestione dei cluster come strumenti di monitoraggio e operativi, implementazioni che richiedono StatefulSets e applicazioni con stato, come database.

  • Per ottimizzare la disponibilità delle applicazioni durante l'utilizzo di istanze Spot, è consigliabile configurare un gruppo di nodi gestiti Spot per l'utilizzo di più tipi di istanza. Quando si utilizzano più tipi di istanza, si consiglia di applicare le seguenti regole:

    • All'interno di un gruppo di nodi gestito, se utilizzi Cluster Autoscaler, ti consigliamo di utilizzare un set flessibile di tipi di istanze con la stessa quantità di v e risorse di memoria. CPU Questo per garantire che i nodi del cluster vengano dimensionati come previsto. Ad esempio, se hai bisogno di quattro vCPUs e otto GiB di memoria,,c3.xlarge,c4.xlarge, c5.xlarge c5d.xlarge c5a.xlargec5n.xlarge, o altri tipi di istanza simili.

    • Per migliorare la disponibilità delle applicazioni, si consiglia di implementare più gruppi di nodi gestiti Spot. A tal fine, ogni gruppo deve utilizzare un set flessibile di tipi di istanze con le stesse risorse v CPU e di memoria. Ad esempio, se hai bisogno di memoria da 4 vCPUs e 8 GiB, ti consigliamo di creare un gruppo di nodi gestiti conc3.xlarge,,c4.xlarge,, c5.xlarge c5d.xlarge c5a.xlargec5n.xlarge, o altri tipi di istanze simili e un secondo gruppo di nodi gestiti conm3.xlarge,,, m4.xlarge m5.xlarge m5d.xlargem5a.xlarge, m5n.xlarge o altri tipi di istanze simili.

    • Quando distribuisci un gruppo di nodi con il tipo di capacità Spot utilizzando un modello di avvio personalizzato, usa il API per passare più tipi di istanze. Non passare un singolo tipo di istanza tramite il modello di avvio. Per ulteriori informazioni sull'implementazione di un gruppo di nodi tramite un modello di avvio, vedere Personalizza i nodi gestiti con modelli di lancio.