

 **Contribuisci a migliorare questa pagina** 

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à.

Per contribuire a questa guida per l'utente, scegli il GitHub link **Modifica questa pagina** nel riquadro destro di ogni pagina.

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à.

# Gestire le risorse di elaborazione utilizzando i nodi
<a name="eks-compute"></a>

Un nodo Kubernetes è una macchina che esegue applicazioni containerizzate. Ogni nodo include i seguenti componenti:
+  ** [Runtime del container:](https://kubernetes.io/docs/setup/production-environment/container-runtimes/)** software responsabile dell’esecuzione dei container.
+  ** [kubelet:](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)** garantisce che i container siano integri e funzionanti nel proprio pod associato.
+  ** [kube-proxy:](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/) ** gestisce le regole della rete che consentono la comunicazione con i pod.

Per ulteriori informazioni, consulta [Nodi](https://kubernetes.io/docs/concepts/architecture/nodes/) nella documentazione Kubernetes.

Il cluster Amazon EKS può pianificare pod su qualsiasi combinazione di [nodi gestiti dalla modalità automatica EKS](automode.md), [nodi autogestiti](worker.md), [gruppi di nodi gestiti da Amazon EKS](managed-node-groups.md), [AWS Fargate](fargate.md) e [Amazon EKS Hybrid Nodes](hybrid-nodes-overview.md). Per ulteriori informazioni sui nodi implementati nel cluster, consulta [Visualizza le risorse Kubernetes nel Console di gestione AWS](view-kubernetes-resources.md).

**Nota**  
A eccezione dei nodi ibridi, i nodi devono trovarsi nello stesso VPC delle sottoreti selezionate al momento della creazione del cluster, ma non necessariamente nelle stesse sottoreti.

## Confronto delle opzioni di calcolo
<a name="_compare_compute_options"></a>

Nella tabella seguente vengono forniti diversi criteri per valutare quali opzioni sono più adatte alle proprie esigenze. I nodi autogestiti sono un’opzione alternativa che supporta tutti i criteri elencati, ma che richiede molta più manutenzione manuale. Per ulteriori informazioni, consulta [Gestione autonoma dei nodi con nodi autogestiti](worker.md).

**Nota**  
Bottlerocket presenta alcune differenze specifiche rispetto alle informazioni generali contenute in questa tabella. Per ulteriori informazioni, consultare la [documentazione](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) relativa a Bottlerocket su GitHub.


| Criteri | Gruppi di nodi gestiti EKS | Modalità automatica EKS | Amazon EKS Hybrid Nodes | 
| --- | --- | --- | --- | 
|  Può essere implementato in [AWS Outposts](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html)   |  No  |  No  |  No  | 
|  Può essere implementato nella [zona locali AWS](local-zones.md)   |  Sì  |  No  |  No  | 
|  Può eseguire container che richiedono Windows  |  Sì  |  No  |  No  | 
|  Può eseguire container che richiedono Linux  |  Sì   |  Sì  |  Sì  | 
|  Può eseguire carichi di lavoro che richiedono il chip Inferentia  |   [Sì](inferentia-support.md) – Solo nodi Amazon Linux  |  Sì  |  No  | 
|  Può eseguire carichi di lavoro che richiedono una GPU  |   [Sì](eks-optimized-ami.md#gpu-ami) – Solo nodi Amazon Linux  |  Sì   |  Sì  | 
|  Può eseguire carichi di lavoro che richiedono processori Arm  |   [Sì](eks-optimized-ami.md#arm-ami)   |  Sì  |  Sì  | 
|  Può eseguire AWS [Bottlerocket](https://aws.amazon.com/bottlerocket/)   |  Sì   |  Sì  |  No  | 
|  I pod condividono risorse di CPU, memoria, archiviazione e rete con altri pod.  |  Sì   |  Sì  |  Sì  | 
|  Deve implementare e gestire le istanze Amazon EC2  |  Sì  |  No - Ulteriori informazioni sulle [istanze gestite di EC2](automode-learn-instances.md)   |  Sì - Le macchine fisiche on-premises o virtuali sono autogestite con strumenti a scelta.  | 
|  È necessario proteggere, mantenere e applicare patch al sistema operativo delle istanze Amazon EC2  |  Sì  |  No  |  Sì - Il sistema operativo in esecuzione sulle macchine fisiche o virtuali è autogestito con strumenti a scelta.  | 
|  Può fornire argomenti di bootstrap all’implementazione di un nodo, come argomenti [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) aggiuntivi.  |  Sì - Utilizzando `eksctl` o un [modello di avvio](launch-templates.md) con un’AMI personalizzata.  |  No - [Utilizzare `NodeClass` per configurare i nodi](create-node-class.md)   |  Sì - È possibile personalizzare gli argomenti di bootstrap con nodeadm. Consultare [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).  | 
|  Può assegnare indirizzi IP ai pod da un intervallo CIDR diverso rispetto all’indirizzo IP assegnato al nodo.  |  Sì: utilizzando un modello di avvio con un'AMI personalizzata. Per ulteriori informazioni, consulta [Personalizzazione dei nodi gestiti con modelli di avvio](launch-templates.md).  |  No  |  Sì - Consultare [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).  | 
|  Puoi eseguire SSH nel nodo  |  Sì  |  No - [Informazioni su come risolvere i problemi dei nodi](auto-troubleshoot.md)   |  Sì  | 
|  Puoi implementare un'AMI personalizzata nei nodi  |  Sì – Utilizzo di un [modello di avvio](launch-templates.md)   |  No  |  Sì  | 
|  Può implementare un CNI personalizzato nei nodi  |  Sì – Utilizzando un [modello di avvio](launch-templates.md) con un'AMI personalizzata  |  No  |  Sì  | 
|  É necessario aggiornare l'AMI del nodo per conto proprio  |   [Sì](update-managed-node-group.md) - Se è stata implementata un’AMI ottimizzata per Amazon EKS, sarà inviata una notifica nella console Amazon EKS quando gli aggiornamenti sono disponibili. È possibile eseguire l'aggiornamento con un clic nella console. Se è stata implementata un’AMI personalizzata, non sarà inviata una notifica nella console Amazon EKS quando gli aggiornamenti sono disponibili. È necessario eseguire l'aggiornamento per conto proprio.  |  No  |  Sì - Il sistema operativo eseguito sulle macchine fisiche o virtuali è autogestito con strumenti a scelta. Consultare [Preparazione del sistema operativo per i nodi ibridi](hybrid-nodes-os.md).  | 
|  È necessario aggiornare la versione del nodo Kubernetes per conto proprio  |   [Sì](update-managed-node-group.md) - Se è stata implementata un’AMI ottimizzata per Amazon EKS, sarà inviata una notifica nella console Amazon EKS quando gli aggiornamenti sono disponibili. È possibile eseguire l'aggiornamento con un clic nella console. Se è stata implementata un’AMI personalizzata, non sarà inviata una notifica nella console Amazon EKS quando gli aggiornamenti sono disponibili. È necessario eseguire l'aggiornamento per conto proprio.  |  No  |  Sì - Gli aggiornamenti dei nodi ibridi vengono gestiti con strumenti a scelta o con `nodeadm`. Consultare [Aggiornamento dei nodi ibridi per il tuo cluster](hybrid-nodes-upgrade.md).  | 
|  Può utilizzare lo spazio di archiviazione Amazon EBS con i pod  |   [Sì](ebs-csi.md)   |  Sì, come funzionalità integrata. Informazioni su come [creare una classe di archiviazione.](create-storage-class.md)   |  No  | 
|  Può utilizzare lo spazio di archiviazione Amazon EFS con i pod  |   [Sì](efs-csi.md)   |  Sì  |  No  | 
|  Può utilizzare lo spazio di archiviazione Amazon FSx per Lustre con i pod  |   [Sì](fsx-csi.md)   |  Sì  |  No  | 
|  Può utilizzare Network Load Balancer per i servizi  |   [Sì](network-load-balancing.md)   |  Sì  |  Sì - È necessario utilizzare il tipo di destinazione `ip`.  | 
|  I pod possono essere eseguiti in una sottorete pubblica  |  Sì   |  Sì  |  No - I pod vengono eseguiti in un ambiente on-premises.  | 
|  Può assegnare diversi gruppi di sicurezza VPC a singoli pod  |   [Sì](security-groups-for-pods.md) – Solo nodi Linux  |  No  |  No  | 
|  Può eseguire Kubernetes DaemonSets  |  Sì   |  Sì  |  Sì  | 
|  Supporto per `HostPort` e `HostNetwork` nel manifesto pod  |  Sì   |  Sì  |  Sì  | 
|   Disponibilità nelle regioni AWS  |   [Tutte le regioni supportate da Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |   [Tutte le Regioni Amazon EKS supportate](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |   [Tutte le Regioni supportate da Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html), a eccezione delle Regioni AWS GovCloud (Stati Uniti) e le Regioni della Cina.  | 
|  Può eseguire container su host dedicati Amazon EC2  |  Sì  |  No  |  No  | 
|  Prezzi  |  Costo dell’istanza Amazon EC2 che esegue più pod. Per ulteriori informazioni, consulta [Prezzi di Amazon EC2](https://aws.amazon.com/ec2/pricing/).  |  Quando la modalità automatica EKS è abilitata nel cluster, viene addebitata una tariffa separata per le istanze avviate utilizzando la funzionalità di calcolo della modalità automatica, in aggiunta ai costi standard delle istanze EC2. L’importo varia a seconda del tipo di istanza avviata e della Regione AWS in cui si trova il cluster. Per ulteriori informazioni, consultare [Prezzi di Amazon EKS](https://aws.amazon.com/eks/pricing/).  |  Costo dei nodi ibridi in vCPU all’ora. Per ulteriori informazioni, consultare [Prezzi di Amazon EKS](https://aws.amazon.com/eks/pricing/).  | 

# Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti
<a name="managed-node-groups"></a>

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

Con i gruppi di nodi gestiti di Amazon EKS, non è necessario effettuare il provisioning o registrare separatamente EC2 le istanze Amazon che forniscono capacità di calcolo per eseguire le applicazioni Kubernetes. È 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 AWS del tuo account. Ogni gruppo di nodi viene eseguito su più zone di disponibilità definite.

I gruppi di nodi gestiti possono anche sfruttare opzionalmente la riparazione automatica, che monitora continuamente lo stato di integrità dei nodi. In pratica, reagisce automaticamente ai problemi rilevati e sostituisce i nodi quando possibile. Ciò aiuta la disponibilità complessiva del cluster con un intervento manuale minimo. Per ulteriori informazioni, consulta [Rileva i problemi di integrità dei nodi e abilita la riparazione automatica dei nodi](node-health.md).

Puoi aggiungere un gruppo di nodi gestiti a cluster nuovi o esistenti utilizzando la console Amazon EKS, la AWS CLI `eksctl` AWS , l'API o l'infrastruttura come strumenti di codice, tra cui. AWS CloudFormation I nodi avviati come parte di un gruppo di nodi gestiti vengono automaticamente taggati per l’individuazione automatica tramite [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) 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 gestiti di Amazon EKS, paghi solo per le AWS risorse fornite. Questi includono EC2 istanze Amazon, volumi Amazon EBS, orari dei cluster Amazon EKS e qualsiasi altra AWS infrastruttura. Non sono previste tariffe minime né impegni anticipati.

Per iniziare a utilizzare un nuovo cluster Amazon EKS e un gruppo di nodi gestiti, vedi [Inizia a usare Amazon EKS Console di gestione AWS e AWS CLI](getting-started-console.md).

Per aggiungere un gruppo di nodi gestiti a un cluster esistente, vedi [Creare un gruppo di nodi gestiti per il cluster](create-managed-node-group.md).

## Concetti sui gruppi di nodi gestiti
<a name="managed-node-group-concepts"></a>
+ I gruppi di nodi gestiti di Amazon EKS 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 applica tag alle risorse del gruppo di nodi gestiti in modo che siano configurate per utilizzare [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) di Kubernetes.
**Importante**  
Se si esegue un’applicazione stateful in più zone di disponibilità supportate dai volumi Amazon EBS e che utilizza il [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) di Kubernetes, è necessario configurare più gruppi di nodi, ognuno dei quali definito per 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, è possibile specificare argomenti `kubelet` aggiuntivi e utilizzare un’AMI personalizzata. Per ulteriori informazioni, consulta [Personalizzazione dei nodi gestiti con modelli di avvio](launch-templates.md). 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 verificheranno 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’AMI ottimizzata per Amazon EKS, Amazon EKS è responsabile della creazione di versioni con patch dell’AMI quando vengono segnalati bug o problemi. A questo scopo vengono pubblicate delle correzioni. Sei invece responsabile della distribuzione di queste versioni AMI con patch ai gruppi di nodi gestiti. Quando i nodi gestiti eseguono un’AMI personalizzata, sei responsabile della creazione di versioni con patch dell’AMI quando vengono segnalati bug o problemi, oltre che della distribuzione dell’AMI. Per ulteriori informazioni, consulta [Aggiornamento del gruppo di nodi gestito per il cluster](update-managed-node-group.md).
+ I gruppi di nodi gestiti Amazon EKS possono essere avviati 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 [AWS CloudFormation modelli forniti da Amazon EKS](creating-a-vpc.md) 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 IPv4 indirizzamento pubblico per la](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) sottorete.
+ Quando implementi un gruppo di nodi gestito in sottoreti private, devi assicurarti che possa accedere ad Amazon ECR per estrarre le immagini dei container. È possibile farlo collegando un gateway NAT alla tabella di routing della sottorete o aggiungendo i seguenti [endpoint VPC AWS PrivateLink ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-setting-up-vpc-create):
  + Interfaccia endpoint dell'API di Amazon ECR: `com.amazonaws.region-code.ecr.api` 
  + Interfaccia endpoint dell’API del registro Docker di Amazon ECR: `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 [Implementazione di cluster privati con accesso limitato a Internet](private-clusters.md).
+ I gruppi di nodi gestiti non possono essere distribuiti su [AWS Outposts](eks-outposts.md) o in [AWS Wavelength](https://docs.aws.amazon.com/wavelength/). È possibile creare gruppi di nodi gestiti in [AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/). Per ulteriori informazioni, consulta [Avvia cluster EKS a bassa latenza con AWS Local Zones](local-zones.md).
+ È possibile creare più gruppi di nodi gestiti all’interno di un singolo cluster. Ad esempio, puoi creare un gruppo di nodi con l’AMI Linux standard ottimizzata per Amazon EKS per alcuni carichi di lavoro e un altro gruppo con la variante GPU per i carichi di lavoro che richiedono il supporto della GPU.
+ Se il tuo gruppo di nodi gestiti rileva un errore di [controllo dello stato delle EC2 istanze Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html), 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](troubleshooting.md#troubleshoot-managed-node-groups).
+ Amazon EKS aggiunge etichette Kubernetes alle istanze del gruppo di nodi gestiti. Queste etichette fornite da Amazon EKS hanno il prefisso `eks.amazonaws.com`.
+ Amazon EKS svuota automaticamente i nodi utilizzando l’API Kubernetes durante le interruzioni 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 pod dal nodo. Tuttavia, se trascorrono più di 15 minuti, il nodo viene terminato a prescindere dal fatto che tutti i pod 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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/adding-lifecycle-hooks.html) nella Amazon * EC2 Auto 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 dei pod impostati per i pod. Per ulteriori informazioni, consulta [Comprendi ogni fase degli aggiornamenti dei nodi](managed-node-update-behavior.md).
+ I gruppi di nodi gestiti Amazon EKS non prevedono costi aggiuntivi. Paghi solo per le AWS risorse che fornisci.
+ Se si desidera crittografare i volumi Amazon EBS per i nodi, è possibile implementare i nodi utilizzando un modello di avvio. Per implementare nodi gestiti con volumi Amazon EBS crittografati senza utilizzare un modello di avvio, crittografare tutti i nuovi volumi Amazon EBS creati nell’account. Per ulteriori informazioni, consulta [Encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default) nella *Amazon EC2 User Guide*.

## Tipi di capacità del gruppo di nodi gestiti
<a name="managed-node-group-capacity-types"></a>

Quando si crea un gruppo di nodi gestito, è possibile scegliere il tipo di capacità su on demand o Spot. Amazon EKS implementa 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, è possibile pianificare i pod per le applicazioni tolleranti ai guasti sia per i gruppi di nodi gestiti Spot che per i gruppi di nodi on-demand. Per impostazione predefinita, un gruppo di nodi gestiti distribuisce istanze Amazon EC2 On-Demand.

### On demand
<a name="managed-node-group-capacity-types-on-demand"></a>

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

Per impostazione predefinita, se non specifichi un **Tipo capacità**, per il gruppo di nodi gestiti viene eseguito il provisioning 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`. Il gruppo di nodi gestiti utilizza l’ordine dei tipi di istanze approvata dall’API per determinare quale tipo di istanza utilizzare prima 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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html#asg-allocation-strategies) nella *Amazon Auto EC2 Scaling User Guide*.
+ Amazon EKS aggiunge la seguente etichetta Kubernetes a tutti i nodi del gruppo di nodi gestito 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
<a name="managed-node-group-capacity-types-spot"></a>

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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) nella *Amazon EC2 User Guide*. Puoi configurare un gruppo di nodi gestiti con Amazon EC2 Spot Instances per ottimizzare i costi per i nodi di calcolo in esecuzione nel tuo cluster Amazon EKS.

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 successive, la strategia di allocazione è impostata su `price-capacity-optimized`. Tuttavia, la strategia di allocazione non viene modificata per i gruppi di nodi già creati con `capacity-optimized` prima che i gruppi di nodi gestiti da Amazon EKS inizino a supportare PCO.
  +  `capacity-optimized` (CO): quando si creano nuovi gruppi di nodi in un cluster con Kubernetes versione `1.27` o precedenti, 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 in modo corretto 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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html) Amazon Auto *Scaling EC2 * User Guide.
  + Quando un nodo Spot riceve un consiglio di ribilanciamento, Amazon EKS tenta automaticamente di avviare un nuovo nodo Spot sostitutivo.
  + Se un avviso di interruzione Spot di due minuti arriva prima che il nodo Spot sostitutivo si trovi in uno stato `Ready`, Amazon EKS inizia a svuotare il nodo Spot che ha ricevuto il suggerimento di ribilanciamento. Amazon EKS svuota il nodo nel modo migliore possibile. Di conseguenza, non c’è alcuna garanzia 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 ed è allo stato `Ready` su Kubernetes, Amazon EKS isola e svuota il nodo Spot che ha ricevuto il suggerimento 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 di nodi Spot sani e attivi. Lo svuotamento del nodo Spot assicura che i pod in esecuzione vengano espulsi in modo corretto.
+ Amazon EKS aggiunge la seguente etichetta Kubernetes a tutti i nodi del gruppo di nodi gestito che specifica il tipo di capacità: `eks.amazonaws.com/capacityType: SPOT`. È possibile utilizzare questa etichetta per pianificare applicazioni fault tolerant sui nodi Spot.
**Importante**  
EC2 emette un [avviso di interruzione Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-instance-termination-notices.html) due minuti prima della chiusura dell'istanza Spot. Tuttavia, i Pod sui nodi Spot potrebbero non ricevere l'intera finestra di 2 minuti necessaria per uno spegnimento regolare. Quando EC2 emette l'avviso, c'è un ritardo prima che Amazon EKS inizi a sfrattare i Pods. Gli sfratti avvengono in sequenza per proteggere il server dell'API Kubernetes, quindi durante più reclami Spot simultanei, alcuni Pod potrebbero ricevere avvisi di sfratto ritardato. I Pod possono essere chiusi forzatamente senza ricevere segnali di terminazione, in particolare su nodi ad alta densità di Pod, durante reclami simultanei o quando si utilizzano periodi di tolleranza di terminazione prolungati. Per i carichi di lavoro Spot, consigliamo di progettare le applicazioni in modo da tollerare le interruzioni, utilizzando periodi di tolleranza di terminazione pari o inferiori a 30 secondi, evitando agganci PreStop di lunga durata e monitorando le metriche di sfratto dei Pod per comprendere i periodi di tolleranza effettivi nei cluster. Per i carichi di lavoro che richiedono una terminazione corretta e garantita, consigliamo invece di utilizzare la capacità On-Demand.

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 API stateless. 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 gestiti, se utilizzi [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md), ti consigliamo di utilizzare un set flessibile di tipi di istanza con la stessa quantità di vCPU e risorse di memoria. Questo per garantire che i nodi del cluster vengano dimensionati come previsto. Ad esempio, se hai bisogno di quattro v CPUs e otto GiB di memoria,,`c3.xlarge`,`c4.xlarge`, `c5.xlarge` `c5d.xlarge` `c5a.xlarge``c5n.xlarge`, o altri tipi di istanza simili.
  + Per migliorare la disponibilità delle applicazioni, si consiglia di implementare più gruppi di nodi gestiti Spot. Per questo, ogni gruppo dovrebbe utilizzare un set flessibile di tipi di istanza con le stesse risorse vCPU e memoria. Ad esempio, se hai bisogno di memoria 4 v CPUs e 8 GiB, ti consigliamo di creare un gruppo di nodi gestiti con`c3.xlarge`,,,`c4.xlarge`, `c5.xlarge` `c5d.xlarge` `c5a.xlarge``c5n.xlarge`, o altri tipi di istanze simili e un secondo gruppo di nodi gestiti con`m3.xlarge`,,, `m4.xlarge` `m5.xlarge` `m5d.xlarge``m5a.xlarge`, `m5n.xlarge` o altri tipi di istanze simili.
  + Quando si implementa il gruppo di nodi con il tipo di capacità Spot che utilizza un modello di avvio personalizzato, utilizza l’API per passare più tipi di istanza. 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 [Personalizzazione dei nodi gestiti con modelli di avvio](launch-templates.md).

# Creare un gruppo di nodi gestiti per il cluster
<a name="create-managed-node-group"></a>

In questo argomento viene descritto come avviare gruppi di nodi gestiti Amazon EKS per nodi che si registrano con il cluster Amazon EKS. Dopo che i nodi vengono aggiunti al cluster, puoi implementare applicazioni Kubernetes per gli stessi.

Se si avvia un gruppo di nodi gestiti Amazon EKS per la prima volta, consigliamo invece di seguire una delle nostre guide in [Nozioni di base su Amazon EKS](getting-started.md). Queste guide forniscono procedure dettagliate per la creazione di un cluster Amazon EKS con nodi.

**Importante**  
I nodi Amazon EKS sono istanze Amazon EC2 standard. La fatturazione viene effettuata in base ai normali prezzi Amazon EC2. Per ulteriori informazioni, consulta [Prezzi di Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Non puoi creare nodi gestiti in una AWS regione in cui AWS Outposts o Wavelength AWS sono abilitati. È possibile, invece creare nodi autogestiti. Per ulteriori informazioni, consultare [Crea nodi Amazon Linux autogestiti](launch-workers.md), [Crea nodi Microsoft Windows autogestiti](launch-windows-workers.md) e [Crea nodi autogestiti Bottlerocket](launch-node-bottlerocket.md). Puoi anche creare un gruppo di nodi Amazon Linux autogestito su un Outpost. Per ulteriori informazioni, consulta [Crea nodi Amazon Linux su AWS Outposts](eks-outposts-self-managed-nodes.md).
Se non si [specifica un ID AMI](launch-templates.md#launch-template-custom-ami) per il file `bootstrap.sh` incluso in Linux o Bottlerocket ottimizzato per Amazon EKS, i gruppi di nodi gestiti impongono un numero massimo sul valore di `maxPods`. Per le istanze con meno di 30 vCPUs, il numero massimo è. `110` Per le istanze con più di 30 vCPUs, il numero massimo salta a. `250` Questa applicazione ha la precedenza su altre `maxPods` configurazioni, tra cui. `maxPodsExpression` Per ulteriori informazioni su come `maxPods` viene determinato e su come personalizzarlo, vedere. [Come viene determinato MaxPods](choosing-instance-type.md#max-pods-precedence)
+ Un cluster Amazon EKS esistente. Per implementarne uno, consulta [Crea un cluster Amazon EKS.](create-cluster.md).
+ Un ruolo IAM esistente per i nodi da utilizzare. Per crearne uno, consulta [Ruolo IAM del nodo Amazon EKS](create-node-role.md). Se questo ruolo non prevede nessuna delle policy per VPC CNI, per i pod VPC CNI è necessario il ruolo separato riportato di seguito.
+ (Facoltativo, ma consigliato) Il componente aggiuntivo plug-in CNI di Amazon VPC per Kubernetes configurato con il proprio ruolo IAM a cui è allegata la policy IAM necessaria. Per ulteriori informazioni, consulta [Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA](cni-iam-role.md).
+ Familiarità con le considerazioni presenti alla pagina [Choose an optimal Amazon EC2 node instance type](choosing-instance-type.md). A seconda del tipo di istanza scelto, potrebbero esserci ulteriori prerequisiti per il cluster e il VPC.
+ Per aggiungere un gruppo di nodi gestiti da Windows, è prima necessario abilitare il supporto Windows per il cluster. Per ulteriori informazioni, consulta [Implementazione dei nodi Windows su cluster EKS](windows-support.md).

È possibile creare un gruppo di nodi gestito con uno di questi due strumenti:
+  [`eksctl`](#eksctl_create_managed_nodegroup) 
+  [Console di gestione AWS](#console_create_managed_nodegroup) 

## `eksctl`
<a name="eksctl_create_managed_nodegroup"></a>

 **Creare un gruppo di nodi gestito con eksctl** 

Questa procedura richiede `eksctl` versione `0.215.0` o successiva. È possibile verificare la versione con il comando seguente:

```
eksctl version
```

Per istruzioni sull’installazione o sull’aggiornamento di `eksctl`, consulta la sezione [Installation](https://eksctl.io/installation) nella documentazione di `eksctl`.

1. (Facoltativo) Se la policy IAM gestita **AmazonEKS\$1CNI\$1Policy** è collegata al [ruolo IAM del nodo Amazon EKS](create-node-role.md), si consiglia, invece, di assegnarla a un ruolo IAM associato all’account di servizio Kubernetes `aws-node`. Per ulteriori informazioni, consulta [Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA](cni-iam-role.md).

1. Creare un gruppo di nodi gestiti con o senza utilizzare un modello di avvio personalizzato. La specifica manuale di un modello di avvio consente una maggiore personalizzazione di un gruppo di nodi. Ad esempio, può consentire l'implementazione di un'AMI personalizzata o la presenza di argomenti sullo script `boostrap.sh` in un'AMI ottimizzata per Amazon EKS. Per avere un elenco completo di tutte le opzioni e le impostazioni predefinite disponibili, inserisci il comando seguente.

   ```
   eksctl create nodegroup --help
   ```

   Nel comando seguente, sostituisci *my-cluster* con il nome del tuo cluster e sostituisci *my-mng* con il nome del gruppo di nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura.
**Importante**  
Se non si utilizza un modello di avvio personalizzato durante la prima creazione di un gruppo di nodi gestiti, non utilizzarne uno per il gruppo di nodi in un secondo momento. Se non è stato specificato un modello di avvio personalizzato, il sistema genera automaticamente un modello di avvio che non è consigliabile modificare manualmente. La modifica manuale di questo modello di avvio generato in automatico potrebbe causare errori.

 **Senza un modello di avvio** 

 `eksctl` crea un modello di avvio Amazon EC2 predefinito nell'account e implementa il gruppo di nodi utilizzando un modello di avvio creato in base alle opzioni specificate. Prima di specificare un valore per `--node-type`, consulta [Scelta di una tipologia di istanza di nodo Amazon EC2 ottimale](choosing-instance-type.md).

Sostituisci *ami-family* con una parola chiave consentita. Per ulteriori informazioni, consulta [Setting the node AMI Family](https://eksctl.io/usage/custom-ami-support/#setting-the-node-ami-family) (Impostazione della famiglia AMI dei nodi) nella documentazione di `eksctl`. Sostituisci *my-key* con il nome della coppia di chiavi Amazon EC2 o della chiave pubblica. Questa chiave viene utilizzata per eseguire il SSH nei nodi dopo il loro avvio.

**Nota**  
Per Windows, questo comando non abilita SSH. Associa, invece, la coppia di chiavi Amazon EC2 all'istanza e ti consente di eseguire il protocollo RDP nell'istanza.

Se non si dispone di una coppia di chiavi Amazon EC2, è possibile crearla nella Console di gestione AWS. Per informazioni su Linux, consultare [Amazon EC2 key pairs and Linux instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) nella *Guida per l’utente di Amazon EC2*. Per informazioni su Windows, consultare [Amazon EC2 key pairs and Windows instances](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) nella *Guida per l’utente di Amazon EC2*.

Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
+ Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
+ Nessun pod nel cluster richiede l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

Per ulteriori informazioni, consulta [Limita l'accesso al profilo dell'istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

Se si desidera bloccare l’accesso del pod a IMDS, aggiungere l’opzione `--disable-pod-imds` al seguente comando.

```
eksctl create nodegroup \
  --cluster my-cluster \
  --region region-code \
  --name my-mng \
  --node-ami-family ami-family \
  --node-type m5.large \
  --nodes 3 \
  --nodes-min 2 \
  --nodes-max 4 \
  --ssh-access \
  --ssh-public-key my-key
```

Le istanze possono opzionalmente assegnare un numero di indirizzi IP significativamente superiore ai pod, assegnare indirizzi IP ai pod da un intervallo CIDR diverso da quello dell’istanza ed essere distribuite in un cluster senza accesso a Internet. Per ulteriori informazioni, consultare [Assegnazione di più indirizzi IP ai nodi Amazon EKS con prefissi](cni-increase-ip-addresses.md), [Implementazione dei pod in sottoreti alternative con reti personalizzate](cni-custom-network.md), e [Implementazione di cluster privati con accesso limitato a Internet](private-clusters.md) per ulteriori opzioni da aggiungere al comando precedente.

I gruppi di nodi gestiti calcolano e applicano un singolo valore per il numero massimo di pod che possono essere eseguiti su ogni nodo del gruppo in base al tipo di istanza. Se si crea un gruppo di nodi con tipi di istanza diversi, il valore più piccolo calcolato in tutti i tipi di istanza viene applicato come numero massimo di pod che possono essere eseguiti su ogni tipo di istanza nel gruppo di nodi. I gruppi di nodi gestiti calcolano il valore utilizzando lo script a cui si fa riferimento nella pagina .

 **Con un modello di lancio** 

Il modello di avvio deve esistere già e deve soddisfare i requisiti specificati nella pagina [Launch template configuration basics](launch-templates.md#launch-template-basics). Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
+ Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
+ Nessun pod nel cluster richiede l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

Per ulteriori informazioni, consulta [Limita l'accesso al profilo dell'istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

Se si desidera bloccare l’accesso del pod a IMDS, specificare le impostazioni necessarie nel modello di avvio.

1. Copia i seguenti contenuti sul dispositivo. Sostituisci i valori di esempio e quindi esegui il comando modificato per creare il file. `eks-nodegroup.yaml` Diverse impostazioni specificate durante l'implementazione senza un modello di avvio vengono spostate nel modello di avvio. Se non si specifica una `version`, viene utilizzata la versione predefinita del modello.

   ```
   cat >eks-nodegroup.yaml <<EOF
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   metadata:
     name: my-cluster
     region: region-code
   managedNodeGroups:
   - name: my-mng
     launchTemplate:
       id: lt-id
       version: "1"
   EOF
   ```

   Per un elenco completo delle impostazioni del file di configurazione `eksctl`, consulta [Schema dei file config](https://eksctl.io/usage/schema/) nella documentazione di `eksctl`. Le istanze possono opzionalmente assegnare un numero di indirizzi IP significativamente superiore ai pod, assegnare indirizzi IP ai pod da un intervallo CIDR diverso da quello dell’istanza ed essere implementate in un cluster senza accesso a Internet in uscita. Per ulteriori informazioni, consultare [Assegnazione di più indirizzi IP ai nodi Amazon EKS con prefissi](cni-increase-ip-addresses.md), [Implementazione dei pod in sottoreti alternative con reti personalizzate](cni-custom-network.md), e [Implementazione di cluster privati con accesso limitato a Internet](private-clusters.md) per altre opzioni da aggiungere al file di configurazione.

   Se non è stato specificato un ID AMI nel modello di avvio, i gruppi di nodi gestiti calcolano e applicano un singolo valore per il numero massimo di pod che possono essere eseguiti su ogni nodo del gruppo in base al tipo di istanza. Se si crea un gruppo di nodi con tipi di istanza diversi, il valore più piccolo calcolato in tutti i tipi di istanza viene applicato come numero massimo di pod che possono essere eseguiti su ogni tipo di istanza nel gruppo di nodi. I gruppi di nodi gestiti calcolano il valore utilizzando lo script a cui si fa riferimento nella pagina .

   Se nel modello di avvio è stato specificato un ID AMI, specificare il numero massimo di pod che possono essere eseguiti su ciascun nodo del gruppo se si utilizza una [rete personalizzata](cni-custom-network.md) o se si vuole [aumentare il numero di indirizzi IP assegnati all’istanza](cni-increase-ip-addresses.md). Per ulteriori informazioni, consulta .

1. Implementare il gruppo di nodi mediante il comando seguente.

   ```
   eksctl create nodegroup --config-file eks-nodegroup.yaml
   ```

## Console di gestione AWS
<a name="console_create_managed_nodegroup"></a>

 **Creare un gruppo di nodi gestiti utilizzando la Console di gestione AWS ** 

1. Attendi che lo stato del cluster risulti `ACTIVE`. Non è possibile creare un gruppo di nodi gestiti per un cluster non ancora `ACTIVE`.

1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegli il nome del cluster in cui desideri creare un gruppo di nodi gestiti.

1. Seleziona la scheda **Compute** (Calcolo).

1. Scegli **Add node group** (Aggiungi gruppo di nodi).

1. Nella pagina **Configura il gruppo di nodi**, compila i parametri di conseguenza e quindi scegli **Successivo**.
   +  **Nome**: inserisci un nome univoco per il gruppo di nodi gestiti. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura.
   +  **Ruolo IAM del nodo**: scegli il ruolo dell'istanza del nodo da utilizzare con il gruppo di nodi. Per ulteriori informazioni, consulta [Ruolo IAM del nodo Amazon EKS](create-node-role.md).
**Importante**  
Non è possibile usare lo stesso ruolo utilizzato per creare i cluster.
Consigliamo di utilizzare un ruolo che non è attualmente in uso da alcun gruppo di nodi autogestiti. In caso contrario, prevedi l'utilizzo di un nuovo gruppo di nodi autogestiti. Per ulteriori informazioni, consulta [Eliminare un gruppo di nodi gestito dal cluster](delete-managed-node-group.md).
   +  **Usa modello di avvio** (Facoltativo): scegli se desideri utilizzare un modello di avvio esistente. Seleziona un **Launch Template Name** (Nome del modello di avvio). Quindi, seleziona una **Launch template version** (Versione del modello di avvio). Se non si seleziona una versione, Amazon EKS utilizza la versione predefinita del modello. I modelli di avvio permettono una maggiore personalizzazione del gruppo di nodi, ad esempio consentendo di implementare un’AMI personalizzata, assegnare un numero significativamente superiore di indirizzi IP ai pod, assegnare indirizzi IP ai pod da un intervallo CIDR diverso da quello dell’istanza e implementare i nodi in un cluster senza accesso a Internet in uscita. Per ulteriori informazioni, consultare [Assegnazione di più indirizzi IP ai nodi Amazon EKS con prefissi](cni-increase-ip-addresses.md), [Implementazione dei pod in sottoreti alternative con reti personalizzate](cni-custom-network.md) e [Implementazione di cluster privati con accesso limitato a Internet](private-clusters.md).

     Il modello di avvio deve soddisfare i requisiti descritti nella pagina [Customize managed nodes with launch templates](launch-templates.md). Se non si utilizza il proprio modello, l’API di Amazon EKS crea un modello di avvio Amazon EC2 predefinito nell’account e implementa il gruppo di nodi utilizzando il modello di avvio predefinito.

     Se implementate [i ruoli IAM per gli account di servizio](iam-roles-for-service-accounts.md), assegnate le autorizzazioni necessarie direttamente a ogni Pod che richiede l'accesso ai AWS servizi e nessun Pod del cluster richiede l'accesso a IMDS per altri motivi, come il recupero della AWS regione corrente, allora potete anche disabilitare l'accesso a IMDS per i Pod che non utilizzano la rete host in un modello di lancio. Per ulteriori informazioni, consulta [Limita l'accesso al profilo dell'istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
   +  **Etichette Kubernetes** – (Facoltativo) È possibile scegliere di applicare etichette Kubernetes ai nodi del gruppo di nodi gestiti.
   +  **Taint Kubernetes**: (facoltativo) è possibile scegliere di applicare i taint Kubernetes ai nodi del gruppo di nodi gestiti. Nel menu **Effetto** sono disponibili le opzioni ` NoSchedule `, ` NoExecute ` e ` PreferNoSchedule `. Per ulteriori informazioni, consulta [Ricetta: impedire che i pod siano programmati su nodi specifici](node-taints-managed-node-groups.md).
   +  **Tag**: (facoltativo) è possibile scegliere di aggiungere tag al gruppo di nodi gestiti Amazon EKS. Questi tag non si propagano ad altre risorse del gruppo di nodi, ad esempio gruppi Auto Scaling o istanze. Per ulteriori informazioni, consulta [Organizzazione delle risorse Amazon EKS con tag](eks-using-tags.md).

1. Nella pagina **Imposta configurazione di calcolo e dimensionamento**, compila i parametri di conseguenza e quindi scegli **Successivo**.
   +  **Tipo di AMI:** selezionare un tipo di AMI. Se stai distribuendo istanze Arm, assicurati di rivedere le considerazioni in [Arm Amazon Linux AMIs ottimizzato per Amazon EKS prima](eks-optimized-ami.md#arm-ami) della distribuzione.

     Se nella pagina precedente sono stati specificati un modello di avvio e un’AMI nel modello, non è possibile selezionare un valore. Viene visualizzato il valore del modello. L’AMI specificata nel modello deve soddisfare i requisiti indicati alla pagina [Specifying an AMI](launch-templates.md#launch-template-custom-ami).
   +  **Tipo di capacità**: seleziona un tipo di capacità. Per ulteriori informazioni sulla scelta di un tipo di capacità, consulta [Tipi di capacità del gruppo di nodi gestiti](managed-node-groups.md#managed-node-group-capacity-types). Non è possibile combinare diversi tipi di capacità all’interno dello stesso gruppo di nodi. Se desideri utilizzare entrambi i tipi di capacità, crea gruppi di nodi separati, ognuno con i propri tipi di capacità e istanza. [ GPUs Per informazioni sul provisioning e la scalabilità dei nodi di lavoro accelerati da GPU, consulta Reserve for managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/capacity-blocks-mng.html).
   +  **Tipi di istanza**: per impostazione predefinita, viene specificato uno o più tipi di istanza. Per rimuovere un tipo di istanza predefinito, seleziona il `X` sul lato destro del tipo di istanza. Scegli il tipo di istanza da utilizzare nel gruppo di nodi gestiti. Per ulteriori informazioni, consulta [Scelta di una tipologia di istanza di nodo Amazon EC2 ottimale](choosing-instance-type.md).

     Nella console viene visualizzato un insieme di tipi di istanza di uso comune. Se devi creare un gruppo di nodi gestito con un tipo di istanza che non viene visualizzato`eksctl`, usa la AWS CLI o un SDK per creare il gruppo di nodi. AWS CloudFormation Se nella pagina precedente è stato specificato un modello di avvio, non è possibile selezionare un valore perché il tipo di istanza deve essere specificato nel modello di avvio. Viene visualizzato il valore del modello di avvio. Se è stato selezionato **Spot** per **Tipo capacità**, al fine di migliorare la disponibilità è consigliabile specificare più tipi di istanza.
   +  **Dimensioni disco**: inserire le dimensioni del disco (in GiB) da utilizzare per il volume root del nodo.

     Se nella pagina precedente è stato specificato un modello di avvio, non è possibile selezionare un valore perché deve essere specificato nel modello di avvio.
   +  **Dimensione desiderata**: specifica il numero corrente di nodi che il gruppo di nodi gestiti deve mantenere all'avvio.
**Nota**  
Amazon EKS non aumenta o riduce orizzontalmente in automatico il gruppo di nodi. Tuttavia, è possibile configurare il Cluster Autoscaler di Kubernetes per eseguire questa operazione. Per ulteriori informazioni, consulta [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) on. AWS
   +  **Dimensione minima**: specifica il numero minimo di nodi a cui il gruppo di nodi gestiti può essere ridotto.
   +  **Dimensione massima**: specifica il numero massimo di nodi a cui il gruppo di nodi gestiti può essere aumentato.
   +  **Configurazione dell'aggiornamento dei gruppi di nodi**: (facoltativo) puoi selezionare il numero o la percentuale di nodi da aggiornare in parallelo. Questi nodi non saranno disponibili durante l'aggiornamento. Per **Numero massimo non disponibile**, seleziona una delle seguenti opzioni e specifica un **Valore**:
     +  **Numero**: seleziona e specifica il numero di nodi nel gruppo nodi che possono essere aggiornati in parallelo.
     +  **Percentuale**: seleziona e specifica la percentuale di nodi nel gruppo di nodi che possono essere aggiornati in parallelo. Questa funzione è utile se disponi di un numero elevato di nodi nel gruppo di nodi.
   +  **Configurazione di riparazione automatica del nodo**: (facoltativo) se viene attivata la casella di controllo **Abilita la riparazione automatica del nodo**, Amazon EKS sostituirà automaticamente i nodi quando si verificano i problemi rilevati. Per ulteriori informazioni, consulta [Rileva i problemi di integrità dei nodi e abilita la riparazione automatica dei nodi](node-health.md).

1. Nella pagina **Specifica reti**, compila i parametri opportunamente, quindi scegli **Successivo**.
   +  **Sottoreti**: sceglii le sottoreti in cui avviare i nodi gestiti.
**Importante**  
Se si esegue un’applicazione stateful in più zone di disponibilità supportate dai volumi Amazon EBS e che utilizza il [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) di Kubernetes, è necessario configurare più gruppi di nodi, ognuno dei quali definito per una singola zona di disponibilità. Inoltre, è necessario abilitare la funzionalità `--balance-similar-node-groups`.
**Importante**  
Se si sceglie una sottorete pubblica e nel cluster è abilitato solo l'endpoint del server API pubblico, è necessario che la sottorete disponga di `MapPublicIPOnLaunch` impostato su `true` per consentire alle istanze di unirsi correttamente a un cluster. Se la sottorete è stata creata utilizzando `eksctl` o i [AWS CloudFormation modelli forniti da Amazon EKS](creating-a-vpc.md) a partire dal 26 marzo 2020, allora questa impostazione è già impostata su. `true` Se le sottoreti sono state create con `eksctl` o i AWS CloudFormation modelli prima del 26 marzo 2020, devi modificare l'impostazione manualmente. Per ulteriori informazioni, vedere [Modifica dell'attributo di IPv4 indirizzamento pubblico per la](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) sottorete.
Se si utilizza un modello di avvio e si specificano più interfacce di rete, Amazon EC2 non assegnerà automaticamente un indirizzo `IPv4` pubblico, anche se `MapPublicIpOnLaunch` è impostato su `true`. Affinché i nodi possano unirsi al cluster in questo scenario, è necessario abilitare l’endpoint del server API privato del cluster, oppure avviare i nodi in una sottorete privata con accesso Internet in uscita fornito attraverso un metodo alternativo, ad esempio un gateway NAT. Per ulteriori informazioni, consultare la pagina [Amazon EC2 instance IP addressing](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html) della *Guida per l’utente di Amazon EC2*.
   +  **Configurazione dell'accesso SSH ai nodi** (facoltativo). L'abilitazione di SSH consente di connettersi alle istanze e raccogliere informazioni diagnostiche in caso di problemi. Consigliamo vivamente di abilitare l'accesso remoto quando crei un gruppo di nodi. Non è possibile abilitare l’accesso remoto dopo la creazione del gruppo di nodi.

     Se si sceglie di utilizzare un modello di avvio, questa opzione non viene visualizzata. Per abilitare l'accesso remoto ai nodi, specifica una coppia di chiavi nel modello di avvio e assicurati che la porta appropriata sia aperta ai nodi nei gruppi di sicurezza specificati nel modello di avvio. Per ulteriori informazioni, consulta [Utilizzo di gruppi di sicurezza personalizzati](launch-templates.md#launch-template-security-groups).
**Nota**  
Per Windows, questo comando non abilita SSH. Associa, invece, la coppia di chiavi Amazon EC2 all'istanza e ti consente di eseguire il protocollo RDP nell'istanza.
   + Per **Coppia di chiavi SSH** (facoltativo), scegli una chiave SSH Amazon EC2 da utilizzare. Per informazioni su Linux, consultare [Amazon EC2 key pairs and Linux instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) nella *Guida per l’utente di Amazon EC2*. Per informazioni su Windows, consultare [Amazon EC2 key pairs and Windows instances](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) nella *Guida per l’utente di Amazon EC2*. Se si sceglie di utilizzare un modello di avvio, non è possibile selezionarne una. Quando viene fornita una chiave SSH Amazon EC2 per i gruppi di nodi che utilizzano Bottlerocket AMIs, viene abilitato anche il contenitore amministrativo. Per ulteriori informazioni, consulta [Container amministratore](https://github.com/bottlerocket-os/bottlerocket#admin-container) su GitHub.
   + Per **Autorizzazione di accesso remoto SSH da**, se desideri limitare l'accesso a istanze specifiche, seleziona i gruppi di sicurezza associati a tali istanze. Se non si selezionano gruppi di sicurezza specifici, l’accesso SSH è consentito da qualsiasi indirizzo di Internet (`0.0.0.0/0`).

1. Nella pagina **Rivedi e crea**, controlla la configurazione del gruppo di nodi gestiti e scegli **Crea**.

   Se i nodi di lavoro non riescono a unirsi al cluster, consultare [Impossibile aggiungere i nodi al cluster](troubleshooting.md#worker-node-fail) nel capitolo dedicato alla risoluzione dei problemi.

1. Guarda lo stato dei nodi e attendi che raggiungano lo stato `Ready`.

   ```
   kubectl get nodes --watch
   ```

1. (Solo nodi GPU) Se hai scelto un tipo di istanza GPU e un'AMI accelerata ottimizzata per Amazon EKS, devi applicare [il plug-in del dispositivo NVIDIA per](https://github.com/NVIDIA/k8s-device-plugin) Kubernetes sul tuo cluster. DaemonSet Sostituiscilo *vX.X.X* con la versione di [s-device-pluginNVIDIA/K8](https://github.com/NVIDIA/k8s-device-plugin/releases) desiderata prima di eseguire il comando seguente.

   ```
   kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
   ```

## Installare i componenti aggiuntivi Kubernetes
<a name="_install_kubernetes_add_ons"></a>

Ora che si dispone di un cluster Amazon EKS funzionante con nodi, è possibile avviare l’installazione dei componenti aggiuntivi Kubernetes e l’implementazione di applicazioni al cluster. I seguenti argomenti della documentazione consentono di estendere la funzionalità del cluster.
+ Il [principale IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) in grado di creare il cluster è l’unico principale che può effettuare chiamate al server API Kubernetes tramite `kubectl` o la Console di gestione AWS. Se si desidera che altri principali IAM abbiano accesso al cluster, è necessario aggiungerli. Per ulteriori informazioni, consultare [Concedi agli utenti e ai ruoli IAM l'accesso a Kubernetes APIs](grant-k8s-access.md) e [Autorizzazioni richieste](view-kubernetes-resources.md#view-kubernetes-resources-permissions).
+ Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
  + Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
  + Nessun pod nel cluster richiede l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

  Per ulteriori informazioni, consulta [Limita l’accesso al profilo dell’istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
+ Configurare il [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) di Kubernetes per regolare automaticamente il numero di nodi nei gruppi di nodi.
+ Implementare [un’applicazione di esempio](sample-deployment.md) al cluster.
+  [Organizzare e monitorare le risorse del cluster](eks-managing.md) con strumenti importanti per la gestione.

# Aggiornamento del gruppo di nodi gestito per il cluster
<a name="update-managed-node-group"></a>

Quando si avvia un aggiornamento di un gruppo di nodi gestiti, Amazon EKS aggiorna automaticamente i nodi, completando i passaggi elencati in [Understand each phase of node updates](managed-node-update-behavior.md). Se si utilizza un’AMI ottimizzata per Amazon EKS, Amazon EKS applica automaticamente le patch di sicurezza più recenti e gli aggiornamenti del sistema operativo ai nodi come parte dell’ultima versione di AMI.

Esistono diversi scenari in cui è utile aggiornare la versione o la configurazione del gruppo di nodi gestiti Amazon EKS:
+ Hai aggiornato la versione di Kubernetes per il cluster Amazon EKS e vuoi aggiornare i nodi per utilizzare la stessa versione di Kubernetes.
+ Una nuova versione dell'AMI è disponibile per il gruppo di nodi gestiti. Per ulteriori informazioni sulle versioni AMI, consultare le seguenti sezioni:
  +  [Recupero delle informazioni sulla versione dell’AMI Amazon Linux](eks-linux-ami-versions.md) 
  +  [Crea nodi con Bottlerocket ottimizzato AMIs](eks-optimized-ami-bottlerocket.md) 
  +  [Recupero delle informazioni sulla versione delle AMI Windows](eks-ami-versions-windows.md) 
+ Per regolare il conteggio minimo, massimo o desiderato delle istanze nel gruppo di nodi gestiti.
+ Per aggiungere o rimuovere le etichette Kubernetes dalle istanze del gruppo di nodi gestiti.
+ Vuoi aggiungere o rimuovere AWS tag dal tuo gruppo di nodi gestito.
+ È necessario implementare una nuova versione di un modello di avvio con modifiche alla configurazione, ad esempio un'AMI personalizzata aggiornata.
+ Hai distribuito una versione `1.9.0` o successiva del componente aggiuntivo Amazon VPC CNI, abilitato il componente aggiuntivo per la delega dei prefissi e desideri che AWS nuove istanze Nitro System in un gruppo di nodi supportino un numero significativamente maggiore di Pod. Per ulteriori informazioni, consulta [Assegnazione di più indirizzi IP ai nodi Amazon EKS con prefissi](cni-increase-ip-addresses.md).
+ Hai abilitato la delega del prefisso IP per i nodi Windows e desideri che nuove istanze di AWS Nitro System in un gruppo di nodi supportino un numero significativamente maggiore di Pod. Per ulteriori informazioni, consulta [Assegnazione di più indirizzi IP ai nodi Amazon EKS con prefissi](cni-increase-ip-addresses.md).

Se esiste una versione dell’AMI più recente per la versione Kubernetes del gruppo di nodi gestiti rispetto a quella in esecuzione nel gruppo di nodi, è possibile aggiornare quest’ultima per utilizzare la nuova versione dell’AMI. Analogamente, se nel cluster è in esecuzione una versione di Kubernetes più recente rispetto al gruppo di nodi, è possibile aggiornare il gruppo di nodi per utilizzare la versione più recente dell’AMI che corrisponde alla versione di Kubernetes del cluster.

Quando un nodo in un gruppo di nodi gestiti è terminato a causa di un’operazione di dimensionamento o di un aggiornamento, i pod nel nodo sono svuotati per primi. Per ulteriori informazioni, consulta [Comprendi ogni fase degli aggiornamenti dei nodi](managed-node-update-behavior.md).

## Aggiornare la versione di un gruppo di nodi
<a name="mng-update"></a>

È possibile aggiornare la versione di un gruppo di nodi con uno dei seguenti:
+  [`eksctl`](#eksctl_update_managed_nodegroup) 
+  [Console di gestione AWS](#console_update_managed_nodegroup) 

La versione a cui si aggiorna non può essere successiva alla versione del piano di controllo.

## `eksctl`
<a name="eksctl_update_managed_nodegroup"></a>

 **Aggiornare un gruppo di nodi gestito utilizzando `eksctl`** 

Aggiorna un gruppo di nodi gestiti alla stessa versione AMI più recente di Kubernetes attualmente implementata nei nodi con il comando seguente. Sostituisci ogni *example value* con i valori in tuo possesso.

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code
```

**Nota**  
Se stai aggiornando un gruppo di nodi implementato con un modello di avvio a una nuova versione del modello di avvio, aggiungi `--launch-template-version version-number ` al precedente comando. Il modello di avvio deve soddisfare i requisiti descritti in [Customize managed nodes with launch templates](launch-templates.md). Se il modello di avvio include un’AMI personalizzata, l’AMI deve soddisfare i requisiti in [Specificare un’AMI](launch-templates.md#launch-template-custom-ami). Quando si aggiorna il gruppo di nodi a una versione più recente del modello di avvio, tutti i nodi sono riciclati in modo da corrispondere alla nuova configurazione della versione del modello di avvio specificata.

Non è possibile aggiornare direttamente un gruppo di nodi implementato senza un modello di avvio a una nuova versione del modello di avvio. È invece necessario implementare un nuovo gruppo di nodi utilizzando il modello di avvio per aggiornare il gruppo di nodi a una nuova versione del modello di avvio.

È possibile aggiornare un gruppo di nodi alla stessa versione della versione Kubernetes del piano di controllo. Ad esempio, se hai un cluster che esegue Kubernetes `1.35`, puoi aggiornare i nodi che attualmente eseguono Kubernetes `1.34` alla versione `1.35` con il comando seguente.

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code \
  --kubernetes-version=1.35
```

## Console di gestione AWS
<a name="console_update_managed_nodegroup"></a>

 **Aggiornare un gruppo di nodi gestito utilizzando Console di gestione AWS ** 

1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegliere il cluster che contiene il gruppo di nodi da aggiornare.

1. Se almeno un gruppo di nodi dispone di un aggiornamento disponibile, nella parte superiore della pagina viene visualizzata una casella di notifica dell'aggiornamento disponibile. Se selezioni la scheda **Calcolo**, visualizzerai **Aggiorna ora** nella colonna **Versione rilascio AMI** nella tabella **Gruppi di nodi** per il gruppo di nodi per cui è disponibile un aggiornamento. Per aggiornare il gruppo di nodi, scegli **Update now** (Aggiorna ora).

   Non verrà visualizzata una notifica per i gruppi di nodi implementati con un’AMI personalizzata. Se i nodi vengono implementati con un'AMI personalizzata, completare la procedura seguente per implementare una nuova AMI personalizzata aggiornata.

   1. Crea una nuova versione dell'AMI.

   1. Creare una nuova versione del modello di avvio con il nuovo ID AMI.

   1. Aggiornamento dei i nodi alla nuova versione del modello di avvio.

1. Nella finestra di dialogo **Update node group version** (Aggiorna la versione del gruppo di nodi), attiva o disattiva le seguenti opzioni:
   +  **Update node group version** (Aggiorna la versione del gruppo di nodi): questa opzione non è disponibile se hai implementato un'AMI personalizzata o se l'AMI ottimizzata per Amazon EKS attualmente è disponibile nella versione più recente del cluster.
   +  **Change launch template version** (Modifica la versione del modello di avvio): questa opzione non è disponibile se il gruppo di nodi è implementato senza un modello di avvio personalizzato. È possibile aggiornare la versione del modello di avvio solo per un gruppo di nodi implementato con un modello di avvio personalizzato. Seleziona la **Launch template version** (Versione del modello di avvio) a cui eseguire l'aggiornamento del gruppo di nodi. Se il gruppo di nodi è configurato con un'AMI personalizzata, anche la versione selezionata deve specificare un'AMI. Quando si esegue l'aggiornamento a una versione più recente del modello di avvio, tutti i nodi vengono riciclati in modo da corrispondere alla nuova configurazione della versione del modello di avvio specificata.

1. Per **Update strategy** (Strategia aggiornamento), seleziona una delle seguenti opzioni:
   +  **Aggiornamento in sequenza**: questa opzione rispetta i budget di interruzione del pod per il cluster. Gli aggiornamenti non riescono se c’è un problema di budget che interrompe il pod, che fa sì che Amazon EKS non riesca a svuotare correttamente i pod in esecuzione su questo gruppo di nodi.
   +  **Forza aggiornamento**: questa opzione non rispetta i budget per le interruzioni dei pod. Gli aggiornamenti sono eseguiti indipendentemente dai problemi di budget di interruzione del pod forzando il riavvio dei nodi.

1. Scegliere **Aggiorna**.

## Modificare la configurazione di un gruppo di nodi
<a name="mng-edit"></a>

È possibile modificare parte della configurazione di un gruppo di nodi gestiti.

1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegliere il cluster che contiene il gruppo di nodi da modificare.

1. Seleziona la scheda **Compute** (Calcolo).

1. Seleziona il gruppo di nodi da modificare, e scegli **Edit** (Modifica).

1. (Facoltativo) Nella pagina **Edit node group** (Modifica gruppo di nodi), effettua le seguenti operazioni:

   1. Modifica la **configurazione di scalabilità del gruppo di nodi**.
      +  **Dimensione desiderata**: specifica il numero corrente di nodi che il gruppo di nodi gestiti deve mantenere.
      +  **Dimensione minima**: specifica il numero minimo di nodi a cui il gruppo di nodi gestiti può essere ridotto.
      +  **Dimensione massima**: specifica il numero massimo di nodi a cui il gruppo di nodi gestiti può essere aumentato orizzontalmente. Per il numero massimo di nodi supportati in un gruppo di nodi, vedere [Visualizzazione e gestione di quote di servizio di Amazon EKS e Fargate](service-quotas.md).

   1. (Facoltativo) Aggiungi o rimuovi **etichette Kubernetes** ai nodi nel gruppo di nodi. Le etichette mostrate qui sono solo le etichette applicate con Amazon EKS. Altre etichette, non mostrate qui, possono essere presenti sui nodi.

   1. (Facoltativo) Aggiungi o rimuovi **taint Kubernetes** ai nodi nel gruppo di nodi. I taint aggiunti possono avere l'effetto di ` NoSchedule `, ` NoExecute `, oppure ` PreferNoSchedule `. Per ulteriori informazioni, consulta [Ricetta: impedire che i pod siano programmati su nodi specifici](node-taints-managed-node-groups.md).

   1. (Facoltativo) Aggiungi o rimuovi **Tag** dalla risorsa del gruppo di nodi. Questi tag vengono applicati solo al gruppo di nodi Amazon EKS. I tag dei gruppi di nodi non si propagano ad altre risorse come istanze o le sottoreti di Amazon EC2 nel gruppo di nodi.

   1. (Facoltativo) Modifica la **Configurazione dell'aggiornamento del gruppo di nodi**. Seleziona un'opzione tra **Numero** o **Percentuale**.
      +  **Numero**: seleziona e specifica il numero di nodi nel gruppo nodi che possono essere aggiornati in parallelo. Questi nodi non saranno disponibili durante l'aggiornamento.
      +  **Percentuale**: selezionare e specificare la percentuale di nodi nel gruppo di nodi che possono essere aggiornati in parallelo. Questi nodi non saranno disponibili durante l'aggiornamento. Questa funzione è utile se si dispone di diversi nodi nel gruppo di nodi.

   1. Al termine della modifica, scegli **Salva modifiche**.

**Importante**  
Quando si aggiorna la configurazione del gruppo di nodi, la modifica di Pod [https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html)non rispetta i budget di interruzione delle attività dei Pod (). PDBs A differenza del processo di [aggiornamento del gruppo di nodi](managed-node-update-behavior.md) (che prosciuga i nodi e li rispetta PDBs durante la fase di aggiornamento), l'aggiornamento della configurazione di scalabilità causa la chiusura immediata dei nodi tramite una chiamata di scale-down di Auto Scaling Group (ASG). Ciò avviene senza considerarlo PDBs, indipendentemente dalla dimensione target a cui si sta effettuando la scalabilità. Ciò significa che quando riduci il numero `desiredSize` di un gruppo di nodi gestiti da Amazon EKS, i Pod vengono eliminati non appena i nodi vengono terminati, senza onorarne nessuno. PDBs

# Comprendi ogni fase degli aggiornamenti dei nodi
<a name="managed-node-update-behavior"></a>

La strategia di aggiornamento del nodo (worker) gestito di Amazon EKS ha quattro fasi diverse descritte nelle sezioni seguenti.

## Fase di configurazione
<a name="managed-node-update-set-up"></a>

La fase di configurazione prevede i seguenti passaggi:

1. Crea una nuova versione del modello di avvio Amazon EC2 per il gruppo Auto Scaling associato al gruppo di nodi. La nuova versione del modello di avvio utilizza l’AMI di destinazione o una versione del modello di avvio personalizzata per l’aggiornamento.

1. Il gruppo Auto Scaling viene aggiornato per utilizzare la versione più recente del modello di avvio.

1. Determina la quantità massima di nodi da aggiornare in parallelo utilizzando la proprietà `updateConfig` per il gruppo di nodi. Il massimo non disponibile ha una quota di 100 nodi. Il valore di default è un nodo. Per ulteriori informazioni, consulta la proprietà [updateConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateNodegroupConfig.html#API_UpdateNodegroupConfig_RequestSyntax) nella *Documentazione di riferimento delle API di Amazon EKS*.

## Fase di scalabilità
<a name="managed-node-update-scale-up"></a>

Quando si aggiornano i nodi in un gruppo di nodi gestiti, i nodi aggiornati vengono avviati nella stessa zona di disponibilità di quelli in fase di aggiornamento. Per garantire questo posizionamento, utilizziamo il ribilanciamento della zona di disponibilità di Amazon EC2. Per ulteriori informazioni, consulta [Availability Zone Rebalancing](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-benefits.html#AutoScalingBehavior.InstanceUsage) nella *Guida per l’utente di Amazon EC2 Auto Scaling*. Per soddisfare questo requisito, è possibile avviare fino a due istanze per zona di disponibilità nel gruppo di nodi gestiti.

La fase di scalabilità prevede i seguenti passaggi:

1. Incrementa la dimensione massima e la dimensione desiderata del gruppo Auto Scaling in base alla scelta maggiore tra:
   + Fino a due volte il numero di zone di disponibilità in cui è stato implementato il gruppo Auto Scaling.
   + Il massimo non disponibile per l’aggiornamento.

     Ad esempio, se il gruppo di nodi ha cinque zone di disponibilità e `maxUnavailable` è uno, il processo di aggiornamento può avviare al massimo 10 nodi. Tuttavia, quando `maxUnavailable` è 20 (o comunque superiore a 10), il processo avvia 20 nuovi nodi.

1. Dopo aver dimensionato il gruppo Auto Scaling, verifica se i nodi che utilizzano la configurazione più recente sono presenti nel gruppo di nodi. Questo passaggio ha esito positivo solo quando soddisfa i seguenti criteri:
   + Almeno un nuovo nodo viene avviato in ogni zona di disponibilità in cui esiste il nodo.
   + Ogni nuovo nodo deve essere nello stato `Ready`.
   + I nuovi nodi devono avere etichette applicate da Amazon EKS.

     Queste sono le etichette applicate da Amazon EKS sui nodi (worker) di un normale gruppo di nodi:
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 

     Queste sono le etichette applicate da Amazon EKS sui nodi (worker) in un modello di avvio personalizzato o un gruppo di nodi AMI:
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 
     +  `eks.amazonaws.com/sourceLaunchTemplateId=$launchTemplateId` 
     +  `eks.amazonaws.com/sourceLaunchTemplateVersion=$launchTemplateVersion` 

1. Contrassegna i nodi come non programmabili per evitare di programmare nuovi pod. Inoltre, etichetta i nodi con `node.kubernetes.io/exclude-from-external-load-balancers=true` per rimuovere i vecchi nodi dai sistemi di bilanciatore del carico prima di terminare i nodi.

Di seguito sono riportati i motivi noti che portano a un errore `NodeCreationFailure` in questa fase:

 **Capacità insufficiente nella zona di disponibilità**   
Esiste la possibilità che la zona di disponibilità non abbia capacità disponibile per i tipi di istanza richiesti. Si consiglia di configurare più tipi di istanze durante la creazione di un gruppo di nodi gestiti.

 **Limiti delle istanze EC2 dell’account**   
Potrebbe essere necessario aumentare il numero di istanze Amazon EC2 che il l’account può eseguire contemporaneamente utilizzando Service Quotas. Per ulteriori informazioni, consulta [Service Quotas di EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) nella *Guida per l’utente di Amazon Elastic Compute Cloud per le istanze Linux*.

 **Dati utente personalizzati**   
I dati utente personalizzati possono talvolta interrompere il processo di bootstrap. Questo scenario può portare al mancato avvio di `kubelet` sul nodo o sui nodi che non ricevono le etichette Amazon EKS previste. Per ulteriori informazioni, consulta [Specifica di un'AMI](launch-templates.md#launch-template-custom-ami).

 **Qualsiasi modifica che renda un nodo non integro o non pronto**   
La pressione del disco del nodo, la pressione della memoria e condizioni simili possono far sì che un nodo non assuma lo stato `Ready`.

 **Ogni nodo si avvia al massimo entro 15 minuti**   
Se un nodo impiega più di 15 minuti per avviarsi e unirsi al cluster, si verificherà il timeout dell’aggiornamento. Questo è il runtime totale per il bootstrap di un nuovo nodo misurato dal momento in cui è necessario un nuovo nodo al momento in cui si unisce al cluster. Quando si aggiorna un gruppo di nodi gestito, il contatore temporale si avvia non appena la dimensione del gruppo Auto Scaling aumenta.

## Fase di aggiornamento
<a name="managed-node-update-upgrade"></a>

La fase di aggiornamento si comporta in due modi diversi, a seconda della *strategia di aggiornamento*. Esistono due strategie di aggiornamento: **predefinita** e **minimale**.

Consigliamo una strategia predefinita nella maggior parte degli scenari. Infatti, questa crea nuovi nodi prima di terminare quelli vecchi, in modo da mantenere la capacità disponibile durante la fase di aggiornamento. La strategia minimale è utile in scenari in cui si è limitati per quanto riguarda risorse o costi, ad esempio con acceleratori hardware come le GPU. Infatti, termina i vecchi nodi prima di creare quelli nuovi, in modo che la capacità totale non aumenti mai oltre la quantità configurata.

La strategia di aggiornamento *predefinita* prevede i seguenti passaggi:

1. Aumenta la quantità di nodi (numero desiderato) nel gruppo Auto Scaling, facendo sì che il gruppo di nodi crei nodi aggiuntivi.

1. Seleziona casualmente un nodo che deve essere aggiornato, fino al massimo non disponibile configurato per il gruppo di nodi.

1. Svuota i pod dal nodo. Se i pod non lasciano il nodo entro 15 minuti e non c’è un flag di forzatura, la fase di aggiornamento non riesce con errore `PodEvictionFailure`. Per questo scenario, è possibile applicare il flag di forzatura con la richiesta `update-nodegroup-version` di eliminare i pod.

1. Isola il nodo dopo che ogni pod è stato espulso e aspetta 60 secondi. Ciò consente al controller di servizio di non inviare nuove richieste a questo nodo, e lo rimuove dall’elenco di nodi attivi.

1. Invia una richiesta di interruzione al gruppo con scalabilità automatica per il nodo isolato.

1. Ripete i passaggi di aggiornamento precedenti fino a quando non vi sono nodi nel gruppo implementato con la versione precedente del modello di avvio.

La strategia di aggiornamento *minimale* prevede i seguenti passaggi:

1. All’inizio isola tutti i nodi del gruppo di nodi, in modo che il controller di servizio non invii nuove richieste a questi nodi.

1. Seleziona casualmente un nodo che deve essere aggiornato, fino al massimo non disponibile configurato per il gruppo di nodi.

1. Drena i Pod dai nodi selezionati. Se i pod non lasciano il nodo entro 15 minuti e non c’è un flag di forzatura, la fase di aggiornamento non riesce con errore `PodEvictionFailure`. Per questo scenario, puoi applicare il flag di forzatura con la richiesta `update-nodegroup-version` di eliminare i pod.

1. Dopo che ogni pod è stato rimosso e ha atteso 60 secondi, invia una richiesta di interruzione al gruppo Auto Scaling per i nodi selezionati. Il gruppo Auto Scaling crea nuovi nodi (lo stesso numero di nodi selezionati) per sostituire la capacità mancante.

1. Ripete i passaggi di aggiornamento precedenti fino a quando non vi sono nodi nel gruppo implementato con la versione precedente del modello di avvio.

### Errori `PodEvictionFailure` durante la fase di aggiornamento
<a name="_podevictionfailure_errors_during_the_upgrade_phase"></a>

Di seguito sono riportati i motivi noti che portano a un errore `PodEvictionFailure` in questa fase:

 **PDB aggressivo**   
Sul pod è definito un PDB aggressivo oppure sono presenti più PDB che puntano allo stesso pod.

 **Implementazione che tollera tutti i taint**   
Una volta espulso ogni pod, il nodo dovrebbe essere vuoto in quanto [oggetto di taint](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) nei passaggi precedenti. Tuttavia, se l’implementazione tollera ogni taint, è più probabile che il nodo non sia vuoto, causando un errore di espulsione dal pod.

## Fase di dimensionamento
<a name="managed-node-update-scale-down"></a>

La fase di dimensionamento diminuisce di uno la dimensione massima del gruppo Auto Scaling e la dimensione desiderata per tornare ai valori prima dell’avvio dell’aggiornamento.

Se il flusso di lavoro di aggiornamento determina che il Cluster Autoscaler stia dimensionando il gruppo di nodi durante la fase di dimensionamento del flusso di lavoro, esce immediatamente senza riportare il gruppo di nodi alle dimensioni originali.

# Personalizzazione dei nodi gestiti con modelli di avvio
<a name="launch-templates"></a>

Per il massimo livello di personalizzazione, puoi distribuire nodi gestiti con il tuo modello di lancio in base ai passaggi di questa pagina. L'utilizzo di un modello di avvio consente funzionalità come fornire argomenti di bootstrap durante la distribuzione di un nodo (ad esempio, argomenti [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) aggiuntivi), assegnare indirizzi IP ai Pod da un blocco CIDR diverso dall'indirizzo IP assegnato al nodo, distribuire la propria AMI personalizzata ai nodi o distribuire il proprio CNI personalizzato sui nodi.

Quando fornisci il tuo modello di avvio alla prima creazione di un gruppo di nodi gestito, in seguito avrai anche una maggiore flessibilità. Dopo aver implementato un gruppo di nodi gestiti con un modello di avvio personalizzato, potrai aggiornarlo in maniera iterativa con una versione diversa dello stesso modello. Quando si aggiorna il gruppo di nodi a una versione diversa del modello di avvio, tutti i nodi del gruppo vengono riciclati in modo da corrispondere alla nuova configurazione della versione del modello di avvio specificata.

I gruppi di nodi gestiti vengono sempre implementati con un modello di avvio da utilizzare con gruppo di Amazon EC2 Auto Scaling. Quando non è fornito un modello di avvio, l’API Amazon EKS ne crea automaticamente uno con i valori predefiniti nel tuo account. Tuttavia, consigliamo di non modificare i modelli di avvio generati automaticamente. Inoltre, i gruppi di nodi esistenti che non utilizzano un modello di avvio personalizzato non possono essere aggiornati direttamente. A tale scopo, sarà invece necessario creare un nuovo gruppo di nodi con un modello di avvio personalizzato.

## Informazioni di base sulla configurazione del modello di avvio
<a name="launch-template-basics"></a>

Puoi creare un modello di lancio di Amazon EC2 Auto Scaling con la Console di gestione AWS CLI AWS o un SDK. AWS Per ulteriori informazioni, consulta [Creazione di un modello di avvio per un gruppo con scalabilità automatica](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) nella *Guida per l'utente di Amazon EC2 Auto Scaling*. Alcune impostazioni di un modello di avvio sono simili a quelle utilizzate per la configurazione dei nodi gestiti. Quando si implementa o si aggiorna un gruppo di nodi con un modello di avvio, è necessario specificare alcune impostazioni nella configurazione del gruppo di nodi o nel modello di avvio. Non specificare un’impostazione in entrambe le posizioni. Se un’impostazione è impostata dove non dovrebbe, operazioni come la creazione o l’aggiornamento di un gruppo di nodi non hanno esito positivo.

Nella tabella seguente sono elencate le impostazioni vietate in un modello di avvio. Elenca inoltre impostazioni simili, se disponibili, che sono necessarie per la configurazione del gruppo di nodi gestiti. Le impostazioni elencate sono quelle visualizzate nella console. Potrebbero avere nomi simili ma diversi nella AWS CLI e nell'SDK.


| Modello di avvio – Vietato | Configurazione del gruppo di nodi Amazon EKS | 
| --- | --- | 
|   **Sottorete** in **Interfacce di rete** (**Aggiungi interfaccia di rete**)  |   **Sottoreti** in **Configurazione di rete del gruppo di nodi** nella pagina **Specifica reti**  | 
|   **Profilo dell'istanza IAM** in **Dettagli avanzati**   |   **Ruolo IAM del nodo** in **Configurazione del gruppo di nodi** nella pagina **Configura gruppo di nodi**  | 
|   **Comportamento di arresto** e **Interrompi - Iberna comportamento** in **Dettagli avanzati**. Mantieni default **Non includere nell’impostazione del modello di avvio** nel modello di avvio per entrambe le impostazioni.  |  Nessun equivalente. Amazon EKS deve controllare il ciclo di vita dell'istanza, non il gruppo Auto Scaling.  | 

Nella tabella seguente sono elencate le impostazioni vietate nella configurazione di un gruppo di nodi gestiti. Elenca inoltre impostazioni simili, se disponibili, richieste in un modello di avvio. Le impostazioni elencate sono quelle visualizzate nella console. Potrebbero avere nomi simili nella AWS CLI e nell'SDK.


| Configurazione del gruppo di nodi Amazon EKS – Vietata | Modello di avvio | 
| --- | --- | 
|  (Solo se è stata specificata un'AMI personalizzata in un modello di avvio) **Tipo di AMI** in **Configurazione di calcolo del gruppo di nodi** sulla pagina **Imposta configurazione di calcolo e dimensionamento**: la console mostra il messaggio **Specificato nel modello di lancio** e l'ID AMI specificato. Se nel modello di avvio non è stato specificato **Applicazione e immagini OS (Amazon Machine Image)**, è possibile selezionare un’AMI nella configurazione del gruppo di nodi.  |   **Applicazione e immagini OS (Amazon Machine Image)** in **Contenuti del modello di avvio**: è necessario specificare un ID se soddisfi uno dei seguenti requisiti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/launch-templates.html)  | 
|   **Dimensioni del disco** in **Configurazione di calcolo del gruppo di nodi** nella pagina **Imposta configurazione di calcolo e dimensionamento**: la console mostra il messaggio **Specificato nel modello di lancio**.  |   **Dimensioni** in **Archiviazione (volumi)** (**Aggiungi nuovo volume**). È necessario specificarlo nel modello di avvio.  | 
|   **Coppia di chiavi SSH** in **Configurazione del gruppo di nodi** nella pagina **Specifica reti**: la console mostra la chiave specificata nel modello di avvio o mostra il messaggio **Non specificato nel modello di lancio**.  |   **Nome della coppia di chiavi** in **Coppia di chiavi (login)**.  | 
|  Non è possibile specificare gruppi di sicurezza di origine a cui è consentito l’accesso remoto quando si utilizza un modello di avvio.  |   **Gruppi di sicurezza** in **Impostazioni di rete** per l'istanza o **Gruppi di sicurezza** in **Interfacce di rete** (**Aggiungi interfaccia di rete**), ma non entrambi. Per ulteriori informazioni, consulta [Utilizzo di gruppi di sicurezza personalizzati](#launch-template-security-groups).  | 

**Nota**  
Se si esegue l'implementazione di un gruppo di nodi utilizzando un modello di avvio, specificare uno o nessun **Tipo di istanza** in **Contenuti del modello di avvio** in un modello di avvio. In alternativa, è possibile specificare 0-20 tipi di istanza per **Tipi di istanza** nella pagina **Impostare la configurazione di calcolo e dimensionamento** della console. In alternativa, è possibile farlo utilizzando altri strumenti che utilizzano l'API Amazon EKS. Se specifichi un tipo di istanza in un modello di avvio e si utilizza tale modello di avvio per implementare il gruppo di nodi, non è possibile specificare alcun tipo di istanza nella console o utilizzare altri strumenti che sfruttino l’API Amazon EKS. Se non specifichi un tipo di istanza in un modello di avvio nella console o in altri strumenti che utilizzano l’API Amazon EKS, il tipo di istanza `t3.medium` sarà utilizzato. Se il gruppo di nodi utilizza il tipo di capacità Spot, è consigliabile specificare più tipi di istanza utilizzando la console. Per ulteriori informazioni, consulta [Tipi di capacità del gruppo di nodi gestiti](managed-node-groups.md#managed-node-group-capacity-types).
Se i container che si implementano nel gruppo di nodi utilizzano Instance Metadata Service versione 2, assicurarsi di impostare il **Limite hop di risposta metadati** a `2` nel modello di avvio. Per ulteriori informazioni, consulta [Metadati e dati dell'utente delle istanze](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) nella *Guida per l'utente di Amazon EC2*.
I modelli di avvio non supportano la funzionalità `InstanceRequirements` che consente la selezione flessibile del tipo di istanza.

## Assegnazione di tag a istanze Amazon EC2
<a name="launch-template-tagging"></a>

É possibile utilizzare il parametro `TagSpecification` di un modello di avvio per specificare quali tag applicare alle istanze Amazon EC2 nel gruppo di nodi. L'entità IAM che chiama `CreateNodegroup` o `UpdateNodegroupVersion` APIs deve disporre delle autorizzazioni per `ec2:RunInstances` and `ec2:CreateTags` e i tag devono essere aggiunti al modello di lancio.

## Utilizzo di gruppi di sicurezza personalizzati
<a name="launch-template-security-groups"></a>

É possibile utilizzare un modello di avvio per specificare i [gruppi di sicurezza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) Amazon EC2 da applicare alle istanze del gruppo di nodi. Questo può essere nel parametro gruppi di sicurezza a livello di istanza o come parte dei parametri di configurazione dell'interfaccia di rete. Non è possibile avviare un’istanza da un modello di avvio che specifica sia il livello di istanza sia l’interfaccia di rete dei gruppi di sicurezza. Considerare le seguenti condizioni che si applicano all'utilizzo di gruppi di sicurezza personalizzati con gruppi di nodi gestiti:
+ Quando si utilizza Console di gestione AWS, Amazon EKS consente solo modelli di avvio con una singola specifica di interfaccia di rete.
+ Per impostazione predefinita, Amazon EKS applica il [Gruppo di sicurezza del cluster](sec-group-reqs.md) alle istanze nel gruppo di nodi, per facilitare la comunicazione tra i nodi e il piano di controllo. Se specifichi gruppi di sicurezza personalizzati nel modello di avvio utilizzando entrambe le opzioni menzionate in precedenza, Amazon EKS non aggiunge il gruppo di sicurezza del cluster. Pertanto, è necessario assicurarsi che le regole in entrata e in uscita dei gruppi di sicurezza abilitino la comunicazione con l'endpoint del cluster. Se le regole del gruppo di sicurezza non sono corrette, i nodi (worker) non possono aggiungersi al cluster. Per ulteriori informazioni sulle regole del gruppo di sicurezza, consultare [Visualizzazione dei requisiti relativi al gruppo di sicurezza Amazon EKS per cluster](sec-group-reqs.md).
+ Se è necessario l'accesso SSH alle istanze nel gruppo di nodi, includere un gruppo di sicurezza che consenta tale accesso.

## Dati utente Amazon EC2
<a name="launch-template-user-data"></a>

Il modello di avvio include una sezione per i dati utente personalizzati. Puoi specificare le impostazioni di configurazione per il tuo gruppo di nodi in questa sezione senza creare manualmente singole impostazioni personalizzate AMIs. Per ulteriori informazioni sulle impostazioni disponibili per Bottlerocket, consulta [Using user data on](https://github.com/bottlerocket-os/bottlerocket#using-user-data). GitHub

É possibile fornire i dati utente Amazon EC2 nel tuo modello di avvio utilizzando `cloud-init` durante l'avvio delle istanze. Per ulteriori informazioni, consultare la documentazione [cloud-init](https://cloudinit.readthedocs.io/en/latest/index.html). I dati utente possono essere utilizzati per eseguire operazioni di configurazione comuni. Sono comprese le seguenti opzioni:
+  [Inclusione di utenti o gruppi.](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#including-users-and-groups) 
+  [Installazione di pacchetti](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#install-arbitrary-packages) 

I dati utente di Amazon EC2 nei modelli di avvio utilizzati con gruppi di nodi gestiti devono essere nel formato di archivio [multiparte MIME per Amazon Linux AMIs e nel formato](https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive) TOML per Bottlerocket. AMIs Questo perché i dati utente vengono uniti con i dati utente Amazon EKS necessari ai nodi per aderire al cluster. Non specificare alcun comando nei dati utente che avviano o modificano `kubelet`. Questa operazione viene eseguita come parte dei dati utente uniti da Amazon EKS. Certi parametri `kubelet`, come l'impostazione delle etichette sui nodi, possono essere configurati direttamente tramite l'API dei gruppi di nodi gestiti.

**Nota**  
Per ulteriori informazioni sulle personalizzazioni `kubelet` avanzate, tra cui l'avvio manuale o il passaggio a parametri di configurazione personalizzati, vedere [Specifica di un'AMI](#launch-template-custom-ami). Amazon EKS non unisce i dati utente se un ID AMI viene specificato in un modello di avvio.

I seguenti dettagli forniscono ulteriori informazioni sulla sezione dei dati utente.

 **Dati utente di Amazon Linux 2**   
È possibile unire più blocchi di dati utente in un unico blocco, detto file MIME in più parti. Ad esempio, è possibile combinare un hook di avvio del cloud per la configurazione del daemon Docker con uno script di shell dei dati utente che installa un pacchetto personalizzato. Un file MIME in più parti è composto dai seguenti elementi:  
+ Il tipo di contenuto e la dichiarazione di delimitazione della parte: `Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="` 
+ La dichiarazione della versione MIME: `MIME-Version: 1.0` 
+ Uno o più blocchi di dati utente, che contengono i seguenti elementi:
  + La delimitazione di apertura, che indica l'inizio di un blocco di dati utente: `--==MYBOUNDARY==` 
  + La dichiarazione del tipo di contenuto per il blocco: `Content-Type: text/cloud-config; charset="us-ascii"`. Per ulteriori informazioni sui tipi di contenuto, consultare la documentazione di [cloud-init](https://cloudinit.readthedocs.io/en/latest/topics/format.html).
  + Il contenuto dei dati utente, ad esempio un elenco di comandi shell o direttive `cloud-init`.
  + La delimitazione di chiusura, che indica la fine del file MIME in più parti: `--==MYBOUNDARY==--` 

  Di seguito è riportato un esempio di un file in più parti MIME che è possibile utilizzare per crearne uno.

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
echo "Running custom user data script"

--==MYBOUNDARY==--
```

 **Dati utente di Amazon Linux 2023**   
Amazon Linux 2023 (AL2023) introduce un nuovo processo di inizializzazione dei nodi `nodeadm` che utilizza uno schema di configurazione YAML. Se utilizzi gruppi di nodi autogestiti o un’AMI con un modello di avvio, ora dovrai fornire esplicitamente metadati del cluster aggiuntivi quando si crea un nuovo gruppo di nodi. Un [esempio](https://awslabs.github.io/amazon-eks-ami/nodeadm/) dei parametri minimi richiesti è come segue, dove ora `apiServerEndpoint`, `certificateAuthority` e il servizio `cidr` sono richiesti:  

```
---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
```
In genere questa configurazione è impostata nei dati utente, così com’è o incorporata in un documento MIME composto da più parti:  

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig spec: [...]

--BOUNDARY--
```
Nel AL2, i metadati di questi parametri sono stati scoperti dalla chiamata `DescribeCluster` API di Amazon EKS. Nel frattempo AL2023, questo comportamento è cambiato poiché la chiamata API aggiuntiva rischia di rallentare durante l'up-up di nodi su larga scala. Questa modifica non ha effetto su di te se utilizzi gruppi di nodi gestiti senza un modello di avvio o se utilizzi Karpenter. Per ulteriori informazioni su `certificateAuthority` e sul servizio `cidr`, consulta [https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html) nel *Riferimento di API Amazon EKS*.  
Ecco un esempio completo di dati AL2023 utente che combina uno script di shell per personalizzare il nodo (come l'installazione di pacchetti o la prememorizzazione nella cache delle immagini dei contenitori) con la configurazione richiesta. `nodeadm` Questo esempio mostra personalizzazioni comuni tra cui: \$1 Installazione di pacchetti di sistema aggiuntivi \$1 Pre-memorizzazione nella cache delle immagini dei container per migliorare il tempo di avvio del pod \$1 Impostazione della configurazione del proxy HTTP \$1 Configurazione dei flag `kubelet` per l’etichettatura dei nodi  

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset

# Install additional packages
yum install -y htop jq iptables-services

# Pre-cache commonly used container images
nohup docker pull public.ecr.aws/eks-distro/kubernetes/pause:3.2 &

# Configure HTTP proxy if needed
cat > /etc/profile.d/http-proxy.sh << 'EOF'
export HTTP_PROXY="http://proxy.example.com:3128"
export HTTPS_PROXY="http://proxy.example.com:3128"
export NO_PROXY="localhost,127.0.0.1,169.254.169.254,.internal"
EOF

--BOUNDARY
Content-Type: application/node.eks.aws

apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
  kubelet:
    config:
      clusterDNS:
      - 10.100.0.10
    flags:
    - --node-labels=app=my-app,environment=production

--BOUNDARY--
```

 **Dati utente Bottlerocket**   
I dati utente delle strutture Bottlerocket nel formato TOML. È possibile fornire i dati utente da unire con i dati utente forniti da Amazon EKS. Ad esempio, è possibile fornire ulteriori impostazioni `kubelet`.  

```
[settings.kubernetes.system-reserved]
cpu = "10m"
memory = "100Mi"
ephemeral-storage= "1Gi"
```
Per ulteriori informazioni sulle impostazioni supportate, consultare la [documentazione Bottlerocket](https://github.com/bottlerocket-os/bottlerocket). È possibile configurare etichette di nodi e [taint](node-taints-managed-node-groups.md) nei dati utente. Consigliamo, tuttavia, di configurarle all'interno del gruppo di nodi. In questo caso, Amazon EKS applica queste configurazioni.  
Quando i dati utente sono uniti, la formattazione non è mantenuta, ma il contenuto rimane invariato. La configurazione fornita nei dati utente sostituisce tutte le impostazioni configurate da Amazon EKS. Quindi, se imposti `settings.kubernetes.max-pods` o `settings.kubernetes.cluster-dns-ip`, questi valori nei dati utente sono applicati ai nodi.  
Amazon EKS non supporta tutti i TOML validi. Di seguito è riportato un elenco di formati noti non supportati:  
+ Quote all'interno delle chiavi stimate: `'quoted "value"' = "value"` 
+ Quote evase nei valori: `str = "I’m a string. \"You can quote me\""` 
+ Galleggianti e numeri interi misti: `numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]` 
+ Tipi misti nelle matrici: `contributors = ["[foo@example.com](mailto:foo@example.com)", { name = "Baz", email = "[baz@example.com](mailto:baz@example.com)" }]` 
+ Intestazioni tra parentesi con chiavi stimate: `[foo."bar.baz"]` 

 **Dati utente Windows**   
I dati utente di Windows utilizzano i comandi. PowerShell Quando crei un gruppo di nodi gestiti, i dati utente personalizzati si combinano con i dati utente gestiti da Amazon EKS. PowerShell I tuoi comandi vengono prima, seguiti dai comandi gestiti per i dati utente, il tutto all'interno di un unico `<powershell></powershell>` tag.  
Durante la creazione di gruppi di nodi Windows, Amazon EKS aggiorna il file `aws-auth` `ConfigMap` per consentire ai nodi basati su Linux di unirsi al cluster. Il servizio non configura automaticamente le autorizzazioni per Windows AMIs. Se utilizzi i nodi Windows, dovrai gestire l’accesso tramite l’API della voce di accesso o aggiornando direttamente `aws-auth` `ConfigMap`. Per ulteriori informazioni, consulta [Implementazione dei nodi Windows su cluster EKS](windows-support.md).
Quando non è specificato alcun ID AMI nel modello di avvio, nei dati utente non utilizzare lo script bootstrap di Amazon EKS per Windows per configurare Amazon EKS.
Di seguito sono riportati dati utente di esempio.  

```
<powershell>
Write-Host "Running custom user data script"
</powershell>
```

## Specifica di un'AMI
<a name="launch-template-custom-ami"></a>

Se si dispone di uno dei seguenti requisiti, specificare un ID AMI nel campo `ImageId` del modello di avvio. Selezionare il requisito di cui si dispone per ulteriori informazioni.

### Fornisci i dati utente per passare argomenti al `bootstrap.sh` file incluso in un' Linux/Bottlerocket AMI ottimizzata per Amazon EKS
<a name="mng-specify-eks-ami"></a>

Il termine "bootstrapping" indica l'aggiunta di comandi che possono essere eseguiti all'avvio di un'istanza. Ad esempio, il bootstrap consente di utilizzare argomenti [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) aggiuntivi. È possibile passare gli argomenti allo script `bootstrap.sh` utilizzando `eksctl` senza specificare un modello di avvio. Oppure è possibile farlo specificando le informazioni nella sezione dati utente di un modello di avvio.

 **eksctl senza specificare un modello di avvio**   
Crea un file denominato *my-nodegroup.yaml* con i seguenti contenuti. Sostituisci ogni *example value* con i valori in tuo possesso. Gli argomenti `--apiserver-endpoint`, `--b64-cluster-ca` e `--dns-cluster-ip` sono facoltativi, ma grazie alla loro definizione lo script `bootstrap.sh` può evitare di effettuare una chiamata a `describeCluster`. Ciò è utile nelle configurazioni di cluster privati o nei cluster in cui si effettuano dimensionamenti frequenti dei nodi. Per ulteriori informazioni sullo `bootstrap.sh` script, consulta il file [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) su GitHub.  
+ L'unico argomento richiesto è il nome del cluster (*my-cluster*).
+ Per recuperare l’ID di un’AMI ottimizzata per `ami-1234567890abcdef0 `, consulta le sezioni seguenti:
  +  [Recupera le AMI Amazon Linux consigliate IDs](retrieve-ami-id.md) 
  +  [Recupera l'AMI Bottlerocket consigliata IDs](retrieve-ami-id-bottlerocket.md) 
  +  [Recupera l'AMI Microsoft Windows consigliata IDs](retrieve-windows-ami-id.md) 
+ Per recuperare il valore *certificate-authority* per il cluster, esegui il comando seguente.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Per recuperare il valore *api-server-endpoint* per il cluster, esegui il comando seguente.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ Il valore per `--dns-cluster-ip` è il tuo servizio CIDR con `.10` alla fine. Per recuperare il valore *service-cidr* per il cluster, esegui il comando seguente. Ad esempio, se il valore restituito è `ipv4 10.100.0.0/16`, il tuo valore è *10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Questo esempio fornisce un argomento `kubelet` per impostare un valore `max-pods` personalizzato utilizzando lo script `bootstrap.sh` incluso nell'AMI ottimizzata per Amazon EKS. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura. Per assistenza nella scelta di *my-max-pods-value*, consulta . Per ulteriori informazioni su come `maxPods` viene determinato quando si utilizzano i gruppi di nodi gestiti, vedere[Come viene determinato MaxPods](choosing-instance-type.md#max-pods-precedence).

  ```
  ---
  apiVersion: eksctl.io/v1alpha5
  kind: ClusterConfig
  
  metadata:
    name: my-cluster
    region: region-code
  
  managedNodeGroups:
    - name: my-nodegroup
      ami: ami-1234567890abcdef0
      instanceType: m5.large
      privateNetworking: true
      disableIMDSv1: true
      labels: { x86-al2-specified-mng }
      overrideBootstrapCommand: |
        #!/bin/bash
        /etc/eks/bootstrap.sh my-cluster \
          --b64-cluster-ca certificate-authority \
          --apiserver-endpoint api-server-endpoint \
          --dns-cluster-ip service-cidr.10 \
          --kubelet-extra-args '--max-pods=my-max-pods-value' \
          --use-max-pods false
  ```

  Per ogni opzione disponibile per il file `eksctl` `config`, consulta [Schema del file config](https://eksctl.io/usage/schema/) nella documentazione su `eksctl`. L'utility `eksctl` crea autonomamente un modello di avvio e popola i dati utente con i dati forniti nel file `config`.

  Crea un gruppo di nodi con il comando seguente.

  ```
  eksctl create nodegroup --config-file=my-nodegroup.yaml
  ```

 **Dati utente in un modello di avvio**   
Specifica le seguenti informazioni nella sezione dati utente del modello di avvio. Sostituisci ogni *example value* con i valori in tuo possesso. Gli argomenti `--apiserver-endpoint`, `--b64-cluster-ca` e `--dns-cluster-ip` sono facoltativi, ma grazie alla loro definizione lo script `bootstrap.sh` può evitare di effettuare una chiamata a `describeCluster`. Ciò è utile nelle configurazioni di cluster privati o nei cluster in cui si effettuano dimensionamenti frequenti dei nodi. Per ulteriori informazioni sullo `bootstrap.sh` script, vedere il file [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) su GitHub.  
+ L'unico argomento richiesto è il nome del cluster (*my-cluster*).
+ Per recuperare il valore *certificate-authority* per il cluster, esegui il comando seguente.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Per recuperare il valore *api-server-endpoint* per il cluster, esegui il comando seguente.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ Il valore per `--dns-cluster-ip` è il tuo servizio CIDR con `.10` alla fine. Per recuperare il valore *service-cidr* per il cluster, esegui il comando seguente. Ad esempio, se il valore restituito è `ipv4 10.100.0.0/16`, il tuo valore è *10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Questo esempio fornisce un argomento `kubelet` per impostare un valore `max-pods` personalizzato utilizzando lo script `bootstrap.sh` incluso nell'AMI ottimizzata per Amazon EKS. Per assistenza nella scelta di *my-max-pods-value*, consulta . Per ulteriori informazioni su come `maxPods` viene determinato quando si utilizzano i gruppi di nodi gestiti, vedere[Come viene determinato MaxPods](choosing-instance-type.md#max-pods-precedence).

  ```
  MIME-Version: 1.0
  Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
  
  --==MYBOUNDARY==
  Content-Type: text/x-shellscript; charset="us-ascii"
  
  #!/bin/bash
  set -ex
  /etc/eks/bootstrap.sh my-cluster \
    --b64-cluster-ca certificate-authority \
    --apiserver-endpoint api-server-endpoint \
    --dns-cluster-ip service-cidr.10 \
    --kubelet-extra-args '--max-pods=my-max-pods-value' \
    --use-max-pods false
  
  --==MYBOUNDARY==--
  ```

### Fornire i dati dell’utente per passare gli argomenti al file `Start-EKSBootstrap.ps1` incluso nell’AMI Windows ottimizzata per Amazon EKS
<a name="mng-specify-eks-ami-windows"></a>

Il termine "bootstrapping" indica l'aggiunta di comandi che possono essere eseguiti all'avvio di un'istanza. È possibile passare gli argomenti allo script `Start-EKSBootstrap.ps1` utilizzando `eksctl` senza specificare un modello di avvio. Oppure è possibile farlo specificando le informazioni nella sezione dati utente di un modello di avvio.

Per specificare un ID AMI Windows personalizzato, fai le seguenti considerazioni:
+ Devi utilizzare un modello di avvio e fornire i comandi bootstrap richiesti nella sezione dei dati utente. Per recuperare l'ID Windows desiderato, puoi utilizzare la tabella in [Crea nodi con Windows AMIs ottimizzato](eks-optimized-windows-ami.md).
+ Esistono vari limiti e condizioni. Ad esempio, è necessario aggiungere `eks:kube-proxy-windows` alla mappa di configurazione di AWS IAM Authenticator. Per ulteriori informazioni, consulta [Limiti e condizioni quando si specifica un ID AMI](#mng-ami-id-conditions).

Specifica le seguenti informazioni nella sezione dati utente del modello di avvio. Sostituisci ogni *example value* con i valori in tuo possesso. Gli argomenti `-APIServerEndpoint`, `-Base64ClusterCA` e `-DNSClusterIP` sono facoltativi, ma grazie alla loro definizione lo script `Start-EKSBootstrap.ps1` può evitare di effettuare una chiamata a `describeCluster`.
+ L'unico argomento richiesto è il nome del cluster (*my-cluster*).
+ Per recuperare il valore *certificate-authority* per il cluster, esegui il comando seguente.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Per recuperare il valore *api-server-endpoint* per il cluster, esegui il comando seguente.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ Il valore per `--dns-cluster-ip` è il tuo servizio CIDR con `.10` alla fine. Per recuperare il valore *service-cidr* per il cluster, esegui il comando seguente. Ad esempio, se il valore restituito è `ipv4 10.100.0.0/16`, il tuo valore è *10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Per ulteriori argomenti, consulta.[Parametri di configurazione dello script di bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters).
**Nota**  
Se utilizzi il servizio personalizzato CIDR, devi specificarlo utilizzando il parametro `-ServiceCIDR`. In caso contrario, la risoluzione DNS per i pod nel cluster avrà esito negativo.

```
<powershell>
[string]$EKSBootstrapScriptFile = "$env:ProgramFiles\Amazon\EKS\Start-EKSBootstrap.ps1"
& $EKSBootstrapScriptFile -EKSClusterName my-cluster `
	 -Base64ClusterCA certificate-authority `
	 -APIServerEndpoint api-server-endpoint `
	 -DNSClusterIP service-cidr.10
</powershell>
```

### Eseguire un'AMI personalizzata a causa di specifici requisiti di sicurezza, conformità o policy interne
<a name="mng-specify-custom-ami"></a>

Per ulteriori informazioni, consulta [Amazon Machine Image (AMI)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) nella *Guida per l’utente di Amazon EC2*. La specifica di compilazione AMI Amazon EKS contiene risorse e script di configurazione per la creazione di un’AMI Amazon EKS personalizzata basata su Amazon Linux. Per ulteriori informazioni, consulta [Specifica della build AMI di Amazon EKS](https://github.com/awslabs/amazon-eks-ami/) su GitHub. Per creare AMIs installazioni personalizzate con altri sistemi operativi, consulta [Amazon EKS Sample Custom AMIs](https://github.com/aws-samples/amazon-eks-custom-amis) on GitHub.

Non è possibile utilizzare riferimenti dinamici ai parametri per AMI IDs nei modelli di avvio utilizzati con gruppi di nodi gestiti.

**Importante**  
Quando si specifica un'AMI, Amazon EKS non convalida la versione di Kubernetes incorporata nell'AMI rispetto alla versione del piano di controllo del cluster. Sei responsabile di garantire che la versione Kubernetes della tua AMI personalizzata sia conforme alla politica di modifica della versione di [Kubernetes](https://kubernetes.io/releases/version-skew-policy):  
La `kubelet` versione sui tuoi nodi non deve essere più recente della versione del cluster
La `kubelet` versione sui tuoi nodi deve essere uguale o superiore a 3 versioni secondarie rispetto alla versione del cluster (per la versione Kubernetes `1.28` o successiva) o fino a 2 versioni minori rispetto alla versione del cluster (per la versione Kubernetes o precedente) `1.27`  
La creazione di gruppi di nodi gestiti con violazioni dell'asimmetria delle versioni può comportare:
I nodi non riescono a unirsi al cluster
Comportamento indefinito o incompatibilità delle API
Instabilità del cluster o errori del carico di lavoro
Quando si specifica una AMI, Amazon EKS non unisce alcun dato utente. È l’utente, piuttosto, ad essere responsabile della fornitura dei comandi `bootstrap` richiesti per unire i nodi al cluster. Se i nodi non riescono a unirsi al cluster, le operazioni `CreateNodegroup` e `UpdateNodegroupVersion` di Amazon EKS non vengono eseguite con successo.

## Limiti e condizioni quando si specifica un ID AMI
<a name="mng-ami-id-conditions"></a>

Di seguito sono riportati i limiti e le condizioni per la specifica di un ID AMI con gruppi di nodi gestiti:
+ È necessario creare un nuovo gruppo di nodi per passare dalla specifica o meno di un ID AMI in un modello di avvio.
+ Non riceverai una notifica nella console quando è disponibile una versione AMI più recente. Per aggiornare il gruppo di nodi a una versione AMI più recente, devi creare una nuova versione del modello di avvio con un ID AMI aggiornato. Quindi, è necessario aggiornare il gruppo di nodi con la nuova versione del modello di avvio.
+ I seguenti campi non possono essere impostati nell’API se si specifica un ID AMI:
  +  `amiType` 
  +  `releaseVersion` 
  +  `version` 
+ Se si specifica un ID AMI, qualsiasi set di `taints` nell'API viene applicato in modo asincrono. Per applicare i taint prima che un nodo si unisca al cluster, è necessario passare i taint a `kubelet` utilizzando il flag della riga di comando `--register-with-taints`. Per ulteriori informazioni, consulta [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) nella documentazione Kubernetes.
+ Quando specifichi un ID AMI personalizzato per i gruppi di nodi gestiti da Windows, aggiungilo `eks:kube-proxy-windows` alla mappa di configurazione di AWS IAM Authenticator. Questa API è necessaria per il funzionamento di DNS.

  1. Apri la mappa di configurazione di AWS IAM Authenticator per modificarla.

     ```
     kubectl edit -n kube-system cm aws-auth
     ```

  1. Aggiungi questa voce all’elenco `groups` sotto ogni `rolearn` associato ai nodi Windows. [La tua mappa di configurazione dovrebbe essere simile a aws-auth-cm-windows .yaml.](https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml)

     ```
     - eks:kube-proxy-windows
     ```

  1. Salva il file ed esci dall’editor di testo.
+ Per ogni AMI che utilizza un modello di avvio personalizzato, l’impostazione predefinita `HttpPutResponseHopLimit` per i gruppi di nodi gestiti è impostata su `2`.

# Eliminare un gruppo di nodi gestito dal cluster
<a name="delete-managed-node-group"></a>

In questo argomento viene descritto come eliminare un gruppo di nodi gestiti Amazon EKS. Quando elimini un gruppo di nodi gestiti, Amazon EKS imposterà su zero la dimensione minima, massima e desiderata del tuo gruppo Auto Scaling. Questo fa sì che il gruppo di nodi venga dimensionato.

Prima che ogni istanza venga terminata, Amazon EKS invia un segnale per drenare quel nodo. Durante il processo di drenaggio, Kubernetes esegue le seguenti operazioni per ogni pod sul nodo: esegue tutti gli hook del `preStop` ciclo di vita configurati, invia `SIGTERM` segnali ai contenitori, quindi attende il corretto spegnimento. `terminationGracePeriodSeconds` Se il nodo non è stato svuotato dopo 5 minuti, Amazon EKS consente ad Auto Scaling di continuare la chiusura forzata dell'istanza. Dopo che tutte le istanze sono state terminate, il gruppo Auto Scaling viene eliminato.

**Importante**  
Se si elimina un gruppo di nodi gestiti che utilizza un ruolo IAM del nodo non impiegato da nessun altro gruppo di nodi gestiti nel cluster, il ruolo viene rimosso dalla `ConfigMap` `aws-auth`. Se i gruppi di nodi autogestiti nel cluster utilizzano lo stesso ruolo IAM del nodo, i nodi autogestiti passeranno allo stato `NotReady`. Inoltre, anche l’operazione del cluster viene interrotta. Per aggiungere una mappatura per il ruolo da utilizzare solo per i gruppi di nodi autogestiti, consultare la pagina [Creare voci di accesso](creating-access-entries.md), se la versione della piattaforma del cluster corrisponde almeno alla versione minima elencata nella sezione dei prerequisiti della pagina [Grant IAM users access to Kubernetes with EKS access entries](access-entries.md). Se la versione della piattaforma è precedente alla versione minima richiesta per le voci di accesso, è possibile aggiungere nuovamente la voce alla `ConfigMap` `aws-auth`. Per ulteriori informazioni, digita `eksctl create iamidentitymapping --help` nel terminale.

È possibile creare un gruppo di nodi gestiti con i seguenti strumenti:
+  [`eksctl`](#eksctl-delete-managed-nodegroup) 
+  [Console di gestione AWS](#console-delete-managed-nodegroup) 
+  [AWS CLI](#awscli-delete-managed-nodegroup) 

## `eksctl`
<a name="eksctl-delete-managed-nodegroup"></a>

 **Eliminare un gruppo di nodi gestiti con `eksctl`** 

Inserire il seguente comando. Sostituisci ogni `<example value>` con i valori in tuo possesso.

```
eksctl delete nodegroup \
  --cluster <my-cluster> \
  --name <my-mng> \
  --region <region-code>
```

Per ulteriori opzioni, consulta [Eliminazione e svuotamento dei gruppi di nodi](https://eksctl.io/usage/nodegroups/#deleting-and-draining-nodegroups) nella documentazione di `eksctl`.

## Console di gestione AWS
<a name="console-delete-managed-nodegroup"></a>

 **Eliminare un gruppo di nodi gestiti con Console di gestione AWS ** 

1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Nella pagina **Cluster**, scegli il cluster che contiene il gruppo di nodi da eliminare.

1. Nella pagina del cluster selezionata, scegli la scheda **Calcolo**.

1. Nella sezione **Gruppi di nodi**, scegliere il gruppo di nodi da eliminare. Scegli **Elimina**.

1. Nella finestra di dialogo di conferma di **Eliminazione del gruppo di nodi**, inserisci il nome del gruppo di nodi. Scegli **Elimina**.

## AWS CLI
<a name="awscli-delete-managed-nodegroup"></a>

 **Eliminare un gruppo di nodi gestito con AWS CLI** 

1. Inserire il seguente comando. Sostituisci ogni `<example value>` con i valori in tuo possesso.

   ```
   aws eks delete-nodegroup \
     --cluster-name <my-cluster> \
     --nodegroup-name <my-mng> \
     --region <region-code>
   ```

1. Se `cli_pager=` è impostato nella configurazione CLI, usa i tasti freccia sulla tastiera per scorrere l'output della risposta. Premere il tasto `q` al termine.

   Per ulteriori opzioni, consultate il ` [delete-nodegroup](https://docs.aws.amazon.com/cli/latest/reference/eks/delete-nodegroup.html) ` comando nella * AWS CLI Command* Reference.

# Gestione autonoma dei nodi con nodi autogestiti
<a name="worker"></a>

Un cluster contiene uno o più nodi Amazon EC2 su cui sono pianificati i pod. I nodi Amazon EKS vengono eseguiti nell'account AWS e si connettono al piano di controllo del cluster tramite l'endpoint del server API del cluster. La loro fatturazione è basata sui prezzi Amazon EC2. Per ulteriori informazioni, consulta [Prezzi di Amazon EC2](https://aws.amazon.com/ec2/pricing/).

Un cluster può contenere diversi gruppi di nodi. Ciascun gruppo di nodi contiene uno o più nodi implementati in un [gruppo Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html). Il tipo di istanza dei nodi all’interno del gruppo può variare, ad esempio quando si utilizza la [selezione del tipo di istanza basata sugli attributi](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) con [Karpenter](https://karpenter.sh/). Tutte le istanze di un gruppo di nodi devono utilizzare il [ruolo IAM del nodo Amazon EKS](create-node-role.md).

Amazon EKS fornisce Amazon Machine Image (AMI) specializzate chiamate AMI ottimizzate per Amazon EKS. Le AMI sono configurate per funzionare con Amazon EKS. I loro componenti includono `containerd`, `kubelet` e l'AWS IAM Authenticator. L’AMI contiene anche uno [script di bootstrap](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) specializzato che consente di individuare e connettersi automaticamente al piano di controllo del cluster.

Se si limita l'accesso all'endpoint pubblico del cluster utilizzando blocchi CIDR, è consigliabile abilitare anche l'accesso agli endpoint privati. In questo modo i nodi possono comunicare con il cluster. Senza l'endpoint privato abilitato, i blocchi CIDR specificati per l'accesso pubblico devono includere le origini di uscita dal VPC. Per ulteriori informazioni, consulta [Endpoint del server API del cluster](cluster-endpoint.md).

Per aggiungere nodi autogestiti al cluster Amazon EKS, consultare gli argomenti che seguono. Se si avviano manualmente i nodi autogestiti, è necessario aggiungere il seguente tag a ciascun nodo, assicurandosi al contempo che `<cluster-name>` corrisponda al cluster. Per ulteriori informazioni, consultare [Aggiunta ed eliminazione di tag in una singola risorsa](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#adding-or-deleting-tags). Se si seguono i passaggi della guida, il tag richiesto viene aggiunto al nodo per conto dell'utente.


| Chiave | Valore | 
| --- | --- | 
|   `kubernetes.io/cluster/<cluster-name>`   |   `owned`   | 

**Importante**  
I tag nel servizio di metadati di istanza (IMDS) di Amazon EC2 non sono compatibili con i nodi EKS. Quando i tag dei metadati delle istanze sono abilitati, è impedito l’uso di barre (“/”) nei valori dei tag. Tale limitazione può causare errori nell’avvio delle istanze, in particolare quando si utilizzano strumenti di gestione dei nodi come Karpenter o un dispositivo di dimensionamento automatico dei cluster, poiché questi servizi si basano solo su tag contenenti barre per una corretta funzionalità.

Per ulteriori informazioni sui nodi da un prospettiva Kubernetes generale, consultare [Nodi](https://kubernetes.io/docs/concepts/architecture/nodes/) nella documentazione Kubernetes.

**Topics**
+ [Crea nodi Amazon Linux autogestiti](launch-workers.md)
+ [Crea nodi autogestiti Bottlerocket](launch-node-bottlerocket.md)
+ [Crea nodi Microsoft Windows autogestiti](launch-windows-workers.md)
+ [Creazione di nodi Ubuntu Linux autogestiti](launch-node-ubuntu.md)
+ [Aggiornamento dei nodi autogestiti per il tuo cluster](update-workers.md)

# Crea nodi Amazon Linux autogestiti
<a name="launch-workers"></a>

In questo argomento viene descritto come avviare gruppi con scalabilità automatica di nodi Linux che si registrano con il cluster Amazon EKS. Dopo che i nodi vengono aggiunti al cluster, puoi implementare applicazioni Kubernetes per gli stessi. Puoi anche avviare nodi Amazon Linux autogestiti con `eksctl` o. Console di gestione AWS Se devi avviare nodi su AWS Outposts, consulta. [Crea nodi Amazon Linux su AWS Outposts](eks-outposts-self-managed-nodes.md)
+ Un cluster Amazon EKS esistente. Per implementarne uno, consulta [Crea un cluster Amazon EKS.](create-cluster.md). Se hai delle sottoreti nella AWS regione in cui hai abilitato AWS Outposts, AWS Wavelength o AWS Local Zones, tali sottoreti non devono essere state passate al momento della creazione del cluster.
+ Un ruolo IAM esistente per i nodi da utilizzare. Per crearne uno, consulta [Ruolo IAM del nodo Amazon EKS](create-node-role.md). Se questo ruolo non prevede nessuna delle policy per VPC CNI, per i pod VPC CNI è necessario il ruolo separato riportato di seguito.
+ (Facoltativo, ma consigliato) Il componente aggiuntivo plug-in CNI di Amazon VPC per Kubernetes configurato con il proprio ruolo IAM a cui è allegata la policy IAM necessaria. Per ulteriori informazioni, consulta [Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA](cni-iam-role.md).
+ Conoscenza delle considerazioni elencate in [Scegli un tipo di istanza di EC2 nodo Amazon ottimale](choosing-instance-type.md). A seconda del tipo di istanza scelto, potrebbero esserci ulteriori prerequisiti per il cluster e il VPC.

È possibile avviare nodi Linux autogestiti con uno dei seguenti modi:
+  [`eksctl`](#eksctl_create_managed_amazon_linux) 
+  [Console di gestione AWS](#console_create_managed_amazon_linux) 

## `eksctl`
<a name="eksctl_create_managed_amazon_linux"></a>

 **Avvia nodi Linux autogestiti utilizzando `eksctl`** 

1. Installa la versione `0.215.0` o successiva dello strumento da riga di `eksctl` comando installato sul tuo dispositivo o. AWS CloudShell Per l’installazione o l’aggiornamento di `eksctl`, consulta la sezione [Installation](https://eksctl.io/installation) nella documentazione di `eksctl`.

1. (Facoltativo) Se la policy IAM gestita **AmazonEKS\$1CNI\$1Policy** è collegata al [ruolo IAM del nodo Amazon EKS](create-node-role.md), ti consigliamo, invece, di assegnarla a un ruolo IAM associato all’account di servizio Kubernetes `aws-node`. Per ulteriori informazioni, consulta [Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA](cni-iam-role.md).

1. Il comando seguente crea un gruppo di nodi in un cluster esistente. Sostituisci *al-nodes* con un nome per il gruppo di nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura. Sostituisci *my-cluster* con il nome del cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può avere una lunghezza superiore a 100 caratteri. Il nome deve essere univoco all'interno AWS della regione e AWS dell'account in cui stai creando il cluster. Sostituisci i *example value* rimanenti con i valori in tuo possesso. Per impostazione predefinita, i nodi vengono creati con la stessa versione Kubernetes del piano di controllo.

   Prima di scegliere un valore per`--node-type`, consulta [Scegli un tipo di istanza Amazon EC2 node ottimale](choosing-instance-type.md).

   Sostituiscilo *my-key* con il nome della tua coppia di EC2 chiavi Amazon o della tua chiave pubblica. Questa chiave viene utilizzata per eseguire il SSH nei nodi dopo il loro avvio. Se non disponi già di una coppia di EC2 chiavi Amazon, puoi crearne una in Console di gestione AWS. Per ulteriori informazioni, consulta le [coppie di EC2 chiavi Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) nella *Amazon EC2 User Guide*.

   Crea il tuo gruppo di nodi con il comando seguente.
**Importante**  
Se desideri distribuire un gruppo di nodi nelle sottoreti AWS Outposts, Wavelength o Local Zone, ci sono altre considerazioni:  
Le sottoreti non devono essere state trasmesse al momento della creazione del cluster.
È necessario creare il gruppo di nodi con un file di configurazione, specificando le sottoreti e ` [volumeType](https://eksctl.io/usage/schema/#nodeGroups-volumeType): gp2`. Per ulteriori informazioni, consulta [Creazione di un gruppo di nodi da un file di configurazione](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) e lo [Schema del file config](https://eksctl.io/usage/schema/) nella documentazione di `eksctl`.

   ```
   eksctl create nodegroup \
     --cluster my-cluster \
     --name al-nodes \
     --node-type t3.medium \
     --nodes 3 \
     --nodes-min 1 \
     --nodes-max 4 \
     --ssh-access \
     --managed=false \
     --ssh-public-key my-key
   ```

   Per implementare un gruppo di nodi che:
   + può assegnare un numero significativamente più elevato di indirizzi IP a pod rispetto alla configurazione predefinita, consulta [Assegnazione di più indirizzi IP ai nodi Amazon EKS con prefissi](cni-increase-ip-addresses.md).
   + può assegnare gli indirizzi `IPv4` a pod da un altro intervallo CIDR rispetto a quello dell’istanza, consulta [Implementazione dei pod in sottoreti alternative con reti personalizzate](cni-custom-network.md).
   + può assegnare gli indirizzi `IPv6` a pod e servizi, consulta [Scopri IPv6 gli indirizzi di cluster, pod e servizi](cni-ipv6.md).
   + non dispone di accesso a Internet in uscita, consulta [Implementazione di cluster privati con accesso limitato a Internet](private-clusters.md).

     Per un elenco completo di tutte le opzioni e i valori predefiniti disponibili, immetti il comando seguente.

     ```
     eksctl create nodegroup --help
     ```

     Se i nodi di lavoro non riescono a unirsi al cluster, consulta [Impossibile aggiungere i nodi al cluster](troubleshooting.md#worker-node-fail) nel capitolo sulla risoluzione dei problemi.

     Di seguito viene riportato un output di esempio. Durante la creazione dei nodi vengono generate diverse righe. Una delle ultime righe di output è simile alla seguente riga di esempio.

     ```
     [✔]  created 1 nodegroup(s) in cluster "my-cluster"
     ```

1. (Facoltativo) implementare [un’applicazione di esempio](sample-deployment.md) per testare il cluster e i nodi Linux.

1. Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
   + Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
   + Nessun pod nel cluster richiede l'accesso al servizio di metadati delle EC2 istanze Amazon (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

   Per ulteriori informazioni, consulta [Limitazione dell’accesso al profilo dell’istanza assegnato al nodo worker](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

## Console di gestione AWS
<a name="console_create_managed_amazon_linux"></a>

 **Passaggio 1: avvia i nodi Linux autogestiti utilizzando la Console di gestione AWS ** 

1. Scarica l'ultima versione del modello. AWS CloudFormation 

   ```
   curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2025-11-26/amazon-eks-nodegroup.yaml
   ```

1. Attendi che lo stato del cluster risulti `ACTIVE`. Se vengono avviati prima che il cluster sia attivo, i nodi non riescono a effettuare la registrazione al cluster e sarà necessario riavviarli.

1. Apri la [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation/).

1. Scegli **Crea stack** e quindi seleziona **Con nuove risorse (standard)**.

1. In **Specifica modello**, seleziona **Carica un file di modello** e **Scegli file**.

1. Seleziona il file `amazon-eks-nodegroup.yaml` scaricato.

1. Seleziona **Successivo**.

1. Nella pagina **Specifica i dettagli dello stack**, immetti i parametri seguenti e scegli **Successivo**:
   +  **Nome dello stack**: scegli un nome per lo stack. AWS CloudFormation Ad esempio, è possibile chiamarlo *my-cluster-nodes*. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può avere una lunghezza superiore a 100 caratteri. Il nome deve essere univoco all'interno della AWS regione e AWS dell'account in cui stai creando il cluster.
   +  **ClusterName**: inserisci il nome che hai usato per creare il cluster Amazon EKS. Questo nome deve corrispondere a quello del cluster o i nodi non verranno aggiunti al cluster.
   +  **ClusterControlPlaneSecurityGroup**: scegli il **SecurityGroups**valore dall' AWS CloudFormation output che hai generato quando hai creato il tuo [VPC](creating-a-vpc.md).

     Nella procedura seguente viene illustrata un’operazione per recuperare il gruppo applicabile.

     1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

     1. Scegli il nome del cluster.

     1. Scegli la scheda **Reti**.

     1. Utilizza il valore dei **gruppi di sicurezza aggiuntivi** come riferimento quando selezioni dall'**ClusterControlPlaneSecurityGroup**elenco a discesa.
   +  **ApiServerEndpoint**: Inserite l'API Server Endpoint per il vostro cluster EKS. È possibile trovarlo nella sezione Dettagli della console EKS Cluster
   +  **CertificateAuthorityData**: Immettete i dati dell'Autorità di certificazione codificati in base 64, disponibili anche nella sezione Dettagli della console EKS Cluster.
   +  **ServiceCidr**: Inserisci l'intervallo CIDR utilizzato per allocare gli indirizzi IP ai servizi Kubernetes all'interno del cluster. Si trova nella scheda di rete della console del cluster EKS.
   +  **AuthenticationMode**: Seleziona la modalità di autenticazione in uso nel cluster EKS esaminando la scheda di accesso all'interno della console del cluster EKS.
   +  **NodeGroupName**: Inserisci un nome per il tuo gruppo di nodi. Questo nome può essere utilizzato in seguito per identificare il gruppo di nodi con dimensionamento automatico creato per i tuoi nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura.
   +  **NodeAutoScalingGroupMinSize**: Inserisci il numero minimo di nodi su cui il gruppo Auto Scaling del nodo può scalare.
   +  **NodeAutoScalingGroupDesiredCapacity**: Inserisci il numero di nodi desiderato su cui scalare quando viene creato lo stack.
   +  **NodeAutoScalingGroupMaxSize**: Inserisci il numero massimo di nodi su cui il gruppo Auto Scaling del nodo può scalare orizzontalmente.
   +  **NodeInstanceType**: scegli un tipo di istanza per i tuoi nodi. Per ulteriori informazioni, consulta [Scelta di una tipologia di istanza di nodo Amazon EC2 ottimale](choosing-instance-type.md).
   +  **NodeImageIdSSMParam**: precompilato con il parametro Amazon EC2 Systems Manager di una recente AMI Amazon Linux 2023 ottimizzata per Amazon EKS per una versione variabile di Kubernetes. Se si desidera utilizzare una diversa versione secondaria di Kubernetes supportata da Amazon EKS, è possibile sostituire *1.XX* con una [versione supportata](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) differente. Si consiglia di specificare la stessa versione Kubernetes del cluster.

     Puoi anche sostituirlo *amazon-linux-2023* con un altro tipo di AMI. Per ulteriori informazioni, consulta [Recupera le AMI Amazon Linux consigliate IDs](retrieve-ami-id.md).
**Nota**  
I nodi Amazon EKS AMIs sono basati su Amazon Linux. Puoi tenere traccia degli eventi di sicurezza o privacy per Amazon Linux 2023 nell'[Amazon Linux Security Center](https://alas.aws.amazon.com/alas2023.html) o abbonarti al [feed RSS](https://alas.aws.amazon.com/AL2023/alas.rss) associato. Gli eventi di sicurezza e privacy includono una panoramica del problema, quali sono i pacchetti interessati e come aggiornare le istanze per risolvere il problema.
   +  **NodeImageId**: (Facoltativo) Se utilizzi un'AMI personalizzata (anziché un'AMI ottimizzata per Amazon EKS), inserisci un ID AMI del nodo per la tua AWS regione. Se specifichi un valore qui, questo sostituisce tutti i valori nel **NodeImageIdSSMParam**campo.
   +  **NodeVolumeSize**: Specificate la dimensione del volume root per i nodi, in GiB.
   +  **NodeVolumeType**: Specificate un tipo di volume root per i nodi.
   +  **KeyName**: inserisci il nome di una coppia di chiavi Amazon EC2 SSH che puoi usare per connetterti tramite SSH ai tuoi nodi dopo il loro avvio. Se non disponi già di una coppia di EC2 chiavi Amazon, puoi crearne una in Console di gestione AWS. Per ulteriori informazioni, consulta le [coppie di EC2 chiavi Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) nella *Amazon EC2 User Guide*.
   +  **VpcId**: inserisci l'ID per il [VPC](creating-a-vpc.md) che hai creato.
   +  **Sottoreti**: scegli le sottoreti create per il VPC. Se hai creato il VPC utilizzando i passaggi descritti in [Create an Amazon VPC for your Amazon EKS cluster](creating-a-vpc.md), specifica solo le sottoreti private all’interno del VPC per avviare i nodi. È possibile visualizzare le sottoreti private aprendo ogni collegamento relativo alla sottorete dalla scheda **Reti** del cluster.
**Importante**  
Se una qualsiasi delle sottoreti è pubblica, devi abilitare l’impostazione di assegnazione automatica degli indirizzi IP pubblici. Se l'impostazione non è abilitata per la sottorete pubblica, a tutti i nodi distribuiti in quella sottorete pubblica non verrà assegnato un indirizzo IP pubblico e non saranno in grado di comunicare con il cluster o altri servizi. AWS Se la sottorete è stata distribuita prima del 26 marzo 2020 utilizzando uno dei [modelli AWS CloudFormation VPC di Amazon EKS](creating-a-vpc.md) o utilizzando`eksctl`, l'assegnazione automatica degli indirizzi IP pubblici è disabilitata per le sottoreti pubbliche. Per informazioni su come abilitare l'assegnazione di indirizzi IP pubblici per una sottorete, consulta [Modifica](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) dell'attributo di indirizzamento pubblico per la sottorete. IPv4 Se il nodo viene distribuito in una sottorete privata, è in grado di comunicare con il cluster e altri AWS servizi tramite un gateway NAT.
Se le sottoreti non hanno accesso a Internet, leggi con attenzione le considerazioni e i passaggi aggiuntivi descritti in [Deploy private clusters with limited internet access](private-clusters.md).
Se si AWS selezionano le sottoreti Outposts, Wavelength o Local Zone, le sottoreti non devono essere state passate al momento della creazione del cluster.

1. Seleziona le opzioni desiderate nella pagina **Configura opzioni dello stack**, quindi scegli **Next** (Avanti).

1. Seleziona la casella di controllo a sinistra di **Riconosco** che potrebbe creare risorse IAM. AWS CloudFormation , quindi scegli **Create stack**.

1. Al termine della creazione dello stack, selezionalo nella console e scegli **Output**. Se utilizzi le `EKS API` o le modalità di `EKS API and ConfigMap` autenticazione, questo è l'ultimo passaggio.

1. Se stai usando la modalità di `ConfigMap` autenticazione, registra il **NodeInstanceRole**per il gruppo di nodi che è stato creato.

 **Fase 2: abilitazione dell’aggiunta di nodi al cluster** 

**Nota**  
I due passaggi seguenti sono necessari solo se si utilizza la modalità di autenticazione Configmap all'interno del cluster EKS. Inoltre, se hai avviato nodi all'interno di un VPC privato senza accesso a Internet in uscita, assicurati di consentire ai nodi di unirsi al cluster dall'interno del VPC.

1. Verifica se disponi già di una `ConfigMap` per `aws-auth`.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Se ti viene mostrata una `ConfigMap` per `aws-auth`, aggiornala se necessario.

   1. Apri `ConfigMap` per la modifica.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Aggiungi una nuova voce `mapRoles`, se necessario. Impostate il `rolearn` valore sul **NodeInstanceRole**valore registrato nella procedura precedente.

      ```
      [...]
      data:
        mapRoles: |
          - rolearn: <ARN of instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
      [...]
      ```

   1. Salva il file ed esci dall’editor di testo.

1. Se hai ricevuto un messaggio di errore che indica "`Error from server (NotFound): configmaps "aws-auth" not found`", applica lo `ConfigMap` di stock.

   1. Scarica la mappa di configurazione.

      ```
      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
      ```

   1. Nel `aws-auth-cm.yaml` file, impostate il `rolearn` **NodeInstanceRole**valore sul valore registrato nella procedura precedente. Per eseguire questa operazione, utilizza un editor di testo o sostituisci *my-node-instance-role* eseguendo il comando seguente:

      ```
      sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
      ```

   1. Applica la configurazione. L’esecuzione di questo comando potrebbe richiedere alcuni minuti.

      ```
      kubectl apply -f aws-auth-cm.yaml
      ```

1. Guarda lo stato dei nodi e attendi che raggiungano lo stato `Ready`.

   ```
   kubectl get nodes --watch
   ```

   Inserisci `Ctrl`\$1`C` per tornare a un prompt dello shell (interprete di comandi).
**Nota**  
Se ricevi qualsiasi altro errore di tipo di risorsa o autorizzazione, consulta la sezione [Accesso negato o non autorizzato (`kubectl`)](troubleshooting.md#unauthorized) nell’argomento relativo alla risoluzione dei problemi.

   Se i nodi di lavoro non riescono a unirsi al cluster, consulta [Impossibile aggiungere i nodi al cluster](troubleshooting.md#worker-node-fail) nel capitolo sulla risoluzione dei problemi.

1. (Solo nodi GPU) Se hai scelto un tipo di istanza GPU e l'AMI accelerata ottimizzata per Amazon EKS, devi applicare [il plug-in del dispositivo NVIDIA per](https://github.com/NVIDIA/k8s-device-plugin) Kubernetes sul tuo cluster. DaemonSet Sostituiscilo *vX.X.X* con la versione [s-device-pluginNVIDIA/K8](https://github.com/NVIDIA/k8s-device-plugin/releases) desiderata prima di eseguire il comando seguente.

   ```
   kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
   ```

 **Fase 3: Azioni aggiuntive** 

1. (Facoltativo) implementare [un’applicazione di esempio](sample-deployment.md) per testare il cluster e i nodi Linux.

1. (Facoltativo) Se la policy IAM gestita da **Amazoneks\$1CNI\$1Policy** (se hai `IPv4` un cluster) o la (che hai [creato tu stesso](cni-iam-role.md#cni-iam-role-create-ipv6-policy) se hai un `IPv6` cluster) è collegata al ruolo IAM *AmazonEKS\$1CNI\$1IPv6\$1Policy* del [nodo Amazon EKS, ti consigliamo invece di assegnarlo a un ruolo IAM](create-node-role.md) da associare all'account del servizio Kubernetes. `aws-node` Per ulteriori informazioni, consulta [Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA](cni-iam-role.md).

1. Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
   + Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
   + Nessun pod nel cluster richiede l'accesso al servizio di metadati delle EC2 istanze Amazon (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

   Per ulteriori informazioni, consulta [Limita l’accesso al profilo dell’istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Crea nodi autogestiti Bottlerocket
<a name="launch-node-bottlerocket"></a>

**Nota**  
I gruppi di nodi gestiti potrebbero offrire alcuni vantaggi per il tuo caso d’uso. Per ulteriori informazioni, consulta [Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti](managed-node-groups.md).

Questo argomento descrive l’avvio di gruppi Auto Scaling di nodi [Bottlerocket](https://aws.amazon.com/bottlerocket/) che si registrano con il cluster Amazon EKS. Bottlerocket è un sistema operativo open source basato su Linux AWS che è possibile utilizzare per eseguire contenitori su macchine virtuali o host bare metal. Dopo che i nodi vengono aggiunti al cluster, puoi implementare applicazioni Kubernetes per gli stessi. Per ulteriori informazioni su Bottlerocket, consulta [Utilizzo di un'AMI Bottlerocket con Amazon EKS attivo](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-EKS.md) GitHub e supporto [AMI personalizzato](https://eksctl.io/usage/custom-ami-support/) nella documentazione. `eksctl`

[Per informazioni sugli aggiornamenti in loco, consulta Bottlerocket Update Operator su.](https://github.com/bottlerocket-os/bottlerocket-update-operator) GitHub

**Importante**  
I nodi di lavoro Amazon EKS sono istanze Amazon EC2 standard e la loro fatturazione è basata sui normali prezzi dell’istanza Amazon EC2. Per ulteriori informazioni, consulta [Prezzi di Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Puoi avviare nodi Bottlerocket nei cluster estesi di Amazon EKS su AWS Outposts, ma non puoi avviarli in cluster locali su Outposts. AWS Per ulteriori informazioni, consulta [Implementazione di Amazon EKS on-premises con AWS Outposts](eks-outposts.md).
Puoi eseguire l’implementazione su istanze Amazon EC2 con processori `x86` o Arm. Tuttavia, non puoi eseguire l’implementazione su istanze con chip Inferentia.
 AWS CloudFormationBottlerocket è compatibile con. Tuttavia, non esiste un CloudFormation modello ufficiale che possa essere copiato per distribuire nodi Bottlerocket per Amazon EKS.
Le immagini Bottlerocket non vengono fornite con un server SSH o una shell. Puoi utilizzare metodi di out-of-band accesso per consentire a SSH di abilitare il contenitore di amministrazione e per eseguire alcuni passaggi di configurazione di bootstrap con i dati utente. Per ulteriori informazioni, consulta le seguenti sezioni nel [README.md di Bottlerocket](https://github.com/bottlerocket-os/bottlerocket) su GitHub:  
 [Esplorazione](https://github.com/bottlerocket-os/bottlerocket#exploration) 
 [Container amministratore](https://github.com/bottlerocket-os/bottlerocket#admin-container) 
 [Impostazioni Kubernetes](https://github.com/bottlerocket-os/bottlerocket#kubernetes-settings) 

Questa procedura richiede `eksctl` versione `0.215.0` o successiva. È possibile verificare la versione con il comando seguente:

```
eksctl version
```

Per istruzioni su come installare o aggiornare `eksctl`, consulta [Installazione](https://eksctl.io/installation) nella documentazione `eksctl`. Nota: questa procedura funziona solo per i cluster creati con `eksctl`.

1. Copia i seguenti contenuti sul dispositivo. Sostituisci *my-cluster* con il nome del cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può avere una lunghezza superiore a 100 caratteri. Il nome deve essere univoco all'interno della AWS regione e AWS dell'account in cui stai creando il cluster. Sostituisci *ng-bottlerocket* con un nome per il gruppo di nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura. Per implementare su istanze Arm, sostituire *m5.large* con un tipo di istanza Arm. Sostituisci *my-ec2-keypair-name* con il nome di una coppia di chiavi SSH Amazon EC2; che puoi utilizzare per connetterti utilizzando SSH nei nodi dopo l'avvio. Se non disponi già di una coppia di chiavi Amazon EC2, puoi crearla nella Console di gestione AWS. Per ulteriori informazioni, consulta la sezione relativa alle [coppie di chiavi Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) nella *Guida per l’utente di Amazon EC2*. Sostituisci tutti i valori esemplificativi rimanenti con i valori in tuo possesso. Dopo aver effettuato le sostituzioni, esegui il comando modificato per creare il file `bottlerocket.yaml`.

   Se specifichi un tipo di istanza Arm Amazon EC2, esamina le considerazioni [in Arm Amazon Linux ottimizzato per Amazon EKS prima della distribuzione AMIs](eks-optimized-ami.md#arm-ami). Per istruzioni su come implementare utilizzando un'AMI personalizzata, consulta [Building Bottlerocket](https://github.com/bottlerocket-os/bottlerocket/blob/develop/BUILDING.md) on e GitHub Custom [AMI support nella documentazione](https://eksctl.io/usage/custom-ami-support/). `eksctl` Per implementare un gruppo di nodi gestito, implementare un’AMI personalizzata utilizzando un modello di avvio. Per ulteriori informazioni, consulta [Personalizzazione dei nodi gestiti con modelli di avvio](launch-templates.md).
**Importante**  
Per distribuire un gruppo di nodi nelle sottoreti AWS Outposts, AWS Wavelength AWS o Local Zone, non passare sottoreti AWS Outposts, AWS Wavelength o Local Zone quando crei il cluster. AWS È necessario specificare le sottoreti nell’esempio seguente. Per ulteriori informazioni, vedere [Creare un gruppo di nodi da un file di configurazione](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) e lo [Schema del file config](https://eksctl.io/usage/schema/) nella documentazione su `eksctl`. *region-code*Sostituiscilo con la regione in cui si trova il cluster. AWS 

   ```
   cat >bottlerocket.yaml <<EOF
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: region-code
     version: '1.35'
   
   iam:
     withOIDC: true
   
   nodeGroups:
     - name: ng-bottlerocket
       instanceType: m5.large
       desiredCapacity: 3
       amiFamily: Bottlerocket
       ami: auto-ssm
       iam:
          attachPolicyARNs:
             - arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy
             - arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
             - arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
             - arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
       ssh:
           allow: true
           publicKeyName: my-ec2-keypair-name
   EOF
   ```

1. Implementare i nodi mediante il comando seguente.

   ```
   eksctl create nodegroup --config-file=bottlerocket.yaml
   ```

   Di seguito viene riportato un output di esempio:

   Durante la creazione dei nodi vengono generate diverse righe. Una delle ultime righe di output è simile alla seguente riga di esempio.

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (Facoltativo) Creare un [volume persistente](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) Kubernetes su un nodo Bottlerocket usando il [plug-in CSI di Amazon EBS](https://github.com/kubernetes-sigs/aws-ebs-csi-driver). Il driver Amazon EBS di default si basa su strumenti di file system che non sono inclusi in Bottlerocket. Per ulteriori informazioni sulla creazione di una classe di archiviazione utilizzando il driver, consultare [Utilizzare il volume di archiviazione Kubernetes con Amazon EBS](ebs-csi.md).

1. (Facoltativo) Per impostazione predefinita `kube-proxy` imposta il parametro kernel `nf_conntrack_max` su un valore predefinito che può differire da quello che Bottlerocket imposta originariamente all’avvio. Per mantenere [l’impostazione di default](https://github.com/bottlerocket-os/bottlerocket-core-kit/blob/develop/packages/release/release-sysctl.conf) di Bottlerocket, modifica la configurazione `kube-proxy` con il comando seguente.

   ```
   kubectl edit -n kube-system daemonset kube-proxy
   ```

   Aggiungi `--conntrack-max-per-core` e `--conntrack-min` agli argomenti `kube-proxy` nell’esempio seguente. Un’impostazione di `0` non implica alcun cambiamento.

   ```
         containers:
         - command:
           - kube-proxy
           - --v=2
           - --config=/var/lib/kube-proxy-config/config
           - --conntrack-max-per-core=0
           - --conntrack-min=0
   ```

1. (Facoltativo) implementare [un’applicazione di esempio](sample-deployment.md) per testare i nodi Bottlerocket.

1. Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
   + Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
   + Nessun pod nel cluster richiede l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

   Per ulteriori informazioni, consulta [Limita l’accesso al profilo dell’istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Crea nodi Microsoft Windows autogestiti
<a name="launch-windows-workers"></a>

Questo argomento illustra l’avvio di gruppi con scalabilità automatica di nodi Windows che si registrano con il cluster Amazon EKS. Dopo che i nodi vengono aggiunti al cluster, puoi implementare applicazioni Kubernetes per gli stessi.

**Importante**  
I nodi di lavoro Amazon EKS sono istanze Amazon EC2 standard e la loro fatturazione è basata sui normali prezzi dell’istanza Amazon EC2. Per ulteriori informazioni, consulta [Prezzi di Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Puoi avviare nodi Windows nei cluster estesi di Amazon EKS su AWS Outposts, ma non puoi avviarli in cluster AWS locali su Outposts. Per ulteriori informazioni, consulta [Implementazione di Amazon EKS on-premises con AWS Outposts](eks-outposts.md).

Abilitare il supporto Windows per il cluster. Si consiglia di rivedere le considerazioni importanti prima di avviare un gruppo di nodi Windows. Per ulteriori informazioni, consulta [Abilitazione del supporto Windows](windows-support.md#enable-windows-support).

Puoi avviare nodi Windows autogestiti con uno dei seguenti modi:
+  [`eksctl`](#eksctl_create_windows_nodes) 
+  [Console di gestione AWS](#console_create_windows_nodes) 

## `eksctl`
<a name="eksctl_create_windows_nodes"></a>

 **Avvio dei nodi Windows autogestiti tramite `eksctl`** 

Questa procedura presuppone che `eksctl` sia installato e che la versione `eksctl` sia almeno `0.215.0`. È possibile verificare la tua versione con il seguente comando.

```
eksctl version
```

Per istruzioni sull'installazione o sull'aggiornamento di `eksctl`, consulta la sezione [Installation](https://eksctl.io/installation) nella documentazione di `eksctl`.

**Nota**  
Questa procedura funziona solo per i cluster creati con `eksctl`.

1. (Facoltativo) Se la policy IAM gestita da **Amazoneks\$1CNI\$1Policy** (se hai `IPv4` un cluster) o la (che hai [creato tu stesso](cni-iam-role.md#cni-iam-role-create-ipv6-policy) se hai un `IPv6` cluster) è collegata al ruolo IAM *AmazonEKS\$1CNI\$1IPv6\$1Policy* del [nodo Amazon EKS, ti consigliamo invece di assegnarlo a un ruolo IAM](create-node-role.md) da associare all'account del servizio Kubernetes. `aws-node` Per ulteriori informazioni, consulta [Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA](cni-iam-role.md).

1. In questa procedura si presuppone la disponibilità di un cluster. Se non disponi ancora di un cluster Amazon EKS e di un gruppo di nodi Amazon Linux a cui aggiungere un gruppo di nodi Windows, ti consigliamo di seguire [Nozioni di base su Amazon EKS: `eksctl`](getting-started-eksctl.md). Questa guida fornisce una spiegazione dettagliata completa per la creazione di un cluster Amazon EKS con nodi Amazon Linux.

   Crea il tuo gruppo di nodi con il comando seguente. *region-code*Sostituiscilo con la regione in cui si trova il cluster. AWS Sostituisci *my-cluster* con il nome del cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può avere una lunghezza superiore a 100 caratteri. Il nome deve essere univoco all'interno AWS della regione e AWS dell'account in cui stai creando il cluster. Sostituisci *ng-windows* con un nome per il gruppo di nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura. Puoi sostituirlo *2019* con `2022` per usare Windows Server 2022 o `2025` usare Windows Server 2025. Sostituisci il resto dei valori di esempio con quelli in tuo possesso.
**Importante**  
Per distribuire un gruppo di nodi nelle sottoreti AWS Outposts, AWS Wavelength AWS o Local Zone, non passare le sottoreti AWS Outposts, Wavelength o Local Zone quando crei il cluster. Crea il gruppo di nodi con un file di configurazione, specificando le sottoreti AWS Outposts, Wavelength o Local Zone. Per ulteriori informazioni, vedere [Creazione di un gruppo di nodi da un file di configurazione](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) e lo [Schema del file config](https://eksctl.io/usage/schema/) nella documentazione su `eksctl`.

   ```
   eksctl create nodegroup \
       --region region-code \
       --cluster my-cluster \
       --name ng-windows \
       --node-type t2.large \
       --nodes 3 \
       --nodes-min 1 \
       --nodes-max 4 \
       --managed=false \
       --node-ami-family WindowsServer2019FullContainer
   ```
**Nota**  
Se i nodi non riescono a unirsi al cluster, consultare [Impossibile aggiungere i nodi al cluster](troubleshooting.md#worker-node-fail) nella Guida alla risoluzione dei problemi.
Per vedere le opzioni disponibili per i comandi `eksctl`, inserire il comando seguente.  

     ```
     eksctl command -help
     ```

   Di seguito viene riportato un output di esempio: Durante la creazione dei nodi vengono generate diverse righe. Una delle ultime righe di output è simile alla seguente riga di esempio.

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (Opzionale) implementare [un’applicazione di esempio](sample-deployment.md) per testare il cluster e i nodi Windows.

1. Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
   + Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
   + Nessun pod nel cluster richiede l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

   Per ulteriori informazioni, consulta [Limita l’accesso al profilo dell’istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

## Console di gestione AWS
<a name="console_create_windows_nodes"></a>

 **Prerequisiti** 
+ Creazione di un cluster Amazon EKS e di un gruppo di nodi Linux. Se non disponi di tali risorse, ti consigliamo di crearle utilizzando una delle nostre guide in [Nozioni di base su Amazon EKS](getting-started.md). Queste guide descrivono come creare un cluster Amazon EKS con nodi Linux.
+ Creazione di un VPC e di un gruppo di sicurezza esistenti che soddisfano i requisiti per un cluster Amazon EKS. Per ulteriori informazioni, consulta [Visualizzazione di requisiti di rete di Amazon EKS per VPC e sottoreti](network-reqs.md) e [Visualizzazione dei requisiti relativi al gruppo di sicurezza Amazon EKS per cluster](sec-group-reqs.md). Le guide in [Nozioni di base su Amazon EKS](getting-started.md) consentono di creare un VPC che soddisfa i requisiti. In alternativa, è possibile anche seguire [Create an Amazon VPC for your Amazon EKS cluster](creating-a-vpc.md) crearne uno nuovo manualmente.
+ Un cluster Amazon EKS esistente che utilizza un VPC e un gruppo di sicurezza in grado di soddisfare i requisiti di un cluster Amazon EKS. Per ulteriori informazioni, consulta [Crea un cluster Amazon EKS.](create-cluster.md). Se sono presenti sottoreti nella AWS regione in cui sono abilitati AWS Outposts, AWS Wavelength o AWS Local Zones, tali sottoreti non devono essere state passate al momento della creazione del cluster.

 **Passaggio 1: avvia i nodi Windows autogestiti utilizzando la Console di gestione AWS ** 

1. Attendi che lo stato del cluster risulti `ACTIVE`. Se i nodi vengono avviati prima che il cluster sia attivo, la registrazione al cluster non riesce e sarà necessario riavviarli.

1. Apri la [console AWS CloudFormation ](https://console.aws.amazon.com/cloudformation/) 

1. Seleziona **Crea stack**.

1. Per **Specifica modello**, selezionare **URL Amazon S3**.

1. Copia il seguente URL e incollalo nell’**URL di Amazon S3**.

   ```
   https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2023-02-09/amazon-eks-windows-nodegroup.yaml
   ```

1. Seleziona due volte **Next** (Avanti).

1. Nella pagina **Quick create stack (Creazione rapida pila)**, inserire i seguenti parametri di conseguenza:
   +  Nome **dello stack: scegli un nome** per lo stack. AWS CloudFormation Ad esempio, è possibile chiamarlo `my-cluster-nodes`.
   +  **ClusterName**: inserisci il nome che hai usato per creare il cluster Amazon EKS.
**Importante**  
Questo nome deve corrispondere esattamente a quello presente in [Step 1: Create your Amazon EKS cluster](getting-started-console.md#eks-create-cluster). In caso contrario, i nodi non possono aggiungersi al cluster.
   +  **ClusterControlPlaneSecurityGroup**: scegli il gruppo di sicurezza dall' AWS CloudFormation output che hai generato quando hai creato il tuo [VPC](creating-a-vpc.md). Nella procedura seguente viene illustrato un metodo per recuperare il gruppo applicabile.

     1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

     1. Scegli il nome del cluster.

     1. Scegli la scheda **Reti**.

     1. Utilizza il valore dei **gruppi di sicurezza aggiuntivi** come riferimento quando selezioni dall'**ClusterControlPlaneSecurityGroup**elenco a discesa.
   +  **NodeGroupName**: inserisci un nome per il tuo gruppo di nodi. Questo nome può essere utilizzato in seguito per identificare il gruppo di nodi con dimensionamento automatico creato per i tuoi nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura.
   +  **NodeAutoScalingGroupMinSize**: Inserisci il numero minimo di nodi su cui il gruppo Auto Scaling del nodo può scalare.
   +  **NodeAutoScalingGroupDesiredCapacity**: Inserisci il numero di nodi desiderato su cui scalare quando viene creato lo stack.
   +  **NodeAutoScalingGroupMaxSize**: Inserisci il numero massimo di nodi su cui il gruppo Auto Scaling del nodo può scalare orizzontalmente.
   +  **NodeInstanceType**: scegli un tipo di istanza per i tuoi nodi. Per ulteriori informazioni, consulta [Scelta di una tipologia di istanza di nodo Amazon EC2 ottimale](choosing-instance-type.md).
**Nota**  
[I tipi di istanza supportati per l'ultima versione del [plug-in Amazon VPC CNI per Kubernetes sono elencati in vpc\$1ip\$1resource\$1limit.go](https://github.com/aws/amazon-vpc-cni-k8s) on.](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go) GitHub Potrebbe essere necessario aggiornare la versione CNI per utilizzare i tipi di istanze supportati più recenti. Per ulteriori informazioni, consulta [Assegna IPs ai pod con Amazon VPC CNI](managing-vpc-cni.md).
   +  **NodeImageIdSSMParam**: precompilato con il parametro Amazon EC2 Systems Manager dell'attuale ID AMI Windows Core ottimizzato per Amazon EKS. Per utilizzare la versione completa di Windows, sostituire *Core* con `Full`.
   +  **NodeImageId**: (Facoltativo) Se utilizzi un'AMI personalizzata (anziché un'AMI ottimizzata per Amazon EKS), inserisci un ID AMI del nodo per la tua AWS regione. Se specifichi un valore per questo campo, questo sostituisce tutti i valori presenti nel **NodeImageIdSSMParam**campo.
   +  **NodeVolumeSize**: Specificate la dimensione del volume root per i nodi, in GiB.
   +  **KeyName**: inserisci il nome di una coppia di chiavi SSH Amazon EC2 che puoi usare per connetterti tramite SSH ai tuoi nodi dopo il loro avvio. Se non hai già una coppia di chiavi Amazon EC2, puoi crearla nella Console di gestione AWS. Per ulteriori informazioni, consulta la sezione relativa alle [coppie di chiavi Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) nella *Guida per l’utente di Amazon EC2*.
**Nota**  
Se non fornisci una key pair qui, lo AWS CloudFormation stack non viene creato.
   +  **BootstrapArguments**: Specificate eventuali argomenti opzionali da passare allo script di bootstrap del nodo, come ad esempio l'utilizzo di `kubelet` argomenti aggiuntivi. `-KubeletExtraArgs`
   +  **Disabilita IMDSv1**: per impostazione predefinita, ogni nodo supporta Instance Metadata Service versione 1 (IMDSv1) e. IMDSv2 È possibile disabilitare IMDSv1. Per impedire l'utilizzo di nodi e Pod futuri nel gruppo di nodi MDSv1, imposta **Disable** su IMDSv1 **true**. Per ulteriori informazioni su IMDS, consulta [Configurazione del servizio di metadati dell’istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).
   +  **VpcId**: Seleziona l'ID per il [VPC](creating-a-vpc.md) che hai creato.
   +  **NodeSecurityGroups**: Seleziona il gruppo di sicurezza che è stato creato per il tuo gruppo di nodi Linux quando hai creato il tuo [VPC](creating-a-vpc.md). Se ai nodi Linux è collegato più di un gruppo di sicurezza, specificarli tutti. Questo, ad esempio, se il gruppo di nodi Linux è stato creato con`eksctl`.
   +  **Sottoreti**: scegliere le sottoreti create. Se hai creato il VPC utilizzando i passaggi descritti in [Create an Amazon VPC for your Amazon EKS cluster](creating-a-vpc.md), specifica solo le sottoreti private all’interno del VPC per avviare i nodi.
**Importante**  
Se una qualsiasi delle sottoreti è pubblica, devi abilitare l’impostazione di assegnazione automatica degli indirizzi IP pubblici. Se l'impostazione non è abilitata per la sottorete pubblica, a tutti i nodi distribuiti in quella sottorete pubblica non verrà assegnato un indirizzo IP pubblico e non saranno in grado di comunicare con il cluster o altri servizi. AWS Se la sottorete è stata distribuita prima del 26 marzo 2020 utilizzando uno dei [modelli AWS CloudFormation VPC di Amazon EKS](creating-a-vpc.md) o utilizzando`eksctl`, l'assegnazione automatica degli indirizzi IP pubblici è disabilitata per le sottoreti pubbliche. Per informazioni su come abilitare l'assegnazione di indirizzi IP pubblici per una sottorete, consulta [Modifica](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) dell'attributo di indirizzamento pubblico per la sottorete. IPv4 Se il nodo viene distribuito in una sottorete privata, è in grado di comunicare con il cluster e altri AWS servizi tramite un gateway NAT.
Se le sottoreti non hanno accesso a Internet, leggi con attenzione le considerazioni e i passaggi aggiuntivi descritti in [Deploy private clusters with limited internet access](private-clusters.md).
Se si AWS selezionano le sottoreti Outposts, Wavelength o Local Zone, le sottoreti non devono essere state passate al momento della creazione del cluster.

1. Confermare che la pila sia in grado di creare risorse IAM, quindi scegliere **Crea pila**.

1. Al termine della creazione della pila, selezionala nella console e scegli **Outputs (Uscite)**.

1. Registra il per il gruppo di nodi che è stato **NodeInstanceRole**creato. Questo servirà durante la configurazione dei nodi Windows Amazon EKS.

 **Passaggio 2: abilita l’aggiunta di nodi al cluster** 

1. Verifica se disponi già di una `ConfigMap` per `aws-auth`.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Se ti viene mostrata una `ConfigMap` per `aws-auth`, aggiornala se necessario.

   1. Apri `ConfigMap` per la modifica.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Aggiungi nuove voci `mapRoles`, se necessario. Imposta i `rolearn` valori **NodeInstanceRole**sui valori che hai registrato nelle procedure precedenti.

      ```
      [...]
      data:
        mapRoles: |
      - rolearn: <ARN of linux instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
          - rolearn: <ARN of windows instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
              - eks:kube-proxy-windows
      [...]
      ```

   1. Salva il file ed esci dall’editor di testo.

1. Se hai ricevuto un messaggio di errore che indica "`Error from server (NotFound): configmaps "aws-auth" not found`", applica lo `ConfigMap` di stock.

   1. Scarica la mappa di configurazione.

      ```
      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml
      ```

   1. Nel `aws-auth-cm-windows.yaml` file, impostate i `rolearn` valori **NodeInstanceRole**sui valori applicabili registrati nelle procedure precedenti. Per eseguire questa operazione, utilizza un editor di testo o sostituisci i valori di esempio tramite il comando seguente:

      ```
      sed -i.bak -e 's|<ARN of linux instance role (not instance profile)>|my-node-linux-instance-role|' \
          -e 's|<ARN of windows instance role (not instance profile)>|my-node-windows-instance-role|' aws-auth-cm-windows.yaml
      ```
**Importante**  
Non modificare altre righe in questo file.
Non utilizzare lo stesso ruolo IAM sia per i nodi Windows che per quelli Linux.

   1. Applica la configurazione. L’esecuzione di questo comando potrebbe richiedere alcuni minuti.

      ```
      kubectl apply -f aws-auth-cm-windows.yaml
      ```

1. Guarda lo stato dei nodi e attendi che raggiungano lo stato `Ready`.

   ```
   kubectl get nodes --watch
   ```

   Inserisci `Ctrl`\$1`C` per tornare a un prompt dello shell (interprete di comandi).
**Nota**  
Se ricevi qualsiasi altro errore di tipo di risorsa o autorizzazione, consulta la sezione [Accesso negato o non autorizzato (`kubectl`)](troubleshooting.md#unauthorized) nell’argomento relativo alla risoluzione dei problemi.

   Se i nodi di lavoro non riescono a unirsi al cluster, consulta [Impossibile aggiungere i nodi al cluster](troubleshooting.md#worker-node-fail) nel capitolo sulla risoluzione dei problemi.

 **Fase 3: Azioni aggiuntive** 

1. (Opzionale) implementare [un’applicazione di esempio](sample-deployment.md) per testare il cluster e i nodi Windows.

1. (Facoltativo) Se la policy IAM gestita da **Amazoneks\$1CNI\$1Policy** (se hai `IPv4` un cluster) o la (che hai [creato tu stesso](cni-iam-role.md#cni-iam-role-create-ipv6-policy) se hai un `IPv6` cluster) è collegata al ruolo IAM *AmazonEKS\$1CNI\$1IPv6\$1Policy* del [nodo Amazon EKS, ti consigliamo invece di assegnarlo a un ruolo IAM](create-node-role.md) da associare all'account del servizio Kubernetes. `aws-node` Per ulteriori informazioni, consulta [Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA](cni-iam-role.md).

1. Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
   + Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
   + Nessun pod nel cluster richiede l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

   Per ulteriori informazioni, consulta [Limita l’accesso al profilo dell’istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Creazione di nodi Ubuntu Linux autogestiti
<a name="launch-node-ubuntu"></a>

**Nota**  
I gruppi di nodi gestiti potrebbero offrire alcuni vantaggi per il tuo caso d’uso. Per ulteriori informazioni, consulta [Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti](managed-node-groups.md).

Questo argomento illustra l’avvio di gruppi Auto Scaling di [Ubuntu su nodi Amazon Elastic Kubernetes Service (EKS)](https://cloud-images.ubuntu.com/aws-eks/) o [Ubuntu Pro su nodi Amazon Elastic Kubernetes Service (EKS) che si registrano con il cluster Amazon EKS](https://ubuntu.com/blog/ubuntu-pro-for-eks-is-now-generally-available). Ubuntu e Ubuntu Pro for EKS si basano sull'Ubuntu Minimal LTS ufficiale, includono il AWS kernel personalizzato sviluppato congiuntamente e sono stati creati appositamente per EKS. AWS Ubuntu Pro aggiunge una copertura di sicurezza aggiuntiva supportando i periodi di supporto estesi di EKS, kernel livepatch, la conformità FIPS e la capacità di eseguire un numero illimitato di container Pro.

Dopo che i nodi sono aggiunti al cluster, è possibile implementare le applicazioni containerizzate per gli stessi. Per ulteriori informazioni, consulta la documentazione per [Ubuntu su AWS](https://documentation.ubuntu.com/aws/en/latest/) e il [supporto per le AMI personalizzate](https://eksctl.io/usage/custom-ami-support/) nella documentazione `eksctl`.

**Importante**  
I nodi di lavoro Amazon EKS sono istanze Amazon EC2 standard e la loro fatturazione è basata sui normali prezzi dell’istanza Amazon EC2. Per ulteriori informazioni, consulta [Prezzi di Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Puoi avviare nodi Ubuntu nei cluster estesi di Amazon EKS su AWS Outposts, ma non puoi avviarli in cluster AWS locali su Outposts. Per ulteriori informazioni, consulta [Implementazione di Amazon EKS on-premises con AWS Outposts](eks-outposts.md).
È possibile eseguire l’implementazione su istanze Amazon EC2 con processori `x86` o Arm. Tuttavia, le istanze che dispongono di chip Inferentia potrebbero dover installare prima [l’SDK Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/).

Questa procedura richiede `eksctl` versione `0.215.0` o successiva. È possibile verificare la versione con il comando seguente:

```
eksctl version
```

Per istruzioni su come installare o aggiornare `eksctl`, consulta [Installazione](https://eksctl.io/installation) nella documentazione `eksctl`. Nota: questa procedura funziona solo per i cluster creati con `eksctl`.

1. Copia i seguenti contenuti sul dispositivo. Sostituisci `my-cluster` con il nome del cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfabetico e non può avere una lunghezza superiore a 100 caratteri. Sostituisci `ng-ubuntu` con un nome per il gruppo di nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura. Per implementare su istanze Arm, sostituire `m5.large` con un tipo di istanza Arm. Sostituisci `my-ec2-keypair-name` con il nome di una coppia di chiavi SSH Amazon EC2; che puoi utilizzare per connetterti utilizzando SSH nei nodi dopo l'avvio. Se non disponi già di una coppia di chiavi Amazon EC2, puoi crearla nella Console di gestione AWS. Per ulteriori informazioni, consulta [coppie di chiavi Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) nella Guida per l’utente di Amazon EC2. Sostituisci tutti i valori esemplificativi rimanenti con i valori in tuo possesso. Dopo aver effettuato le sostituzioni, esegui il comando modificato per creare il file `ubuntu.yaml`.
**Importante**  
Per distribuire un gruppo di nodi nelle sottoreti AWS Outposts, AWS Wavelength AWS o Local Zone, non passare sottoreti AWS Outposts, AWS Wavelength o Local Zone quando crei il cluster. AWS È necessario specificare le sottoreti nell’esempio seguente. Per ulteriori informazioni, vedere [Creare un gruppo di nodi da un file di configurazione](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) e lo [Schema del file config](https://eksctl.io/usage/schema/) nella documentazione su `eksctl`. *region-code*Sostituiscilo con la regione in cui si trova il cluster. AWS 

   ```
   cat >ubuntu.yaml <<EOF
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: region-code
     version: '1.35'
   
   iam:
     withOIDC: true
   
   nodeGroups:
     - name: ng-ubuntu
       instanceType: m5.large
       desiredCapacity: 3
       amiFamily: Ubuntu2204
       iam:
          attachPolicyARNs:
             - arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy
             - arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
             - arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
             - arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
       ssh:
           allow: true
           publicKeyName: my-ec2-keypair-name
   EOF
   ```

   Per creare un gruppo di nodi Ubuntu Pro, basta cambiare il valore `amiFamily` in `UbuntuPro2204`.

1. Implementare i nodi mediante il comando seguente.

   ```
   eksctl create nodegroup --config-file=ubuntu.yaml
   ```

   Di seguito viene riportato un output di esempio:

   Durante la creazione dei nodi vengono generate diverse righe. Una delle ultime righe di output è simile alla seguente riga di esempio.

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (Facoltativo) Implementa [un’applicazione esemplificativa](sample-deployment.md) per testare i nodi Ubuntu.

1. Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
   + Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
   + Nessun pod nel cluster richiede l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

   Per ulteriori informazioni, consulta [Limita l’accesso al profilo dell’istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Aggiornamento dei nodi autogestiti per il tuo cluster
<a name="update-workers"></a>

Quando viene rilasciata una nuova AMI ottimizzata per Amazon EKS, considerare la sostituzione dei nodi nel gruppo di nodi autogestiti con la nuova AMI. Analogamente, se hai aggiornato la versione Kubernetes per il tuo cluster Amazon EKS, aggiornare i nodi per l'utilizzo di nodi con la stessa versione Kubernetes.

**Importante**  
In questo argomento vengono descritti gli aggiornamenti dei nodi per i gruppi di nodi autogestiti. Se utilizzi [gruppi di nodi gestiti](managed-node-groups.md), consulta [Aggiornamento del gruppo di nodi gestito per il cluster](update-managed-node-group.md).

Esistono due modi di base per aggiornare i gruppi di nodi autogestiti nei cluster per utilizzare una nuova AMI:

 ** [Migrate applications to a new node group](migrate-stack.md) **   
: crea un nuovo gruppo di nodi ed esegui la migrazione dei pod verso questo gruppo. La migrazione a un nuovo gruppo di nodi è più aggraziata del semplice aggiornamento dell’ID AMI in una pila AWS CloudFormation esistente. Questo perché il processo di migrazione [esclude](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) il vecchio gruppo di nodi come `NoSchedule` e svuota i nodi dopo che una nuova pila è pronta ad accettare il carico di lavoro del pod esistente.

 ** [Aggiornamento di una pila di nodi AWS CloudFormation](update-stack.md) **   
Aggiorna la pila AWS CloudFormation per un gruppo di nodi esistente in modo che utilizzi la nuova AMI. Questo metodo non è supportato per i gruppi di nodi creati con `eksctl`.

# Esegui la migrazione delle applicazioni a un nuovo gruppo di nodi
<a name="migrate-stack"></a>

Questo argomento consente di creare un nuovo gruppo di nodi, di migrare correttamente le applicazioni esistenti al nuovo gruppo e di rimuovere il precedente gruppo di nodi dal cluster. È possibile eseguire la migrazione a un nuovo gruppo di nodi utilizzando `eksctl` o la Console di gestione AWS.
+  [`eksctl`](#eksctl_migrate_apps) 
+  [Console di gestione AWS e AWS CLI](#console_migrate_apps) 

## `eksctl`
<a name="eksctl_migrate_apps"></a>

 **Esegui la migrazione delle applicazioni a un nuovo gruppo di nodi con `eksctl`** 

Per ulteriori informazioni sull’utilizzo di eksctl per la migrazione, consulta [Unmanaged nodegroups](https://eksctl.io/usage/nodegroup-unmanaged/) nella documentazione di `eksctl`.

Questa procedura richiede `eksctl` versione `0.215.0` o successiva. È possibile verificare la versione con il comando seguente:

```
eksctl version
```

Per istruzioni sull’installazione o sull’aggiornamento di `eksctl`, consulta la sezione [Installation](https://eksctl.io/installation) nella documentazione di `eksctl`.

**Nota**  
Questa procedura funziona solo per i cluster e per i gruppi di nodi creati con `eksctl`.

1. Recuperare il nome dei gruppi di nodi esistenti, sostituendo *my-cluster* con il nome del cluster.

   ```
   eksctl get nodegroups --cluster=my-cluster
   ```

   Di seguito viene riportato un output di esempio:

   ```
   CLUSTER      NODEGROUP          CREATED               MIN SIZE      MAX SIZE     DESIRED CAPACITY     INSTANCE TYPE     IMAGE ID
   default      standard-nodes   2019-05-01T22:26:58Z  1             4            3                    t3.medium         ami-05a71d034119ffc12
   ```

1. Avvia un nuovo gruppo di nodi con `eksctl` con il comando seguente. Nel comando, sostituire ogni *example value* con i propri valori. Il numero di versione non può essere successivo alla versione Kubernetes per il piano di controllo. Inoltre, non può essere più di due versioni secondarie precedenti rispetto a quella Kubernetes per il piano di controllo. Si consiglia di utilizzare la stessa versione del piano di controllo.

   Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
   + Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
   + Nessun pod nel cluster richiede l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della regione corrente. AWS 

     Per ulteriori informazioni, consulta [Limitazione dell’accesso al profilo dell’istanza assegnato al nodo worker](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

     Per bloccare l’accesso del pod a IMDS, aggiungere l’opzione `--disable-pod-imds` al seguente comando.
**Nota**  
Per ulteriori flag disponibili e relative descrizioni, vedere https://eksctl.io/.

   ```
   eksctl create nodegroup \
     --cluster my-cluster \
     --version 1.35 \
     --name standard-nodes-new \
     --node-type t3.medium \
     --nodes 3 \
     --nodes-min 1 \
     --nodes-max 4 \
     --managed=false
   ```

1. Quando il comando precedente viene completato, verificare che tutti i nodi abbiano raggiunto lo stato `Ready` con il comando seguente:

   ```
   kubectl get nodes
   ```

1. Eliminare il gruppo di nodi originale con il comando seguente. Nel comando, sostituire ogni *example value* con i nomi dei cluster e dei gruppi di nodi:

   ```
   eksctl delete nodegroup --cluster my-cluster --name standard-nodes-old
   ```

## Console di gestione AWS e AWS CLI
<a name="console_migrate_apps"></a>

 **Migra le tue applicazioni in un nuovo gruppo di nodi con Console di gestione AWS e AWS CLI** 

1. Avvia un nuovo gruppo di nodi seguendo i passaggi descritti in [Create self-managed Amazon Linux nodes](launch-workers.md).

1. Al termine della creazione dello stack, selezionalo nella console e scegli **Output**.

1.  Registra il **NodeInstanceRole**per il gruppo di nodi che è stato creato. Ciò è necessario per aggiungere i nuovi nodi Amazon EKS al cluster.
**Nota**  
Se si dispone di policy IAM aggiuntive associate al vecchio ruolo IAM del gruppo di nodi, associa le stesse policy al nuovo ruolo IAM del gruppo di nodi per mantenere tale funzionalità nel nuovo gruppo. Questo vale se hai aggiunto le autorizzazioni per il [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) Kubernetes, ad esempio.

1. Aggiorna i gruppi di sicurezza per entrambi i gruppi di nodi in modo che possano comunicare tra loro. Per ulteriori informazioni, consulta [Visualizzazione dei requisiti relativi al gruppo di sicurezza Amazon EKS per cluster](sec-group-reqs.md).

   1. Registra il gruppo di sicurezza IDs per entrambi i gruppi di nodi. Questo viene mostrato come **NodeSecurityGroup**valore negli output dello AWS CloudFormation stack.

      È possibile utilizzare i seguenti comandi AWS CLI per ottenere il gruppo di sicurezza IDs dai nomi dello stack. In questi comandi, `oldNodes` c'è il nome AWS CloudFormation dello stack del vecchio stack di nodi ed `newNodes` è il nome dello stack verso cui state migrando. Sostituisci ogni *example value* con i valori in tuo possesso.

      ```
      oldNodes="old_node_CFN_stack_name"
      newNodes="new_node_CFN_stack_name"
      
      oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      ```

   1. Aggiungi regole in ingresso per ciascun gruppo di sicurezza del nodo in modo da accettare il traffico tra loro.

      I seguenti comandi AWS CLI aggiungono regole in entrata a ciascun gruppo di sicurezza che consentono tutto il traffico su tutti i protocolli dell'altro gruppo di sicurezza. Questo consente ai pod in ogni gruppo di nodi di comunicare tra loro durante la migrazione del carico di lavoro verso il nuovo gruppo.

      ```
      aws ec2 authorize-security-group-ingress --group-id $oldSecGroup \
      --source-group $newSecGroup --protocol -1
      aws ec2 authorize-security-group-ingress --group-id $newSecGroup \
      --source-group $oldSecGroup --protocol -1
      ```

1. Modifica la configmap `aws-auth` per mappare il nuovo ruolo dell’istanza del nodo in RBAC.

   ```
   kubectl edit configmap -n kube-system aws-auth
   ```

   Aggiungi una nuova voce `mapRoles` per il nuovo gruppo di nodi.

   ```
   apiVersion: v1
   data:
     mapRoles: |
       - rolearn: ARN of instance role (not instance profile)
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes>
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-U11V27W93CX5
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes
   ```

   [Sostituisci lo *ARN of instance role (not instance profile)* snippet con il **NodeInstanceRole**valore registrato nel passaggio precedente.](#node-instance-role-step) Quindi, salva e chiudi il file per applicare la configmap aggiornata.

1. Guarda lo stato dei nodi e attendi fino a quando i nuovi nodi si uniscono al cluster e raggiungono lo stato `Ready`.

   ```
   kubectl get nodes --watch
   ```

1. (Facoltativo) Se stai utilizzando il [Cluster Autoscaler Kubernetes](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler), dimensiona l’implementazione fino a zero (0) repliche per evitare azioni di dimensionamento conflittuali.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
   ```

1. Utilizzare il comando seguente per il taint di ciascuno dei nodi che si desidera rimuovere con `NoSchedule`. In questo modo i nuovi pod non vengono pianificati o riprogrammati sui nodi che stai sostituendo. Per ulteriori informazioni, consulta [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) nella documentazione di Kubernetes.

   ```
   kubectl taint nodes node_name key=value:NoSchedule
   ```

   Se aggiorni i nodi a una nuova versione di Kubernetes, puoi identificare ed eseguire il taint di tutti i nodi di una determinata versione di Kubernetes (in questo caso, `1.33`) con il seguente frammento di codice. Il numero di versione non può essere successivo alla versione Kubernetes del piano di controllo. Inoltre, non può essere più di due versioni secondarie precedenti rispetto alla versione Kubernetes del piano di controllo. Si consiglia di utilizzare la stessa versione del piano di controllo.

   ```
   K8S_VERSION=1.33
   nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
   for node in ${nodes[@]}
   do
       echo "Tainting $node"
       kubectl taint nodes $node key=value:NoSchedule
   done
   ```

1.  Determina il provider DNS del cluster.

   ```
   kubectl get deployments -l k8s-app=kube-dns -n kube-system
   ```

   Di seguito viene riportato un output di esempio. Questo cluster utilizza CoreDNS per la risoluzione DNS, ma il cluster può invece restituire `kube-dns`):

   ```
   NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
   coredns   1         1         1            1           31m
   ```

1. Se l’implementazione corrente è in esecuzione per un numero di volte inferiore a 2 repliche, scalare la distribuzione a 2 repliche. Sostituire *coredns* con `kubedns` se l'output del comando precedente ha avuto tale risultato.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. Svuotare ciascuno dei nodi che si desidera rimuovere dal cluster con il comando seguente:

   ```
   kubectl drain node_name --ignore-daemonsets --delete-local-data
   ```

   Se stai aggiornando i tuoi nodi a una nuova versione di Kubernetes, identifica e svuota tutti i nodi di una particolare versione di Kubernetes (in questo caso) con il seguente frammento di codice. *1.33*

   ```
   K8S_VERSION=1.33
   nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
   for node in ${nodes[@]}
   do
       echo "Draining $node"
       kubectl drain $node --ignore-daemonsets --delete-local-data
   done
   ```

1. Una volta terminata tale operazione, revocare le regole in ingresso del gruppo di sicurezza autorizzate in precedenza. Quindi, elimina lo stack per terminare le istanze. AWS CloudFormation 
**Nota**  
Se hai collegato politiche IAM aggiuntive al tuo vecchio ruolo IAM del gruppo di nodi, ad esempio aggiungendo autorizzazioni per [Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler), scollega quelle politiche aggiuntive dal ruolo prima di poter eliminare lo stack. AWS CloudFormation 

   1. Revocare le regole in ingresso create in precedenza per i gruppi di sicurezza dei nodi. In questi comandi, `oldNodes` c'è il nome dello AWS CloudFormation stack del tuo vecchio stack di nodi ed `newNodes` è il nome dello stack verso cui stai migrando.

      ```
      oldNodes="old_node_CFN_stack_name"
      newNodes="new_node_CFN_stack_name"
      
      oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      aws ec2 revoke-security-group-ingress --group-id $oldSecGroup \
      --source-group $newSecGroup --protocol -1
      aws ec2 revoke-security-group-ingress --group-id $newSecGroup \
      --source-group $oldSecGroup --protocol -1
      ```

   1. Apri la [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation/).

   1. Selezionare la pila del nodo precedente.

   1. Scegli **Elimina**.

   1. Nella finestra di dialogo di conferma **Delete stack** (Elimina stack) scegliere **Delete stack**.(Elimina stack).

1. Modifica il configmap `aws-auth` per rimuovere il precedente ruolo dell’istanza del nodo da RBAC.

   ```
   kubectl edit configmap -n kube-system aws-auth
   ```

   Eliminare la voce `mapRoles` per il precedente gruppo di nodo.

   ```
   apiVersion: v1
   data:
     mapRoles: |
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-W70725MZQFF8
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-15-NodeInstanceRole-U11V27W93CX5
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes>
   ```

   Salvare e chiudere il file per applicare la configmap aggiornata.

1. (Facoltativo) Se si sta utilizzando il [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) Kubernetes, dimensionare l’implementazione a 1 replica.
**Nota**  
È inoltre necessario applicare i tag al nuovo gruppo Auto Scaling in modo appropriato (ad esempio, `k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/my-cluster`) e aggiornare il comando di implementazione di Cluster Autoscaler per puntare al nuovo gruppo Auto Scaling contrassegnato. [Per ulteriori informazioni, consulta Cluster Autoscaler on. AWS](https://github.com/kubernetes/autoscaler/tree/cluster-autoscaler-release-1.3/cluster-autoscaler/cloudprovider/aws)

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
   ```

1. (Facoltativo) Verifica se stai utilizzando la versione più recente del [plug-in CNI di Amazon VPC per Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s). Potrebbe essere necessario aggiornare la versione CNI per utilizzare i tipi di istanze supportati più recenti. Per ulteriori informazioni, consulta [Assegna IPs ai pod con Amazon VPC CNI](managing-vpc-cni.md).

1. Se il cluster utilizza `kube-dns` per la risoluzione DNS (vedi [[migrate-determine-dns-step]](#migrate-determine-dns-step)), riduci orizzontalmente l’implementazione `kube-dns` a 1 replica.

   ```
   kubectl scale deployments/kube-dns --replicas=1 -n kube-system
   ```

# Aggiornare uno AWS CloudFormation stack di nodi
<a name="update-stack"></a>

Questo argomento descrive come aggiornare uno stack di nodi AWS CloudFormation autogestito esistente con una nuova AMI. È possibile utilizzare questa procedura per aggiornare i nodi a una nuova versione di Kubernetes in seguito all'aggiornamento di un cluster. In caso contrario, è possibile eseguire l'aggiornamento all'AMI ottimizzata per Amazon EKS più recente per una versione Kubernetes esistente.

**Importante**  
In questo argomento vengono descritti gli aggiornamenti dei nodi per i gruppi di nodi autogestiti. Per informazioni sull’utilizzo di [Simplify node lifecycle con gruppi di nodi gestiti](managed-node-groups.md), consulta [Aggiornamento del gruppo di nodi gestito per il cluster](update-managed-node-group.md).

L'ultimo AWS CloudFormation modello di nodo Amazon EKS predefinito è configurato per avviare un'istanza con la nuova AMI nel cluster prima di rimuoverne una vecchia, una alla volta. Questa configurazione garantisce sempre il conteggio desiderato del gruppo Auto Scaling delle istanze attive nel cluster durante l’aggiornamento in sequenza.

**Nota**  
Questo metodo non è supportato per i gruppi di nodi creati con `eksctl`. Se è stato creato il cluster o il gruppo di nodi con `eksctl`, consultare [Esegui la migrazione delle applicazioni a un nuovo gruppo di nodi](migrate-stack.md).

1. Determinare il provider DNS del cluster.

   ```
   kubectl get deployments -l k8s-app=kube-dns -n kube-system
   ```

   Di seguito viene riportato un output di esempio. Questo cluster utilizza CoreDNS per la risoluzione DNS, ma il cluster può invece restituire `kube-dns`. L’output potrebbe avere un aspetto diverso a seconda della versione di `kubectl` che stai utilizzando.

   ```
   NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
   coredns   1         1         1            1           31m
   ```

1. Se l'implementazione corrente è in esecuzione per un numero di volte inferiore a 2 repliche, scalare la distribuzione a 2 repliche. Sostituire *coredns* con `kube-dns` se l'output del comando precedente ha avuto tale risultato.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. (Facoltativo) Se si sta utilizzando il [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) Kubernetes, dimensiona l’implementazione fino a zero (0) repliche per evitare azioni di dimensionamento conflittuali.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
   ```

1.  Determina il tipo di istanza e il numero di istanze desiderato del gruppo di nodi corrente. Questi valori vengono inseriti in un secondo momento, quando si aggiorna il AWS CloudFormation modello per il gruppo.

   1. Apri la console Amazon EC2 all'indirizzo. https://console.aws.amazon.com/ec2/

   1. Nel pannello di navigazione a sinistra, scegli **Launch Configurations** (Configurazioni di avvio) e prendi nota del tipo di istanza per la configurazione di avvio del nodo esistente.

   1. Nel pannello di navigazione a sinistra, scegli **Auto Scaling Groups** (Gruppi Auto Scaling) e prendi nota del conteggio delle istanze **Desired** (Desiderato) per il gruppo Auto Scaling del nodo.

1. Apri la [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation/).

1. Selezionare la pila del gruppo di nodi, quindi scegliere **Aggiorna**.

1. Selezionare **Replace current template (Sostituisci modello corrente)** e scegliere **Amazon S3 URL (URL Amazon S3)**.

1. Per **l'URL di Amazon S3**, incolla il seguente URL nell'area di testo per assicurarti di utilizzare la versione più recente del modello di nodo AWS CloudFormation . Quindi scegliere **Next (Successivo)**:

   ```
   https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
   ```

1. Nella pagina **Specify stack details (Specifica dettagli pila)**, compilare i parametri seguenti e scegliere **Next (Successivo)**:
   +  **NodeAutoScalingGroupDesiredCapacity**— Inserisci il numero di istanze desiderato che hai registrato nel [passaggio precedente](#existing-worker-settings-step). In alternativa, inserire il nuovo numero desiderato di nodi come riferimento del dimensionamento quando viene aggiornata la pila.
   +  **NodeAutoScalingGroupMaxSize**— Inserisci il numero massimo di nodi a cui il gruppo Auto Scaling del nodo può scalare orizzontalmente. Questo valore deve essere almeno un nodo in più rispetto alla capacità desiderata. Ciò consente di eseguire un aggiornamento in sequenza dei nodi senza ridurre il numero di nodi durante l'aggiornamento.
   +  **NodeInstanceType**— Scegli il tipo di istanza che hai registrato nel [passaggio precedente](#existing-worker-settings-step). In alternativa, scegliere un tipo di istanza diverso per i nodi. Prima di scegliere un tipo di istanza diverso, esamina [Choose an optimal Amazon EC2 node instance type](choosing-instance-type.md). Ogni tipo di istanza Amazon EC2 supporta un numero massimo di interfacce di rete elastiche (interfaccia di rete) e ogni interfaccia di rete supporta un numero massimo di indirizzi IP. Poiché a ogni nodo worker e pod è assegnato il proprio indirizzo IP, è importante scegliere un tipo di istanza che supporti il numero massimo di pod che si desidera eseguire su ciascun nodo Amazon EC2. Per un elenco del numero di interfacce di rete e di indirizzi IP supportati dai tipi di istanza, consulta [ Indirizzi IP per interfaccia di rete e per tipo di istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI). Ad esempio, il tipo di istanza `m5.large` supporta un massimo di 30 indirizzi IP per il nodo (worker) e per i pod.
**Nota**  
I tipi di istanza supportati per la versione più recente del [plug-in CNI di Amazon VPC per Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) sono riportati in [vpc\$1ip\$1resource\$1limit.go](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go) su GitHub. Potrebbe essere necessario aggiornare la versione del plugin CNI di Amazon VPC per Kubernetes per utilizzare i tipi di istanze supportati più recenti. Per ulteriori informazioni, consulta [Assegna IPs ai pod con Amazon VPC CNI](managing-vpc-cni.md).
**Importante**  
Alcuni tipi di istanze potrebbero non essere disponibili in tutte le AWS regioni.
   +  **NodeImageIdSSMParam**— Il parametro Amazon EC2 Systems Manager dell'ID AMI a cui desideri eseguire l'aggiornamento. Il valore seguente utilizza l’AMI ottimizzata per Amazon EKS più recente per Kubernetes versione `1.35`.

     ```
     /aws/service/eks/optimized-ami/1.35/amazon-linux-2/recommended/image_id
     ```

     Puoi sostituirlo *1.35* con una [versione della piattaforma che sia la stessa](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html). In alternativa, può essere fino a una versione precedente alla versione di Kubernetes in esecuzione sul piano di controllo. Si consiglia di mantenere i nodi alla stessa versione del piano di controllo. Puoi anche sostituirlo *amazon-linux-2* con un altro tipo di AMI. Per ulteriori informazioni, consulta [Recupera le AMI Amazon Linux consigliate IDs](retrieve-ami-id.md).
**Nota**  
L'utilizzo del parametro Amazon EC2 Systems Manager consente di aggiornare i nodi in futuro senza dover cercare e specificare un ID AMI. Se lo AWS CloudFormation stack utilizza questo valore, qualsiasi aggiornamento dello stack avvia sempre l'ultima AMI ottimizzata Amazon EKS consigliata per la versione di Kubernetes specificata. Questo è il caso anche se non si modificano valori nel modello.
   +  **NodeImageId**— Per utilizzare la tua AMI personalizzata, inserisci l'ID dell'AMI da utilizzare.
**Importante**  
Questo valore sostituisce qualsiasi valore specificato per. **NodeImageIdSSMParam** Se desideri utilizzare il **NodeImageIdSSMParam**valore, assicurati che il valore per **NodeImageId**sia vuoto.
   +  **Disabilita IMDSv1**: per impostazione predefinita, ogni nodo supporta Instance Metadata Service versione 1 (IMDSv1) e IMDSv2. Tuttavia, è possibile disabilitare IMDSv1. Seleziona **true** se non desideri utilizzare IMDSv1 alcun nodo o pod programmato nel gruppo di nodi. Per ulteriori informazioni su IMDS, consulta [Configurazione del servizio di metadati dell’istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html). Se hai implementato i ruoli IAM per gli account di servizio, assegna le autorizzazioni necessarie direttamente a tutti i Pod che richiedono l'accesso ai servizi. AWS In questo modo, nessun Pod del cluster richiede l'accesso a IMDS per altri motivi, come il recupero della regione corrente. AWS Quindi, puoi anche disabilitare l'accesso ai Pod che non utilizzano IMDSv2 la rete host. Per ulteriori informazioni, consulta [Limita l'accesso al profilo di istanza assegnato al nodo (worker)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

1. (Facoltativo) Nella pagina **Options (Opzioni)**, contrassegna con dei tag le risorse della pila. Scegli **Next (Successivo)**.

1. Nella pagina **Verifica**, esaminare le informazioni, confermare che la pila è in grado di creare risorse IAM, quindi scegliere **Aggiorna pila**.
**Nota**  
L'aggiornamento di ogni nodo nel cluster richiede diversi minuti. Attendi il completamento dell'aggiornamento di tutti i nodi prima di eseguire la procedura successiva.

1. Se il provider DNS del cluster è `kube-dns`, riduci orizzontalmente l’implementazione di `kube-dns` a una replica.

   ```
   kubectl scale deployments/kube-dns --replicas=1 -n kube-system
   ```

1. (Facoltativo) Se si sta utilizzando il [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) Kubernetes, dimensionare l'implementazione al numero di repliche desiderato.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
   ```

1. (Facoltativo) Verifica che si sta utilizzando la versione più recente del [plugin CNI di Amazon VPC per Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s). Potrebbe essere necessario aggiornare la versione del plugin CNI di Amazon VPC per Kubernetes per utilizzare i tipi di istanze supportati più recenti. Per ulteriori informazioni, consulta [Assegna IPs ai pod con Amazon VPC CNI](managing-vpc-cni.md).

# Semplifica la gestione dell’elaborazione con AWS Fargate
<a name="fargate"></a>

In questo argomento viene illustrato l’utilizzo di Amazon EKS per eseguire i pod Kubernetes su AWS Fargate. Fargate è una tecnologia che fornisce capacità di calcolo on demand e di dimensioni adeguate per i [container](https://aws.amazon.com/what-are-containers). Con Fargate, non devi effettuare personalmente il provisioning, la configurazione o il dimensionamento dei gruppi di macchine virtuali per eseguire i container. Non devi inoltre scegliere i tipi di server, decidere quando dimensionare i gruppi di nodi oppure ottimizzare l’impacchettamento dei cluster.

Puoi controllare quali pod sono avviati su Fargate e come vengono eseguiti con [profili Fargate](fargate-profile.md). I profili Fargate sono definiti come parte del cluster Amazon EKS. Amazon EKS integra Kubernetes con Fargate tramite l’utilizzo di controller creati da AWS utilizzando il modello upstream ed estensibile fornito da Kubernetes. Questi controller vengono eseguiti come parte del piano di controllo di Kubernetes gestito da Amazon EKS e sono responsabili della pianificazione dei pod Kubernetes nativo su Fargate. I controller Fargate includono un nuovo pianificazione che viene eseguito insieme al pianificatore di default di Kubernetes, oltre a diversi controller di ammissione mutanti e convalidanti. Quando avvii un pod che soddisfa i criteri per l’esecuzione su Fargate, i controller Fargate in esecuzione nel cluster riconoscono, aggiornano e pianificano il pod su Fargate.

Questo argomento descrive i diversi componenti di pod in esecuzione su Fargate, e illustra considerazioni speciali per l’utilizzo di Fargate con Amazon EKS.

## Considerazioni su AWS Fargate
<a name="fargate-considerations"></a>

Di seguito sono elencati alcuni punti da considerare sull’uso di Fargate in Amazon EKS.
+ Ogni pod in esecuzione su Fargate ha un proprio limite di calcolo. Non condividono il kernel sottostante, le risorse CPU, le risorse di memoria o l’interfaccia di rete elastica con un altro pod.
+ I Network Load Balancer e gli Application Load Balancer (ALB) possono essere utilizzati solo con Fargate con destinazioni IP. Per ulteriori informazioni, consulta [Creazione di un Network Load Balancer](network-load-balancing.md#network-load-balancer) e [Instradare il traffico di applicazioni e HTTP con Application Load Balancer](alb-ingress.md).
+ I servizi esposti Fargate vengono eseguiti solo in modalità IP di tipo destinazione e non in modalità IP del nodo. Il modo consigliato per verificare la connettività da un servizio in esecuzione su un nodo gestito e da un servizio in esecuzione su Fargate è quello di connettersi tramite il nome del servizio.
+ Nel momento in cui sono programmati per l’esecuzione su Fargate, i pod devono corrispondere a un profilo Fargate. I pod che non corrispondono a un profilo Fargate potrebbero rimanere bloccati nello stato `Pending`. Se esiste un profilo Fargate corrispondente, puoi eliminare i pod in sospeso creati per riprogrammarli su Fargate.
+ I Daemonset non sono supportati su Fargate. Se l’applicazione richiede un daemon, riconfigura quel daemon per essere eseguito nei pod come container sidecar.
+ I container privilegiati non sono supportati su Fargate.
+ I pod in esecuzione su Fargate non possono specificare `HostPort` o `HostNetwork` nel manifesto del pod.
+ Per i pod Fargate, il valore di default per il limite soft `nofile` e `nproc` è 1.024, mentre per il limite hard è 65.535.
+ Le GPU non sono attualmente disponibili su Fargate.
+ I pod in esecuzione su Fargate sono supportati solo su sottoreti private (con un accesso NAT gateway ai servizi AWS, ma senza routing diretto a un Gateway Internet), pertanto il VPC del cluster deve disporre di sottoreti private disponibili. Per i cluster senza accesso Internet in uscita, consulta [Implementazione di cluster privati con accesso limitato a Internet](private-clusters.md).
+ Puoi utilizzare [Adjust pod resources with Vertical Pod Autoscaler](vertical-pod-autoscaler.md) per impostare la dimensione corretta iniziale della CPU e la memoria per i Pod Fargate, quindi utilizza [Scale pod deployments with Horizontal Pod Autoscaler](horizontal-pod-autoscaler.md) per scalare quei Pod. Se desideri che il Vertical Pod Autoscaler ridistribuisca automaticamente i pod su Fargate con combinazioni di CPU e memoria più grandi, imposta la modalità per il Vertical Pod Autoscaler su `Auto` o `Recreate` r per garantire la corretta funzionalità. Per ulteriori informazioni, consulta la documentazione [Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start) su GitHub.
+ La risoluzione DNS e i nomi host DNS devono essere abilitati per il VPC. Per ulteriori informazioni, consulta [Visualizzazione e aggiornamento del supporto DNS per il VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating).
+ Amazon EKS Fargate aggiunge una difesa approfondita per le applicazioni Kubernetes isolando ogni pod all’interno di una macchina virtuale (VM). Questo limite VM impedisce l’accesso alle risorse basate su host utilizzate da altri pod in caso di evasione da un container, un metodo comune per attaccare le applicazioni containerizzate e ottenere l’accesso a risorse esterne al container.

  L’utilizzo di Amazon EKS non modifica le tue responsabilità ai sensi del [modello di responsabilità condivisa](security.md). È necessario considerare attentamente la configurazione dei controlli di sicurezza e gestione del cluster. Il modo più sicuro per isolare un’applicazione è sempre quello di eseguirla in un cluster separato.
+ I profili Fargate supportano la specificazione di sottoreti da blocchi CIDR secondari del VPC. È possibile specificare un blocco CIDR secondario. Ciò è necessario perché in una sottorete è disponibile un numero limitato di indirizzi IP. Di conseguenza, nel cluster puoi creare un numero limitato di pod. L’uso di sottoreti diverse per i pod ti consente di aumentare il numero di indirizzi IP disponibili. Per ulteriori informazioni, consulta [Aggiunta di blocchi CIDR IPv4 a un VPC.](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#vpc-resize) 
+ Il servizio di metadati di istanza (IMDS) Amazon EC2 non è disponibile per i pod distribuiti ai nodi Fargate. Se disponi di pod distribuiti in Fargate che necessitano di credenziali IAM, assegnali ai pod utilizzando i [ruoli IAM per gli account di servizio](iam-roles-for-service-accounts.md). Se i pod hanno bisogno di accedere ad altre informazioni disponibili tramite IMDS, devi eseguire la codifica fissa di queste informazioni nelle specifiche del pod. Ciò include la Regione AWS o la zona di disponibilità in cui viene implementato un pod.
+ Non puoi implementare i pod Fargate in AWS Outposts, AWS Wavelength o AWS nelle zone locali.
+ Periodicamente, Amazon EKS deve applicare patch ai Pod Fargate per garantire che siano sicuri. Gli aggiornamenti vengono effettuati in modo da avere il minor impatto possibile. Tuttavia, se i pod non vengono espulsi con successo, a volte è necessario eliminarli. Di seguito sono riportate le azioni che è possibile intraprendere per ridurre al minimo le interruzioni. Per ulteriori informazioni, consulta [Imposta azioni per gli eventi relativi all’applicazione di patch del sistema operativo AWS Fargate](fargate-pod-patching.md).
+ Il [plug-in CNI di Amazon VPC per Amazon EKS](https://github.com/aws/amazon-vpc-cni-plugins) è installato sui nodi Fargate. Non puoi utilizzare [Alternate CNI plugins for Amazon EKS clusters](alternate-cni-plugins.md) con i nodi Fargate.
+ Un pod in esecuzione su Fargate monta automaticamente un file system Amazon EFS senza bisogno della procedura di installazione manuale del driver. Non puoi utilizzare il provisioning dinamico dei volumi persistenti con nodi Fargate, ma puoi usare quello statico.
+ Amazon EKS non supporta Fargate Spot.
+ Non puoi montare volumi Amazon EBS sui pod Fargate.
+ Puoi eseguire il controller Amazon EBS CSI sui nodi Fargate, ma sul nodo Amazon EBS CSI DaemonSet può essere eseguito solo su istanze Amazon EC2.
+ Dopo che un [Kubernetes Job](https://kubernetes.io/docs/concepts/workloads/controllers/job/) è stato contrassegnato `Completed` o `Failed`, i pod creati normalmente continuano a esistere. Questo comportamento ti consente di visualizzare i tuoi log e risultati, ma con Fargate dovrai sostenere dei costi se non ripulisci il processo in seguito.

  Per eliminare automaticamente i pod correlati dopo il completamento o un errore di un processo, puoi specificare un periodo di tempo utilizzando il controller time-to-live (TTL). L’esempio seguente mostra la specifica di `.spec.ttlSecondsAfterFinished` nel manifesto del processo.

  ```
  apiVersion: batch/v1
  kind: Job
  metadata:
    name: busybox
  spec:
    template:
      spec:
        containers:
        - name: busybox
          image: busybox
          command: ["/bin/sh", "-c", "sleep 10"]
        restartPolicy: Never
    ttlSecondsAfterFinished: 60 # <-- TTL controller
  ```

## Tabella di confronto Fargate
<a name="_fargate_comparison_table"></a>


| Criteri |  AWS Fargate | 
| --- | --- | 
|  Si può implementare in [AWS Outposts](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html)   |  No  | 
|  Si può implementare in una [Zona locale AWS](local-zones.md)   |  No  | 
|  Può eseguire container che richiedono Windows  |  No  | 
|  Può eseguire container che richiedono Linux  |  Sì  | 
|  Può eseguire carichi di lavoro che richiedono il chip Inferentia  |  No  | 
|  Può eseguire carichi di lavoro che richiedono una GPU  |  No  | 
|  Può eseguire carichi di lavoro che richiedono processori Arm  |  No  | 
|  Può eseguire AWS [Bottlerocket](https://aws.amazon.com/bottlerocket/)   |  No  | 
|  I pod condividono un ambiente di runtime del kernel con altri pod  |  No: ogni pod ha un kernel dedicato  | 
|  I pod condividono risorse di CPU, memoria, archiviazione e rete con altri pod.  |  No: ogni pod dispone di risorse dedicate e può essere ridimensionato in modo indipendente per massimizzare l’utilizzo delle risorse.  | 
|  I pod possono utilizzare più hardware e memoria rispetto alle specifiche dei pod  |  No: il pod può essere comunque reimplementato utilizzando una vCPU e una configurazione di memoria più grandi.  | 
|  È necessario implementare e gestire le istanze Amazon EC2  |  No  | 
|  È necessario proteggere, mantenere e applicare patch al sistema operativo delle istanze Amazon EC2  |  No  | 
|  Può fornire argomenti di bootstrap all’implementazione di un nodo, come argomenti [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) aggiuntivi.  |  No  | 
|  Può assegnare indirizzi IP ai pod da un intervallo CIDR diverso rispetto all’indirizzo IP assegnato al nodo.  |  No  | 
|  Puoi eseguire SSH nel nodo  |  No: non esiste un sistema operativo host del nodo su cui eseguire il SSH.  | 
|  Puoi implementare un’AMI personalizzata nei nodi  |  No  | 
|  Può implementare una CNI personalizzata nei nodi  |  No  | 
|  É necessario aggiornare l’AMI del nodo per conto proprio  |  No  | 
|  È necessario aggiornare la versione del nodo Kubernetes per conto proprio  |  No: non sei tu a gestire i nodi.  | 
|  Può utilizzare lo spazio di archiviazione Amazon EBS con i pod  |  No  | 
|  Può utilizzare lo spazio di archiviazione di Amazon EFS con i pod  |   [Sì](efs-csi.md)   | 
|  Può utilizzare lo spazio di archiviazione Amazon FSx per Lustre con i pod  |  No  | 
|  Può utilizzare Network Load Balancer per i servizi  |  Sì, quando si utilizza [Create a network load balancer](network-load-balancing.md#network-load-balancer)   | 
|  I pod possono essere eseguiti in una sottorete pubblica  |  No  | 
|  Può assegnare diversi gruppi di sicurezza VPC a singoli pod  |  Sì  | 
|  Può eseguire Kubernetes DaemonSets  |  No  | 
|  Supporto `HostPort` e `HostNetwork` nel manifesto pod  |  No  | 
|   Disponibilità nelle regioni AWS  |   [Alcune regioni supportate da Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   | 
|  Può eseguire container su host dedicati Amazon EC2  |  No  | 
|  Prezzi  |  Costo di una singola configurazione di memoria Fargate e CPU. Ogni pod ha il rispettivo costo. Per ulteriori informazioni, consulta [Prezzi di Fargate AWS](https://aws.amazon.com/fargate/pricing/).  | 

# Inizia a usare AWS Fargate per il tuo cluster
<a name="fargate-getting-started"></a>

Questo argomento descrive come iniziare a eseguire Pods su AWS Fargate con il tuo cluster Amazon EKS.

Se limiti l'accesso all'endpoint pubblico del cluster utilizzando blocchi CIDR, consigliamo di abilitare anche l'accesso agli endpoint privati. In questo modo i pod Fargate possono comunicare con il cluster. Senza l'endpoint privato abilitato, i blocchi CIDR specificati per l'accesso pubblico devono includere le origini di uscita dal VPC. Per ulteriori informazioni, consulta [Endpoint del server API del cluster](cluster-endpoint.md).

**Prerequisito**  
Un cluster esistente. Se si dispone già di un cluster Amazon EKS, consultare la pagina [Nozioni di base su Amazon EKS](getting-started.md).

## Fase 1: assicurarsi che i nodi esistenti possano comunicare con i pod Fargate
<a name="fargate-gs-check-compatibility"></a>

Se si utilizza un nuovo cluster senza nodi o un cluster con solo gruppi di nodi gestiti (consultare [Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti](managed-node-groups.md)), è possibile passare a [Fase 2: creare un ruolo di esecuzione del pod Fargate](#fargate-sg-pod-execution-role).

Supponiamo di lavorare con un cluster esistente che dispone già di nodi associati. Assicurarsi che i pod su questi nodi possano comunicare liberamente con i pod in esecuzione su Fargate. I pod in esecuzione su Fargate vengono configurati automaticamente per utilizzare il gruppo di sicurezza del cluster per il cluster a cui sono associati. È necessario assicurarsi che eventuali i nodi esistenti nel cluster possano inviare e ricevere traffico da e verso il gruppo di sicurezza del cluster. I gruppi di nodi gestiti vengono configurati automaticamente per utilizzare anche il gruppo di sicurezza del cluster, quindi non è necessario modificarli o verificare questa compatibilità (consultare [Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti](managed-node-groups.md)).

Per i gruppi di nodi esistenti che sono stati creati con `eksctl` o i AWS CloudFormation modelli gestiti di Amazon EKS, puoi aggiungere manualmente il gruppo di sicurezza del cluster ai nodi. In alternativa, è possibile modificare il modello di avvio del gruppo Auto Scaling per il gruppo di nodi per collegare il gruppo di sicurezza cluster alle istanze. Per ulteriori informazioni, consultare [Changing an instance’s security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SG_Changing_Group_Membership) nella *Guida per l’utente di Amazon VPC*.

Puoi verificare la presenza di un gruppo di sicurezza per il Console di gestione AWS tuo cluster nella sezione **Rete** relativa al cluster. In alternativa, è possibile eseguire questa operazione utilizzando il seguente AWS comando CLI. Se utilizzi questo comando, sostituisci `<my-cluster>` con il nome del cluster.

```
aws eks describe-cluster --name <my-cluster> --query cluster.resourcesVpcConfig.clusterSecurityGroupId
```

## Fase 2: creare un ruolo di esecuzione del pod Fargate
<a name="fargate-sg-pod-execution-role"></a>

Quando il cluster crea Pod su AWS Fargate, i componenti che girano sull'infrastruttura Fargate devono effettuare chiamate AWS APIs per conto dell'utente. Il ruolo di esecuzione del pod Amazon EKS fornisce le autorizzazioni IAM per eseguire questa operazione. Per creare un ruolo di esecuzione di AWS Fargate Pod, vedere. [Ruolo IAM di esecuzione del pod di Amazon EKS](pod-execution-role.md)

**Nota**  
Se il cluster è stato creato con `eksctl` utilizzando l’opzione `--fargate`, dispone già di un ruolo di esecuzione del pod disponibile nella console IAM con il modello `eksctl-my-cluster-FargatePodExecutionRole-ABCDEFGHIJKL`. Allo stesso modo, se si utilizza `eksctl` per creare i profili Fargate, `eksctl` crea il ruolo di esecuzione del pod se non ne esiste già uno.

## Fase 3: creare un profilo Fargate per il cluster
<a name="fargate-gs-create-profile"></a>

Prima di poter pianificare i pod in esecuzione su Fargate nel cluster, sarà necessario definire un profilo Fargate che specifichi i pod che utilizzano Fargate al momento dell’avvio. Per ulteriori informazioni, consulta [Definisci quali pod utilizzano AWS Fargate durante l’avvio](fargate-profile.md).

**Nota**  
Se il cluster è stato creato con `eksctl` utilizzando l’opzione `--fargate`, allora un profilo Fargate è già stato creato per il cluster con selettori per tutti i pod nei namespace `kube-system` e `default`. Utilizza la procedura seguente per creare profili Fargate per gli altri namespace con cui desideri utilizzare Fargate.

È possibile creare un profilo Fargate utilizzando uno di questi due strumenti:
+  [`eksctl`](#eksctl_fargate_profile_create) 
+  [Console di gestione AWS](#console_fargate_profile_create) 

### `eksctl`
<a name="eksctl_fargate_profile_create"></a>

Questa procedura richiede `eksctl` versione `0.215.0` o successiva. È possibile verificare la versione con il comando seguente:

```
eksctl version
```

Per istruzioni sull'installazione o sull'aggiornamento di `eksctl`, consulta la sezione [Installation](https://eksctl.io/installation) nella documentazione di `eksctl`.

 **Per creare un profilo Fargate con `eksctl`** 

Crea il tuo profilo Fargate con il seguente comando `eksctl`, sostituendo ogni `<example value>` con i valori in tuo possesso. È necessario specificare un namespace. Tuttavia, l’opzione `--labels` non è obbligatoria.

```
eksctl create fargateprofile \
    --cluster <my-cluster> \
    --name <my-fargate-profile> \
    --namespace <my-kubernetes-namespace> \
    --labels <key=value>
```

È possibile utilizzare determinati caratteri jolly per `<my-kubernetes-namespace>` e etichette `<key=value>`. Per ulteriori informazioni, consulta [Wildcard del profilo di Fargate](fargate-profile.md#fargate-profile-wildcards).

### Console di gestione AWS
<a name="console_fargate_profile_create"></a>

 **Creazione di un profilo Fargate con Console di gestione AWS ** 

1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegli il cluster per cui creare un profilo Fargate.

1. Scegli la scheda **Calcolo**.

1. Nella sezione **Profili Fargate**, scegli **Aggiungi profilo Fargate**.

1. Nella pagina **Configura il profilo Fargate**, procedi come segue:

   1. In **Nome**, inserisci un nome per il profilo Fargate. Il nome deve essere univoco.

   1. Come **Ruolo di esecuzione pod**, scegliere il ruolo di esecuzione del pod da utilizzare con il profilo Fargate. Vengono visualizzati solo i ruoli IAM con il principale del servizio `eks-fargate-pods.amazonaws.com`. Se non vedi alcun ruolo nell’elenco, è necessario crearne uno. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione del pod di Amazon EKS](pod-execution-role.md).

   1. Modifica le **sottoreti** selezionate in base alle esigenze.
**Nota**  
Solo le sottoreti private sono supportate per i pod in esecuzione su Fargate.

   1. In **Tag**, puoi facoltativamente aggiungere tag al tuo profilo Fargate. Questi tag non si propagano ad altre risorse associate al profilo come i pod.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Configura selezione pod**, procedi come segue:

   1. In **Namespace**, inserisci un namespace che corrisponda ai pod.
      + È possibile utilizzare namespace specifici da abbinare, ad esempio `kube-system` o `default`.
      + È possibile utilizzare determinati caratteri jolly (ad esempio, `prod-*`) per abbinare più namespace (ad esempio, `prod-deployment` e `prod-test`). Per ulteriori informazioni, consulta [Wildcard del profilo di Fargate](fargate-profile.md#fargate-profile-wildcards).

   1. (Facoltativo) Aggiungere etichette Kubernetes al selettore. In particolare, aggiungerle al selettore con cui i pod nel namespace specificato devono corrispondere.
      + È possibile aggiungere l’etichetta `infrastructure: fargate` al selettore in modo che solo i pod nel namespace specificato che hanno anche l’etichetta Kubernetes `infrastructure: fargate` corrispondano al selettore.
      + È possibile utilizzare determinati caratteri jolly (ad esempio, `key?: value?`) per abbinare più namespace (ad esempio, `keya: valuea` e `keyb: valueb`). Per ulteriori informazioni, consulta [Wildcard del profilo di Fargate](fargate-profile.md#fargate-profile-wildcards).

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Rivedi e crea**, controlla le informazioni relative al profilo Fargate e scegli **Crea**.

## Fase 4: aggiornare CoreDNS
<a name="fargate-gs-coredns"></a>

Per impostazione predefinita, CoredNS è configurato per l'esecuzione sull' EC2 infrastruttura Amazon su cluster Amazon EKS. Se si desidera *solo* eseguire i pod su Fargate nel cluster, seguire la procedura riportata di seguito.

**Nota**  
Se è stato creato il cluster `eksctl` utilizzando l'opzione `--fargate` è possibile passare a [Fasi successive](#fargate-gs-next-steps).

1. Creare un profilo Fargate per CoreDNS con il seguente comando. Sostituiscilo `<my-cluster>` con il nome del cluster, `<111122223333>` con l'ID dell'account, `<AmazonEKSFargatePodExecutionRole>` con il nome del ruolo di esecuzione del Pod e `<000000000000000a>` `<000000000000000c>` con le sottoreti IDs private. `<000000000000000b>` Se non si dispone di un ruolo di esecuzione del pod, è necessario prima crearne uno (consultare [Fase 2: creare un ruolo di esecuzione del pod Fargate](#fargate-sg-pod-execution-role)).
**Importante**  
L’ARN del ruolo non può includere un [percorso](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names) diverso da `/`. Ad esempio, se il nome del ruolo è `development/apps/AmazonEKSFargatePodExecutionRole`, è necessario modificarlo in `AmazonEKSFargatePodExecutionRole` quando si specifica l'ARN per tale ruolo. Il formato dell'ARN del ruolo deve essere ` arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole>`.

   ```
   aws eks create-fargate-profile \
       --fargate-profile-name coredns \
       --cluster-name <my-cluster> \
       --pod-execution-role-arn arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole> \
       --selectors namespace=kube-system,labels={k8s-app=kube-dns} \
       --subnets subnet-<000000000000000a> subnet-<000000000000000b> subnet-<000000000000000c>
   ```

1. Attivare un rollout dell’implementazione `coredns`.

   ```
   kubectl rollout restart -n kube-system deployment coredns
   ```

## Fasi successive
<a name="fargate-gs-next-steps"></a>
+ Puoi avviare la migrazione delle applicazioni esistenti per l'esecuzione su Fargate con il seguente flusso di lavoro.

  1.  [Creazione di un profilo Fargate](fargate-profile.md#create-fargate-profile) che corrisponda al namespace Kubernetes e alle etichette Kubernetes dell’applicazione.

  1. Eliminare e creare nuovamente tutti i pod esistenti in modo che siano programmati su Fargate. Modificare `<namespace>` e `<deployment-type>` per aggiornare i pod specifici.

     ```
     kubectl rollout restart -n <namespace> deployment <deployment-type>
     ```
+ Implementare [Instradare il traffico di applicazioni e HTTP con Application Load Balancer](alb-ingress.md) per permettere l’esecuzione di oggetti Ingress per i pod in esecuzione su Fargate.
+ È possibile utilizzare [Regolazione delle risorse del pod con Vertical Pod Autoscaler](vertical-pod-autoscaler.md) per impostare la dimensione corretta iniziale della CPU e la memoria per i pod Fargate, quindi utilizzare il comando [Scalare le implementazioni dei pod con Horizontal Pod Autoscaler](horizontal-pod-autoscaler.md) per scalare tali pod. Se si desidera che il Vertical Pod Autoscaler implementi di nuovo automaticamente i pod su Fargate con combinazioni di CPU e memoria più grandi, impostare la modalità del Vertical Pod Autoscaler su `Auto` o `Recreate`. Ciò garantisce una corretta funzionalità. Per ulteriori informazioni, consulta la documentazione di [Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start) su GitHub.
+ Ora puoi impostare il collector [AWS Distro per OpenTelemetry](https://aws.amazon.com/otel) (ADOT) per il monitoraggio delle applicazioni seguendo [queste istruzioni](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-EKS-otel.html).

# Definisci quali pod utilizzano AWS Fargate durante l’avvio
<a name="fargate-profile"></a>

Prima di programmare i pod su Fargate nel cluster, devi definire almeno un profilo Fargate che specifichi i pod utilizzati da Fargate al momento dell’avvio.

Come amministratore, puoi utilizzare il profilo Fargate per dichiarare quali pod vengono eseguiti su Fargate. Puoi farlo attraverso i selettori del profilo. Puoi aggiungere fino a cinque selettori a ogni profilo. Ogni selettore deve contenere uno spazio dei nomi. Il selettore può includere anche etichette. Il campo etichetta è costituito da più coppie chiave-valore facoltative. I pod che corrispondono ai selettori sono programmati su Fargate. I pod vengono abbinati utilizzando uno spazio dei nomi e le etichette specificate nel selettore. Se un selettore di namespace è definito senza etichette, Amazon EKS tenterà di pianificare tutti i pod che vengono eseguiti in tale namespace su Fargate utilizzando il profilo. Se un pod da programmare corrisponde a uno dei selettori nel profilo Fargate, allora quel pod viene programmato su Fargate.

Se un pod corrisponde a più profili Fargate, puoi specificare quale profilo viene utilizzato dal pod aggiungendo la seguente etichetta Kubernetes alla specifica del pod: `eks.amazonaws.com/fargate-profile: my-fargate-profile`. Il pod deve corrispondere a un selettore in quel profilo per essere pianificato su Fargate. Le regole di affinità/anti-affinità Kubernetes non si applicano e non sono necessarie con i pod Fargate di Amazon EKS.

Quando crei un profilo Fargate, devi specificare il ruolo di esecuzione di un pod. Questo ruolo di esecuzione è per i componenti Amazon EKS che vengono eseguiti su infrastruttura Fargate utilizzando il profilo. Viene aggiunto al [controllo di accesso basato sul ruolo](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) del cluster di Kubernetes per l’autorizzazione. Ciò consente a `kubelet` in esecuzione sull’infrastruttura Fargate di registrarsi con il cluster Amazon EKS in modo che possa essere visualizzato nel cluster come nodo. Il ruolo di esecuzione del pod fornisce anche le autorizzazioni IAM per l’infrastruttura Fargate per consentire l’accesso in lettura ai repository di immagini di Amazon ECR. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione del pod di Amazon EKS](pod-execution-role.md).

I profili Fargate non possono essere modificati. Tuttavia, è possibile creare un nuovo profilo aggiornato per sostituire un profilo esistente e quindi eliminare l’originale.

**Nota**  
Qualsiasi pod in esecuzione utilizzando un profilo Fargate viene arrestato e messo in sospeso quando il profilo viene eliminato.

Se tutti i profili in un cluster sono nello stato `DELETING`, è necessario attendere che tale profilo Fargate finisca l’eliminazione prima di poter creare altri profili in tale cluster.

**Nota**  
Attualmente, Fargate non supporta [topologySpreadConstraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/) di Kubernetes.

Amazon EKS e Fargate cercano di implementare i pod su ciascuna delle sottoreti definite nel profilo Fargate. Tuttavia, potresti ritrovarti con una diffusione irregolare. Se devi avere una diffusione uniforme, usa due profili Fargate. Anche la diffusione è importante in scenari in cui desideri implementare due repliche e non vuoi tempi di inattività. È consigliabile che ogni profilo abbia una sola sottorete.

## Componenti del profilo Fargate
<a name="fargate-profile-components"></a>

Un profilo Fargate contiene i componenti elencati di seguito.

 **Ruolo di esecuzione del pod**   
Quando il cluster crea pod su AWS Fargate, il `kubelet` in esecuzione sull’infrastruttura di Fargate deve effettuare chiamate ad API AWS per tuo conto. Ad esempio, deve effettuare chiamate per estrarre le immagini del container da Amazon ECR. Il ruolo di esecuzione del pod Amazon EKS fornisce le autorizzazioni IAM per eseguire questa operazione.  
Quando crei un profilo Fargate, devi specificare il ruolo di esecuzione di un pod da utilizzare col tuo pod. Questo ruolo viene aggiunto al [controllo di accesso basato sul ruolo](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) del cluster di Kubernetes per l’autorizzazione. Ciò consente a `kubelet` in esecuzione sull’infrastruttura Fargate di registrarsi con il cluster Amazon EKS in modo che possa essere visualizzato nel cluster come nodo. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione del pod di Amazon EKS](pod-execution-role.md).

 **Sottoreti**   
Gli ID delle sottoreti per avviare i pod che utilizzano questo profilo. A questo momento, ai pod in esecuzione su Fargate non vengono assegnati indirizzi IP pubblici. Di conseguenza, in virtù di questo parametro, sono accettate solo le sottoreti private senza routing diretto a un gateway Internet.

 **Selettori**   
I selettori da abbinare ai pod per utilizzare questo profilo Fargate. È possibile specificare fino a cinque selettori in un profilo Fargate. I selettori hanno le seguenti componenti:  
+  **Spazio dei nomi**: specifica uno spazio dei nomi per un selettore. Il selettore corrisponde solo ai pod che vengono creati in questo namespace. Tuttavia, è possibile creare più selettori per rivolgersi a più spazi dei nomi.
+  **Etichette**: è possibile specificare facoltativamente le etichette Kubernetes che corrispondono al selettore. Il selettore corrisponde solo ai pod che hanno tutte le etichette specificate nel selettore.

## Wildcard del profilo di Fargate
<a name="fargate-profile-wildcards"></a>

Oltre ai caratteri consentiti da Kubernetes, puoi utilizzare `*` e `?` nei criteri di selezione per namespace, chiavi di etichette e valori di etichette:
+  `*` rappresenta nessuno, uno o più caratteri. Ad esempio, `prod*` può rappresentare `prod` e `prod-metrics`.
+  `?` rappresenta un singolo carattere (ad esempio, `value?` può rappresentare `valuea`). Tuttavia, non può rappresentare `value` e `value-a`, perché `?` può rappresentare solo un carattere.

Questi caratteri jolly possono essere usati in qualsiasi posizione e in combinazione (ad esempio, `prod*`, `*dev`, e `frontend*?`). Altri caratteri jolly e forme di corrispondenza del modello, come le espressioni regolari, non sono supportati.

Se sono presenti più profili corrispondenti per il namespace e le etichette nelle specifiche del pod, Fargate seleziona il profilo in base all’ordinamento alfanumerico e al nome del profilo. Ad esempio, se entrambi i profili A (con il nome `beta-workload`) e il profilo B (con il nome `prod-workload`) hanno dei selettori corrispondenti per i pod da avviare, Fargate sceglie il profilo A (`beta-workload`) per i pod. I pod hanno etichette con il profilo A sui pod (ad esempio, `eks.amazonaws.com/fargate-profile=beta-workload`).

Se desideri eseguire la migrazione dei pod Fargate esistenti su nuovi profili che utilizzano caratteri jolly, puoi farlo in due modi:
+ Crea un nuovo profilo con i selettori corrispondenti, quindi elimina i vecchi profili. I pod etichettati con vecchi profili vengono riprogrammati con nuovi profili corrispondenti.
+ Se desideri eseguire la migrazione dei carichi di lavoro ma non hai la certezza di quali siano le etichette Fargate su ogni pod Fargate, puoi utilizzare il seguente metodo. Crea un nuovo profilo con un nome che ordina in ordine alfanumerico per primo tra i profili dello stesso cluster. Quindi, ricicla i pod Fargate che devono essere migrati a nuovi profili.

## Creazione di un profilo Fargate
<a name="create-fargate-profile"></a>

Questa sezione descrive come creare un profilo Fargate. Devi inoltre aver creato un ruolo di esecuzione del pod da utilizzare per il profilo Fargate. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione del pod di Amazon EKS](pod-execution-role.md). I pod in esecuzione su Fargate sono supportati solo su sottoreti private con un accesso [NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) ai servizi AWS, ma senza una route diretta a un gateway Internet. In questo modo il VPC del cluster deve avere sottoreti private disponibili.

Puoi creare un profilo con ciò che segue:
+  [`eksctl`](#eksctl_create_a_fargate_profile) 
+  [Console di gestione AWS](#console_create_a_fargate_profile) 

## `eksctl`
<a name="eksctl_create_a_fargate_profile"></a>

 **Creazione di un profilo Fargate con `eksctl` ** 

Crea il tuo profilo Fargate con il seguente comando `eksctl`, sostituendo ogni valore di esempio con i valori in tuo possesso. Devi specificare un namespace. Tuttavia, l’opzione `--labels` non è obbligatoria.

```
eksctl create fargateprofile \
    --cluster my-cluster \
    --name my-fargate-profile \
    --namespace my-kubernetes-namespace \
    --labels key=value
```

È possibile utilizzare determinati caratteri jolly per `my-kubernetes-namespace` e etichette `key=value`. Per ulteriori informazioni, consulta [Wildcard del profilo di Fargate](#fargate-profile-wildcards).

## Console di gestione AWS
<a name="console_create_a_fargate_profile"></a>

 **Creazione di un profilo Fargate con Console di gestione AWS ** 

1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegli il cluster per cui creare un profilo Fargate.

1. Scegli la scheda **Calcolo**.

1. Nella sezione **Profili Fargate**, scegli **Aggiungi profilo Fargate**.

1. Nella pagina **Configure Fargate profile** (Configura profilo Fargate), procedere come segue:

   1. In **Nome**, inserisci un nome univoco per il profilo Fargate, ad esempio `my-profile`.

   1. Per il **ruolo di esecuzione del pod**, scegli il ruolo di esecuzione del pod da utilizzare con il profilo Fargate. Vengono visualizzati solo i ruoli IAM con il principale del servizio `eks-fargate-pods.amazonaws.com`. Se non vedi alcun ruolo nell’elenco, è necessario crearne uno. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione del pod di Amazon EKS](pod-execution-role.md).

   1. Modifica le **sottoreti** selezionate in base alle esigenze.
**Nota**  
Solo le sottoreti private sono supportate per i pod in esecuzione su Fargate.

   1. In **Tag**, puoi facoltativamente aggiungere tag al tuo profilo Fargate. Questi tag non si propagano ad altre risorse associate al profilo, ad esempio i suoi pod.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Configura selezione pod**, procedi come segue:

   1. In **Namespace**, inserisci uno spazio dei nomi che corrisponda ai pod.
      + È possibile utilizzare spazi dei nomi specifici da abbinare, ad esempio `kube-system` o `default`.
      + È possibile utilizzare determinati caratteri jolly (ad esempio, `prod-*`) per abbinare più spazi dei nomi (ad esempio, `prod-deployment` e `prod-test`). Per ulteriori informazioni, consulta [Wildcard del profilo di Fargate](#fargate-profile-wildcards).

   1. (Facoltativo) Aggiungere etichette Kubernetes al selettore. In particolare, aggiungile al selettore a cui devono corrispondere i pod nel namespace specificato.
      + Puoi aggiungere l’etichetta `infrastructure: fargate` al selettore in modo che solo i pod nel namespace specificato che hanno anche l’etichetta Kubernetes `infrastructure: fargate` corrispondano al selettore.
      + È possibile utilizzare determinati caratteri jolly (ad esempio, `key?: value?`) per abbinare più spazi dei nomi (ad esempio, `keya: valuea` e `keyb: valueb`). Per ulteriori informazioni, consulta [Wildcard del profilo di Fargate](#fargate-profile-wildcards).

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Rivedi e crea**, controlla le informazioni relative al profilo Fargate e scegli **Crea**.

# Eliminare un profilo Fargate
<a name="delete-fargate-profile"></a>

Questo argomento descrive come eliminare un profilo Fargate. Quando si elimina un profilo Fargate, eventuali pod pianificati su Fargate con tale profilo vengono eliminati. Se tali pod corrispondono a un altro profilo Fargate, vengono pianificati su Fargate con quel profilo. Se non corrispondono più a nessun profilo Fargate, non saranno pianificati su Fargate e potrebbero rimanere in sospeso.

Solo un profilo Fargate in un cluster alla volta può essere nello stato `DELETING`. Devi attendere il completamento dell'eliminazione di un profilo Fargate prima di poter eliminare altri profili nel cluster.

Ѐ possibile eliminare un profilo con uno qualsiasi dei seguenti strumenti:
+  [`eksctl`](#eksctl_delete_a_fargate_profile) 
+  [Console di gestione AWS](#console_delete_a_fargate_profile) 
+  [CLI AWS](#awscli_delete_a_fargate_profile) 

## `eksctl`
<a name="eksctl_delete_a_fargate_profile"></a>

 **Eliminare un profilo Fargate con `eksctl`** 

Utilizza il comando seguente per eliminare un profilo da un cluster. Sostituire ogni *valore di esempio* con i propri valori.

```
eksctl delete fargateprofile  --name my-profile --cluster my-cluster
```

## Console di gestione AWS
<a name="console_delete_a_fargate_profile"></a>

 **Eliminare un profilo Fargate con Console di gestione AWS** 

1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Nel pannello di navigazione a sinistra, seleziona **Cluster**. Nell'elenco dei cluster, scegli il cluster da cui desideri eliminare il profilo Fargate.

1. Scegli la scheda **Calcolo**.

1. Scegli il profilo Fargate da eliminare e quindi **Elimina**.

1. Nella pagina **Elimina profilo Fargate**, digita il nome del profilo e scegli **Elimina**.

## CLI AWS
<a name="awscli_delete_a_fargate_profile"></a>

 **Eliminare un profilo Fargate con AWS CLI** 

Utilizza il comando seguente per eliminare un profilo da un cluster. Sostituire ogni *valore di esempio* con i propri valori.

```
aws eks delete-fargate-profile --fargate-profile-name my-profile --cluster-name my-cluster
```

# Comprendere i dettagli di configurazione dei pod di Fargate
<a name="fargate-pod-configuration"></a>

Questa sezione descrive alcuni dei dettagli di configurazione dei pod unici per l’esecuzione dei pod Kubernetes su AWS Fargate.

## Memoria e CPU del pod
<a name="fargate-cpu-and-memory"></a>

Kubernetes ti consente di definire le richieste, una quantità minima di risorse vCPU e di memoria allocate a ciascun container in un pod. I pod sono programmati da Kubernetes per garantire che almeno le risorse richieste per ciascun pod siano disponibili nella risorsa di calcolo. Per ulteriori informazioni, consulta [Gestione risorse di calcolo per container](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) nella documentazione su Kubernetes.

**Nota**  
Poiché Amazon EKS Fargate esegue solo un pod per nodo, lo scenario di espulsione dei pod in caso di meno risorse non si verifica. Tutti i pod Amazon EKS Fargate funzionano con priorità garantita, quindi la CPU e la memoria richieste devono essere uguali al limite per tutti i container. Per ulteriori informazioni, consulta [Gestire la qualità di servizio per i pod](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/) nella documentazione di Kubernetes.

Quando i pod sono programmati su Fargate, le prenotazioni di vCPU e memoria all’interno della specifica del pod determinano la quantità di CPU e memoria per effettuare il provisioning per il pod.
+ La richiesta massima di qualsiasi container Init viene utilizzata per determinare i requisiti di memoria e vCPU della richiesta Init.
+ Le richieste per tutti i container con esecuzione prolungata vengono aggiunte per determinare i requisiti di memoria e vCPU della richiesta con esecuzione prolungata.
+ Il valore maggiore tra i due valori sopra indicati viene scelto per la richiesta di vCPU e memoria da utilizzare per il pod.
+ Fargate aggiunge 256 MB alla prenotazione di memoria di ogni pod per i componenti Kubernetes richiesti (`kubelet`, `kube-proxy` e `containerd`).

Fargate arrotonda alla configurazione di calcolo mostrata di seguito che corrisponde più strettamente alla somma delle richieste di vCPU e di memoria, al fine di garantire che i pod abbiano sempre le risorse necessarie per la loro esecuzione.

Se non specifichi una combinazione di vCPU e memoria, viene utilizzata la combinazione più piccola disponibile (.25 vCPU e 0,5 GB di memoria).

La tabella seguente mostra le combinazioni di vCPU e memoria disponibili per i pod in esecuzione su Fargate.


| Valore vCPU | Valore memoria | 
| --- | --- | 
|  .25 vCPU  |  0,5 GB, 1 GB, 2 GB  | 
|  .5 vCPU  |  1 GB, 2 GB, 3 GB, 4 GB  | 
|  1 vCPU  |  2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB  | 
|  2 vCPU  |  Tra 4 GB e 16 GB in incrementi di 1 GB  | 
|  4 vCPU  |  Tra 8 GB e 30 GB in incrementi di 1 GB  | 
|  8 vCPU  |  Tra 16 GB e 60 GB in incrementi di 4 GB  | 
|  16 vCPU  |  Tra 32 GB e 120 GB in incrementi di 8 GB  | 

La memoria aggiuntiva riservata ai componenti Kubernetes può causare un’attività Fargate con più vCPUs di quelle richieste per il provisioning. Ad esempio, una richiesta per 1 vCPU e 8 GB di memoria avrà 256 MB aggiunti alla richiesta di memoria e fornirà un’attività Fargate di 2 vCPU e 9 GB di memoria, poiché non è disponibile alcuna attività con 1 vCPU e 9 GB di memoria.

Non vi è alcuna correlazione tra la dimensione del pod in esecuzione su Fargate e quella del nodo riportata da Kubernetes con `kubectl get nodes`. La dimensione del nodo riportata è spesso maggiore della capacità del pod. Puoi verificare la capacità del pod utilizzando il comando seguente. Sostituisci *default* con il namespace del pod e *pod-name* con il nome dello stesso.

```
kubectl describe pod --namespace default pod-name
```

Di seguito viene riportato un output di esempio:

```
[...]
annotations:
    CapacityProvisioned: 0.25vCPU 0.5GB
[...]
```

L’annotazione `CapacityProvisioned` rappresenta la capacità del pod applicata e determina il costo del pod in esecuzione su Fargate. Per informazioni sui prezzi di queste configurazioni di calcolo, vedi [Prezzi Fargate AWS](https://aws.amazon.com/fargate/pricing/).

## Archiviazione in Fargate
<a name="fargate-storage"></a>

Un pod in esecuzione su Fargate monta automaticamente un file system Amazon EFS senza bisogno della procedura di installazione manuale del driver. Non puoi utilizzare il provisioning dinamico dei volumi persistenti con nodi Fargate, ma puoi usare quello statico. Per ulteriori informazioni, consulta [Driver CSI per Amazon EFS](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/README.md) su GitHub.

Una volta fornito, ciascun pod in esecuzione su Fargate riceve uno storage temporaneo predefinito di 20 GiB. Questo tipo di archiviazione viene eliminato dopo che un pod si ferma. Per i nuovi pod avviati su Fargate, la crittografia del volume di archiviazione temporanea è abilitata per impostazione predefinita. L’archiviazione del pod effimero viene crittografata con un algoritmo di crittografia AES-256 utilizzando chiavi gestite da Fargate AWS.

**Nota**  
Lo storage utilizzabile predefinito per i pod Amazon EKS che funzionano su Fargate sono inferiori a 20 GiB. Questo perché parte dello spazio viene utilizzato da `kubelet` e altri moduli Kubernetes che vengono caricati all’interno del pod.

Puoi aumentare la quantità totale di storage temporaneo fino a un massimo di 175 GiB. Per configurare la dimensione con Kubernetes, specifica le richieste della risorsa `ephemeral-storage` per ogni container in un pod. Quando Kubernetes pianifica i pod, garantisce che la somma delle richieste di risorse per ciascun pod sia inferiore alla capacità dell’attività Fargate. Per ulteriori informazioni, consulta [Gestione delle risorse per pod e container](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) nella documentazione di Kubernetes.

Amazon EKS Fargate fornisce un maggiore spazio di archiviazione temporaneo di quello richiesto ai fini dell’utilizzo del sistema. Ad esempio, una richiesta di 100 GiB fornirà un’attività Fargate con 115 GiB di storage temporaneo.

# Imposta azioni per gli eventi relativi all’applicazione di patch del sistema operativo AWS Fargate
<a name="fargate-pod-patching"></a>

Amazon EKS applica periodicamente delle patch al sistema operativo per i nodi AWS Fargate al fine di garantirne la sicurezza. Come parte del processo di applicazione delle patch, ricicliamo i nodi per installare le patch del sistema operativo. Gli aggiornamenti vengono effettuati in modo da avere il minore impatto possibile sui servizi. Tuttavia, se i pod non vengono espulsi con successo, a volte è necessario eliminarli. Di seguito sono riportate le azioni che è possibile intraprendere per ridurre al minimo le potenziali interruzioni:
+ Imposta i budget di interruzione dei pod (PDB) appropriati per limitare il numero di pod inattivi.
+ Crea regole di Amazon EventBridge per gestire le espulsioni non riuscite prima che i pod vengano eliminati.
+ Riavvia manualmente i pod interessati prima della data di espulsione indicata nella notifica ricevuta.
+ Crea una configurazione di notifica in Notifiche utente di AWS.

Amazon EKS lavora a stretto contatto con la community di Kubernetes per rendere disponibili le correzioni dei bug e le patch di sicurezza il più rapidamente possibile. L’avvio di tutti i pod Fargate avviene con la versione più recente della patch di Kubernetes, disponibile da Amazon EKS per la versione di Kubernetes del cluster. Se disponi di un pod con una patch di una versione precedente, Amazon EKS potrebbe riciclarlo per aggiornarlo alla versione più recente. Ciò consente di applicare ai pod gli aggiornamenti per la sicurezza più recenti, in modo da ridurre i rischi nel caso in cui si verifichi una problematica di tipo [Common Vulnerabilities and Exposures](https://cve.mitre.org/) (CVE).

Quando il sistema operativo AWS Fargate viene aggiornato, Amazon EKS ti invia una notifica che include le risorse interessate e la data delle prossime espulsioni dei pod. Se la data di espulsione fornita è scomoda, hai la possibilità di riavviare manualmente i pod interessati prima della data di espulsione indicata nella notifica. Tutti i pod creati prima della data di ricezione della notifica sono soggetti a espulsione. Per ulteriori istruzioni su come riavviare manualmente i pod, consulta [Kubernetes Documentation](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_rollout/kubectl_rollout_restart).

Per limitare il numero di pod inattivi durante il riciclo degli stessi, puoi impostare i budget di interruzione dei pod (PDB). Con questa opzione è possibile specificare la disponibilità minima in base ai requisiti di ciascuna applicazione e consentire, allo stesso tempo, l’esecuzione di aggiornamenti. La disponibilità minima del PDB deve essere inferiore al 100%. Per ulteriori informazioni, consulta [Specifying a Disruption Budget for your Application](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) nella documentazione di Kubernetes.

Amazon EKS utilizza l’[API di espulsione](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/#eviction-api) per interrompere in modo sicuro il pod rispettando i budget di interruzione dei pod impostati per l’applicazione. I pod vengono espulsi dalla zona di disponibilità per ridurre al minimo l’impatto. Se l’espulsione ha esito positivo, il nuovo pod riceve la patch più recente e non sono richieste ulteriori operazioni.

Se l’espulsione di un pod ha esito negativo, Amazon EKS invia al tuo account un evento con dettagli relativi al pod in cui si è verificato l’errore. È possibile intraprendere alcune azioni in merito al messaggio prima del periodo di interruzione programmato, che varia in base all’urgenza della patch. Quando è il momento, Amazon EKS proverà a espellere nuovamente i pod. Questa volta, tuttavia, se l’espulsione ha esito negativo non viene inviato un nuovo evento Se l’espulsione continua a non riuscire, i pod esistenti verranno eliminati periodicamente in modo che i nuovi pod possano disporre della patch più recente.

L’esempio seguente mostra un evento ricevuto in caso di espulsione del pod che non riesce. Il messaggio contiene dettagli sul cluster, il nome del pod, il namespace del pod, il profilo Fargate e il periodo di interruzione pianificato.

```
{
    "version": "0",
    "id": "12345678-90ab-cdef-0123-4567890abcde",
    "detail-type": "EKS Fargate Pod Scheduled Termination",
    "source": "aws.eks",
    "account": "111122223333",
    "time": "2021-06-27T12:52:44Z",
    "region": "region-code",
    "resources": [
        "default/my-database-deployment"
    ],
    "detail": {
        "clusterName": "my-cluster",
        "fargateProfileName": "my-fargate-profile",
        "podName": "my-pod-name",
        "podNamespace": "default",
        "evictErrorMessage": "Cannot evict pod as it would violate the pod's disruption budget",
        "scheduledTerminationTime": "2021-06-30T12:52:44.832Z[UTC]"
    }
}
```

L’associazione di molteplici PDB a un singolo pod può causare un evento di errore di espulsione. Questo evento restituisce il messaggio di errore seguente.

```
"evictErrorMessage": "This pod has multiple PodDisruptionBudget, which the eviction subresource does not support",
```

È possibile creare un’azione desiderata in base a questo evento. Ad esempio, puoi modificare il budget di interruzione dei pod (PDB) per controllare il modo in cui i pod vengono espulsi. Più specificamente, supponi di iniziare con un PDB che specifica la percentuale di destinazione dei pod disponibili. Prima che i pod vengano terminati in modo forzato durante un aggiornamento, puoi regolare il PDB su una percentuale di pod differente. Per ricevere questo evento, devi creare una regola di Amazon EventBridge nell’account AWS e nella Regione AWS a cui appartiene il cluster. La regola deve utilizzare il **modello personalizzato** seguente. Per ulteriori informazioni, consulta la sezione [Creazione di regole Amazon EventBridge che reagiscono agli eventi](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) nella *Guida per l’utente di Amazon EventBridge*.

```
{
  "source": ["aws.eks"],
  "detail-type": ["EKS Fargate Pod Scheduled Termination"]
}
```

L’evento può essere configurato per acquisire un obiettivo adeguato impostato dall’utente. Per un elenco completo delle destinazioni disponibili, consulta [Destinazioni di Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) nella *Guida per l’utente di Amazon EventBridge*. Inoltre puoi creare una configurazione di notifica in Notifiche utente AWS. Quando usi Console di gestione AWS per creare la notifica, sotto la voce **Regole degli eventi** scegli **Elastic Kubernetes Service (EKS)** per il **Nome di servizio AWS** e **Arresto programmato di EKS Fargate pod** per il **Tipo di evento**. Per ulteriori informazioni, consulta [Guida introduttiva alle Notifiche utente AWS](https://docs.aws.amazon.com/notifications/latest/userguide/getting-started.html) nella Guida per l’utente delle Notifiche utente AWS.

Consulta [Domande frequenti: Avviso di espulsione di un Fargate Pod](https://repost.aws/knowledge-center/fargate-pod-eviction-notice) in *AWS re:Post* per le domande frequenti riguardo alle espulsioni dei pod EKS.

# Raccogli le AWS metriche dell'app Fargate e dell'utilizzo
<a name="monitoring-fargate-usage"></a>

Puoi raccogliere metriche di sistema e metriche di CloudWatch utilizzo per AWS Fargate.

## Parametri di applicazione
<a name="fargate-application-metrics"></a>

Per le applicazioni in esecuzione su Amazon EKS e AWS Fargate, puoi utilizzare AWS Distro for OpenTelemetry (ADOT). ADOT ti consente di raccogliere i parametri di sistema e inviarli ai dashboard di Container Insights. CloudWatch Per iniziare a usare ADOT per le applicazioni in esecuzione su Fargate, [consultate CloudWatch Using Container Insights AWS with Distro OpenTelemetry](https://aws-otel.github.io/docs/getting-started/container-insights) for nella documentazione ADOT.

## Parametri di utilizzo
<a name="fargate-usage-metrics"></a>

Puoi utilizzare le metriche di CloudWatch utilizzo per fornire visibilità sull'utilizzo delle risorse da parte del tuo account. Utilizza queste metriche per visualizzare l'utilizzo corrente del servizio su CloudWatch grafici e dashboard.

 AWS Le metriche di utilizzo di Fargate corrispondono alle AWS quote di servizio. È possibile configurare gli allarmi che avvisano quando l'uso si avvicina a una quota di servizio. Per ulteriori informazioni sulle quote di servizio per Fargate, consulta [Visualizzazione e gestione di quote di servizio di Amazon EKS e Fargate](service-quotas.md).

 AWS Fargate pubblica le seguenti metriche nel namespace. ` AWS/Usage`


| Metrica | Description | 
| --- | --- | 
|   `ResourceCount`   |  Il numero totale delle risorse specificate in esecuzione nell'account. La risorsa è definita dalle dimensioni associate attraverso il parametro.  | 

Le seguenti dimensioni vengono utilizzate per perfezionare le metriche di utilizzo pubblicate da AWS Fargate.


| Dimensione | Description | 
| --- | --- | 
|   `Service`   |  Il nome del AWS servizio che contiene la risorsa. Per le metriche di utilizzo di AWS Fargate, il valore per questa dimensione è. `Fargate`  | 
|   `Type`   |  Il tipo di entità che viene segnalato. Attualmente, l'unico valore valido per le metriche di utilizzo di AWS Fargate è. `Resource`  | 
|   `Resource`   |  Il tipo di risorsa in esecuzione. Attualmente, AWS Fargate restituisce informazioni sull'utilizzo di Fargate On-Demand. Il valore della risorsa per l'utilizzo on demand di Fargate è `OnDemand`. [NOTA] ==== L’utilizzo di Fargate On-Demand combina i pod Amazon EKS utilizzando Fargate, le attività Amazon ECS che utilizzano il tipo di avvio di Fargate e le attività Amazon ECS che usano il provider di capacità `FARGATE`. ====  | 
|   `Class`   |  La classe della risorsa monitorata. Attualmente, AWS Fargate non utilizza la dimensione classe.  | 

### Creazione di un CloudWatch allarme per monitorare le metriche di utilizzo delle risorse di Fargate
<a name="service-quota-alarm"></a>

 AWS Fargate fornisce metriche di CloudWatch utilizzo che corrispondono alle quote di AWS servizio per l'utilizzo delle risorse Fargate On-Demand. Nella console Service Quotas (Quote di Servizio) è possibile visualizzare l'utilizzo in un grafico. È inoltre possibile configurare gli allarmi che avvisano quando l'uso si avvicina a una quota di servizio. Per ulteriori informazioni, consulta [Raccogli le AWS metriche dell'app Fargate e dell'utilizzo](#monitoring-fargate-usage).

Utilizzate i seguenti passaggi per creare un CloudWatch allarme basato sulle metriche di utilizzo delle risorse di Fargate.

1. Apri la console Service Quotas all'indirizzo. https://console.aws.amazon.com/servicequotas/

1. Nel riquadro di navigazione a sinistra, scegli ** AWS servizi**.

1. Dall'elenco dei ** AWS servizi**, cerca e seleziona ** AWS Fargate**.

1. Nell'elenco **Service Quotas**, seleziona la quota di utilizzo Fargate per cui desideri creare un allarme.

1. Nella sezione CloudWatch Allarmi Amazon, scegli **Crea**.

1. Per **Soglia di allarme**, scegli la percentuale del valore della quota applicata che desideri impostare come valore per l'allarme.

1. Per **Nome allarme**, immetti un nome per l'allarme e quindi scegli **Crea**.

# Avviare la registrazione di log AWS Fargate per il cluster
<a name="fargate-logging"></a>

Amazon EKS su Fargate offre un router di registro integrato basato su Fluent Bit. Ciò significa che non viene eseguito esplicitamente un container Fluent Bit come sidecar, ma è Amazon a eseguirlo. Tutto quello che devi fare è configurare il router di log. La configurazione avviene attraverso un `ConfigMap` dedicato che deve soddisfare i seguenti criteri:
+ Deve essere denominato `aws-logging` 
+ Creato in uno spazio dei nomi dedicato denominato `aws-observability` 
+ Non può contenere più di 5.300 caratteri.

Una volta creato `ConfigMap`, Amazon EKS su Fargate lo rileva in automatico e lo utilizza per configurare il router di log. Fargate utilizza una versione di AWS per Fluent Bit, una distribuzione upstream conforme di Fluent Bit gestita da AWS. Per ulteriori informazioni, consultare [AWS per Fluent Bit](https://github.com/aws/aws-for-fluent-bit) su GitHub.

Il router di log consente di utilizzare la vasta gamma di servizi AWS per l'analisi e per l'archiviazione dei log. È possibile trasmettere i registri da Fargate direttamente ad Amazon CloudWatch, un servizio OpenSearch di Amazon. È possibile trasmettere i log anche a destinazioni come [Amazon S3](https://aws.amazon.com/s3/) e [flusso di dati Amazon Kinesis](https://aws.amazon.com/kinesis/data-streams/), così come a strumenti partner tramite [Amazon Data Firehose](https://aws.amazon.com/kinesis/data-firehose/).
+ Un profilo Fargate esistente che specifichi un namespace Kubernetes esistente in cui si implementano i pod Fargate. Per ulteriori informazioni, consulta [Fase 3: creare un profilo Fargate per il cluster](fargate-getting-started.md#fargate-gs-create-profile).
+ Un ruolo di esecuzione del pod Fargate esistente. Per ulteriori informazioni, consulta [Fase 2: creare un ruolo di esecuzione del pod Fargate](fargate-getting-started.md#fargate-sg-pod-execution-role).

## Configurazione del router di log
<a name="fargate-logging-log-router-configuration"></a>

**Importante**  
Affinché i log vengano pubblicati correttamente, deve essere possibile accedere alla rete dal VPC in cui si trova il cluster alla destinazione dei log. Ciò riguarda principalmente gli utenti che personalizzano le regole di uscita per il VPC. Per ulteriori informazioni sull’utilizzo di CloudWatch, consultare la pagina [Using CloudWatch Logs with interface VPC endpoints](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html) della *Guida per l’utente di Amazon CloudWatch Logs*.

Nelle fasi seguenti, sostituire ogni *valore di esempio* con i propri valori.

1. Creare uno spazio dei nomi Kubernetes dedicato denominato `aws-observability`.

   1. Salva nel tuo computer i seguenti contenuti in un file denominato `aws-observability-namespace.yaml`. Il valore per `name` deve essere `aws-observability` e l'etichetta `aws-observability: enabled` è obbligatoria.

      ```
      kind: Namespace
      apiVersion: v1
      metadata:
        name: aws-observability
        labels:
          aws-observability: enabled
      ```

   1. Crea lo spazio dei nomi.

      ```
      kubectl apply -f aws-observability-namespace.yaml
      ```

1. Crea una `ConfigMap` con valore dei dati `Fluent Conf` per spedire i log del container verso una destinazione. Fluent Conf è Fluent Bit, un linguaggio di configurazione del processore di log veloce e leggero che viene utilizzato per instradare i log del container verso una destinazione di log selezionata. Per ulteriori informazioni, consultare [File di configurazione](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/classic-mode/configuration-file) nella documentazione di Fluent Bit.
**Importante**  
In una `Fluent Conf` tipica, le sezioni principali incluse sono `Service`, `Input`, `Filter` e `Output`. Tuttavia, il router di log di Fargate accetta solo:  
Le sezioni `Filter` e `Output`.
Una sezione `Parser`.
Se fornisci altre sezioni, queste verranno rifiutate.

   Il router di log Fargate gestisce le sezioni `Service` e `Input`. Ha la sezione `Input` seguente, che non può essere modificata e non è necessaria in `ConfigMap`. Tuttavia, è possibile ricavarne informazioni, ad esempio il limite del buffer di memoria e il tag applicato per i log.

   ```
   [INPUT]
       Name tail
       Buffer_Max_Size 66KB
       DB /var/log/flb_kube.db
       Mem_Buf_Limit 45MB
       Path /var/log/containers/*.log
       Read_From_Head On
       Refresh_Interval 10
       Rotate_Wait 30
       Skip_Long_Lines On
       Tag kube.*
   ```

   Quando crei la `ConfigMap`, ricorda le seguenti regole utilizzate da Fargate per convalidare i campi:
   +  `[FILTER]`, `[OUTPUT]`, e `[PARSER]` dovrebbero essere specificati sotto ogni chiave corrispondente. Ad esempio: `[FILTER]` deve essere in `filters.conf`. È possibile avere uno o più `[FILTER]` in `filters.conf`. Anche le sezioni `[OUTPUT]` e `[PARSER]` dovrebbero essere specificate sotto le chiavi corrispondenti. Specificando più sezioni `[OUTPUT]`, è possibile instradare i registritha a destinazioni diverse contemporaneamente.
   + Fargate convalida le chiavi richieste per ogni sezione. `Name` e `match` sono necessari per ogni `[FILTER]` e `[OUTPUT]`. `Name` e `format` sono necessari per ogni `[PARSER]`. Le chiavi non fanno distinzione tra maiuscole e minuscole.
   + Variabili di ambiente come `${ENV_VAR}` non sono ammesse in `ConfigMap`.
   + La rientranza deve essere la stessa sia per la direttiva che per la coppia chiave-valore all'interno di ogni `filters.conf`, `output.conf` e `parsers.conf`. Le coppie chiave-valore devono essere rientranti piuttosto che direttive.
   + Fargate effettua la convalida in base ai seguenti filtri supportati: `grep`, `parser`, `record_modifier`, `rewrite_tag`, `throttle`, `nest`, `modify` e `kubernetes`.
   + Fargate effettua la convalida in base al seguente output supportato: `es`, `firehose`, `kinesis_firehose`, `cloudwatch`, `cloudwatch_logs`, e `kinesis`.
   + In `ConfigMap` deve essere fornito almeno un plugin `Output` supportato per abilitare la registrazione di log. `Filter` e `Parser` non sono necessari per abilitarla.

     È possibile anche eseguire Fluent Bit su Amazon EC2 utilizzando la configurazione desiderata per risolvere eventuali problemi derivanti dalla convalida. Crea il `ConfigMap` utilizzando uno degli esempi seguenti.
**Importante**  
La registrazione di log Fargate di Amazon EKS non supporta la configurazione dinamica di `ConfigMap`. Eventuali modifiche a `ConfigMap` vengono applicate solo ai nuovi pod. Le modifiche non vengono applicate ai pod esistenti.

     Crea un `ConfigMap` utilizzando l'esempio per la destinazione di log desiderata.
**Nota**  
Puoi anche utilizzare Flusso di dati Amazon Kinesis come destinazione dei log. Se utilizzi Flusso di dati Kinesis, assicurati che al ruolo di esecuzione del pod sia stata concessa l'autorizzazione `kinesis:PutRecords`. Per ulteriori informazioni, consulta la sezione [Permissions](https://docs.fluentbit.io/manual/pipeline/outputs/kinesis#permissions) relativa a flusso di dati Amazon Kinesis in *Fluent Bit: Official Manual*.  
**Example**  

------
#### [ CloudWatch ]

   Quando utilizzi CloudWatch, hai a disposizione due opzioni di output:
   +  [Un plug-in di output scritto in C](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/cloudwatch) 
   +  [Un plug-in di output scritto in Golang](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit) 

   Nell'esempio seguente viene illustrato come utilizzare il plug-in `cloudwatch_logs` per inviare i log a CloudWatch.

   1. Salva i contenuti seguenti in un file denominato `aws-logging-cloudwatch-configmap.yaml`. Sostituire *region-code* con la Regione AWS in cui si trova il cluster. I parametri in `[OUTPUT]` sono obbligatori.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        flb_log_cw: "false"  # Set to true to ship Fluent Bit process logs to CloudWatch.
        filters.conf: |
          [FILTER]
              Name parser
              Match *
              Key_name log
              Parser crio
          [FILTER]
              Name kubernetes
              Match kube.*
              Merge_Log On
              Keep_Log Off
              Buffer_Size 0
              Kube_Meta_Cache_TTL 300s
        output.conf: |
          [OUTPUT]
              Name cloudwatch_logs
              Match   kube.*
              region region-code
              log_group_name my-logs
              log_stream_prefix from-fluent-bit-
              log_retention_days 60
              auto_create_group true
        parsers.conf: |
          [PARSER]
              Name crio
              Format Regex
              Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$
              Time_Key    time
              Time_Format %Y-%m-%dT%H:%M:%S.%L%z
      ```

   1. Applica il manifesto al cluster.

      ```
      kubectl apply -f aws-logging-cloudwatch-configmap.yaml
      ```

------
#### [ Amazon OpenSearch Service ]

   Per inviare log al Servizio OpenSearch di Amazon, è possibile utilizzare l’output [es](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/elasticsearch), ovvero un plugin scritto in C. L’esempio seguente spiega come utilizzare il plugin per inviare log a OpenSearch.

   1. Salva i contenuti seguenti in un file denominato `aws-logging-opensearch-configmap.yaml`. Sostituire ogni *valore di esempio* con i propri valori.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        output.conf: |
          [OUTPUT]
            Name  es
            Match *
            Host  search-example-gjxdcilagiprbglqn42jsty66y.region-code.es.amazonaws.com
            Port  443
            Index example
            Type  example_type
            AWS_Auth On
            AWS_Region region-code
            tls   On
      ```

   1. Applica il manifesto al cluster.

      ```
      kubectl apply -f aws-logging-opensearch-configmap.yaml
      ```

------
#### [ Firehose ]

   Sono disponibili due opzioni di output per l’invio di log a Firehose:
   +  [kinesis\$1firehose](https://docs.fluentbit.io/manual/pipeline/outputs/firehose): un plugin di output scritto in C.
   +  [firehose](https://github.com/aws/amazon-kinesis-firehose-for-fluent-bit): un plugin di output scritto in Golang.

     Nell’esempio seguente viene illustrato come utilizzare il plugin `kinesis_firehose` per inviare log a Firehose.

     1. Salva i contenuti seguenti in un file denominato `aws-logging-firehose-configmap.yaml`. Sostituire *region-code* con la Regione AWS in cui si trova il cluster.

        ```
        kind: ConfigMap
        apiVersion: v1
        metadata:
          name: aws-logging
          namespace: aws-observability
        data:
          output.conf: |
            [OUTPUT]
             Name  kinesis_firehose
             Match *
             region region-code
             delivery_stream my-stream-firehose
        ```

     1. Applica il manifesto al cluster.

        ```
        kubectl apply -f aws-logging-firehose-configmap.yaml
        ```

------

1. Configurare le autorizzazioni per il ruolo di esecuzione del pod Fargate per inviare log alla destinazione.

   1. Eseguire il download della policy IAM per la destinazione sul computer.  
**Example**  

------
#### [ CloudWatch ]

      Esegui il download della policy IAM CloudWatch sul computer. Puoi anche [consultare la policy](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json) su GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json
      ```

------
#### [ Amazon OpenSearch Service ]

      Esegui il download della policy IAM OpenSearch per il computer. Il [documento di policy](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json) può essere visualizzato su GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json
      ```

      Assicurati che il controllo di accesso di OpenSearch Dashboard sia configurato correttamente. `all_access role` in OpenSearch Dashboards deve avere il ruolo di esecuzione del pod Fargate e il ruolo IAM mappati. La stessa mappatura deve essere eseguita per il ruolo `security_manager`. È possibile aggiungere i mapping precedenti selezionando `Menu`, `Security`, `Roles`, quindi selezionare i rispettivi ruoli. Per ulteriori informazioni, consulta [Come posso risolvere i problemi relativi ai File di log CloudWatch in modo che vengano trasmessi al mio dominio Amazon ES?](https://aws.amazon.com/tr/premiumsupport/knowledge-center/es-troubleshoot-cloudwatch-logs/).

------
#### [ Firehose ]

      Eseguire il download della policy IAM Firehose sul computer Puoi anche [consultare la policy](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json) su GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json
      ```

------

   1. Creare una policy IAM utilizzando il file della policy scaricato nella fase precedente.

      ```
      aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.json
      ```

   1. Collega la policy IAM al ruolo di esecuzione del pod specificato per il profilo Fargate con il seguente comando. Sostituire *111122223333* con l'ID account. Sostituire *AmazonEKSFargatePodExecutionRole* con il ruolo di esecuzione del pod (per ulteriori informazioni, consultare [Fase 2: creare un ruolo di esecuzione del pod Fargate](fargate-getting-started.md#fargate-sg-pod-execution-role)).

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::111122223333:policy/eks-fargate-logging-policy \
        --role-name AmazonEKSFargatePodExecutionRole
      ```

### Supporto filtri Kubernetes
<a name="fargate-logging-kubernetes-filter"></a>

Il filtro Fluent Bit Kubernetes consente di aggiungere metadati Kubernetes ai file di log. Per ulteriori informazioni sul filtro, consultare [Kubernetes](https://docs.fluentbit.io/manual/pipeline/filters/kubernetes) nella documentazione di Fluent Bit. È possibile applicare un filtro utilizzando l'endpoint del server API.

```
filters.conf: |
    [FILTER]
        Name             kubernetes
        Match            kube.*
        Merge_Log           On
        Buffer_Size         0
        Kube_Meta_Cache_TTL 300s
```

**Importante**  
 `Kube_URL`, `Kube_CA_File`, `Kube_Token_Command` e `Kube_Token_File` sono parametri di configurazione di proprietà del servizio e non devono essere specificati. Amazon EKS Fargate popola questi valori.
 `Kube_Meta_Cache_TTL` è il momento in cui Fluent Bit attende il momento in cui comunica al server API i metadati più recenti. Se `Kube_Meta_Cache_TTL` non è specificato, Amazon EKS Fargate aggiunge un valore predefinito di 30 minuti per ridurre il carico sul server API.

### Per inviare log di processo Fluent Bit all’account
<a name="ship-fluent-bit-process-logs"></a>

È possibile inviare i log di processo Fluent Bit ad Amazon CloudWatch utilizzando la seguente `ConfigMap`. La spedizione dei log di processo Fluent Bit a CloudWatch richiede costi aggiuntivi di acquisizione e archiviazione dei log. Sostituire *region-code* con la Regione AWS in cui si trova il cluster.

```
kind: ConfigMap
apiVersion: v1
metadata:
  name: aws-logging
  namespace: aws-observability
  labels:
data:
  # Configuration files: server, input, filters and output
  # ======================================================
  flb_log_cw: "true"  # Ships Fluent Bit process logs to CloudWatch.

  output.conf: |
    [OUTPUT]
        Name cloudwatch
        Match kube.*
        region region-code
        log_group_name fluent-bit-cloudwatch
        log_stream_prefix from-fluent-bit-
        auto_create_group true
```

I log si trovano nella stessa Regione AWS in cui si trova il cluster. Il nome del gruppo di log è ` my-cluster-fluent-bit-logs` e il nome del flusso di log Fluent Bit è `fluent-bit-podname-pod-namespace `.

**Nota**  
I log dei processi vengono spediti solo quando il processo Fluent Bit viene avviato correttamente. Se si verifica un errore durante l'avvio di Fluent Bit, i log di processo vengono mancati. È possibile spedire i log di processo solo a CloudWatch.
Per eseguire il debug della spedizione dei log di processo sull’account, è possibile applicare la `ConfigMap` precedente per ottenere i log di processo. Il mancato avvio di Fluent Bit solitamente è dovuto al fatto che la `ConfigMap` non viene analizzata o accettata da Fluent Bit durante l'avvio.

### Per interrompere l’invio dei log di processo Fluent Bit
<a name="stop-fluent-bit-process-logs"></a>

La spedizione dei log di processo Fluent Bit a CloudWatch richiede costi aggiuntivi di acquisizione e archiviazione dei log. Per escludere i registri dei processii in una configurazione `ConfigMap` esistente, effettua le seguenti operazioni.

1. Individuare il gruppo di log CloudWatch creato automaticamente per i log di processo Fluent Bit del cluster Amazon EKS dopo aver abilitato la registrazione di log Fargate. Segue il formato ` my-cluster-fluent-bit-logs`.

1. Eliminare i flussi di log CloudWatch esistenti creati per i log di processo di ogni pod nel gruppo di log di CloudWatch.

1. Modifica la `ConfigMap` e imposta `flb_log_cw: "false"`.

1. Riavviare tutti i pod esistenti nel cluster.

## Applicazione di prova
<a name="fargate-logging-test-application"></a>

1. Implementare un pod di esempio.

   1. Salva nel tuo computer i seguenti contenuti in un file denominato `sample-app.yaml`.

      ```
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sample-app
        namespace: same-namespace-as-your-fargate-profile
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
              - name: nginx
                image: nginx:latest
                ports:
                  - name: http
                    containerPort: 80
      ```

   1. Applica il file manifesto al cluster.

      ```
      kubectl apply -f sample-app.yaml
      ```

1. Visualizza i log NGINX utilizzando la/le destinazione/i configurata/e nel `ConfigMap`.

## Considerazioni sulle dimensioni
<a name="fargate-logging-size-considerations"></a>

Si consiglia di pianificare fino a 50 MB di memoria per il router di log. Se prevedi che l'applicazione generi registri a velocità di trasmissione effettiva molto elevata, dovresti pianificarla fino a 100 MB.

## Risoluzione dei problemi
<a name="fargate-logging-troubleshooting"></a>

Per confermare se la funzionalità di registrazione di log è abilitata o disabilitata per qualche motivo, ad esempio per una `ConfigMap` non valida, e perché questa non è valida, controllare gli eventi pod con `kubectl describe pod pod-name `. L’output potrebbe includere eventi pod che chiariscono se la registrazione di log è abilitata o meno, ad esempio l’output di esempio seguente.

```
[...]
Annotations:          CapacityProvisioned: 0.25vCPU 0.5GB
                      Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND
[...]
Events:
  Type     Reason           Age        From                                                           Message
  ----     ------           ----       ----                                                           -------
  Warning  LoggingDisabled  <unknown>  fargate-scheduler                                              Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found
```

Gli eventi di pod sono effimeri, con un periodo di tempo che dipende dalle impostazioni. È inoltre possibile visualizzare le annotazioni di un pod tramite `kubectl describe pod pod-name `. Nell’annotazione del pod, è possibile sapere se, e per quale motivo, la funzionalità di registrazione di log è abilitata o disabilitata.

# Scelta di una tipologia di istanza di nodo Amazon EC2 ottimale
<a name="choosing-instance-type"></a>

Amazon EC2 offre un’ampia gamma di tipi di istanze per i nodi worker. Ogni tipo di istanza mette a disposizione diverse capacità di calcolo, memoria, archiviazione e rete ed è raggruppata in una famiglia di istanze in base a tali capacità. Per un elenco, consultare [Available instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes) nella *Guida per l’utente di Amazon EC2 per le istanze Linux.* Amazon EKS rilascia diverse varianti di Amazon EC2 AMIs per abilitare il supporto. Per assicurarti che il tipo di istanza selezionato sia compatibile con Amazon EKS, prendi in considerazione gli elementi seguenti:
+ Al momento AMIs non tutti gli Amazon EKS supportano la `mac` famiglia.
+ Amazon EKS Arm e non accelerato AMIs non supportano le famiglie`g3`, `g4``inf`, e`p`.
+ Amazon EKS accelerato AMIs non supporta le `t` famiglie `a``c`,`hpc`,`m`, e.
+ Per le istanze basate su ARM, Amazon Linux 2023 (AL2023) supporta solo i tipi di istanza che utilizzano processori Graviton2 o versioni successive. AL2023 non supporta istanze. `A1`

Quando scegli i tipi di istanza supportati da Amazon EKS, considera le caratteristiche seguenti per ogni tipo.

 **Numero di istanze in un gruppo di nodi**   
In generale, istanze in numero ridotto e di grandi dimensioni sono più convenienti, specialmente disponi di molti DaemonSet. Ogni istanza richiede chiamate API al server API, per cui maggiore è il numero di istanze di cui si dispone, maggiore è il carico sul server API.

 **Sistema operativo**   
Esamina i tipi di istanza supportati per [Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html), [Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html) e [Bottlerocket](https://aws.amazon.com/bottlerocket/faqs/). Prima di creare istanze Windows, consultare [Deploy Windows nodes on EKS clusters](windows-support.md).

 **Architettura hardware**   
Hai bisogno di x86 o ARM? Prima di distribuire istanze Arm, esamina Arm [Amazon Linux ottimizzato per Amazon EKS](eks-optimized-ami.md#arm-ami). AMIs Hai bisogno di istanze costruite sul sistema Nitro ([Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances) o [Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#ec2-nitro-instances)) o che hanno una elaborazione [Accelerata](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/accelerated-computing-instances.html)? Se hai bisogno di funzionalità accelerate, puoi usare Linux solo con Amazon EKS.

 **Numero massimo di pod**   
Dal momento che a ogni Pod viene assegnato il proprio indirizzo IP, il numero di indirizzi IP supportati da un tipo di istanza è un fattore importante per determinare il numero di pod che possono essere eseguiti sull’istanza. Per determinare manualmente il numero di Pod supportati da un tipo di istanza, consultare .  
AWS I tipi di istanze [Nitro System](https://aws.amazon.com/ec2/nitro/) supportano opzionalmente un numero significativamente maggiore di indirizzi IP rispetto ai tipi di istanze non Nitro System. Tuttavia, non tutti gli indirizzi IP assegnati ad un’istanza sono disponibili per i Pod. Per assegnare un numero significativamente maggiore di indirizzi IP alle istanze, è necessario che la versione `1.9.0` o successiva del componente aggiuntivo CNI di Amazon VPC sia installata nel cluster e che sia configurata in modo appropriato. Per ulteriori informazioni, consulta [Assegnazione di più indirizzi IP ai nodi Amazon EKS con prefissi](cni-increase-ip-addresses.md). Per assegnare il maggior numero di indirizzi IP alle istanze, è necessario che la versione `1.10.1` o successiva del componente aggiuntivo CNI di Amazon VPC sia installata nel cluster e che si implementi il cluster con la famiglia `IPv6`.

 **Famiglia IP**   
Per la creazione di un cluster tramite la famiglia `IPv4`, puoi scegliere qualsiasi tipo di istanza supportata, il che consente al cluster di assegnare indirizzi `IPv4` privati ai Pod e servizi. Se tuttavia desideri impiegare la famiglia `IPv6` per il cluster, utilizza i tipi di istanza [AWS Nitro System](https://aws.amazon.com/ec2/nitro/) o bare metal. Per le istanze Windows è supportato solo `IPv4`. Il cluster deve eseguire la versione `1.10.1` o successiva del componente aggiuntivo CNI di Amazon VPC. Per ulteriori informazioni sull’utilizzo di `IPv6`, consultare [Scopri IPv6 gli indirizzi di cluster, pod e servizi](cni-ipv6.md).

 **Versione del componente aggiuntivo CNI di Amazon VPC in uso**   
La versione più recente del [plug-in CNI di Amazon VPC per Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) supporta i [seguenti tipi di istanza](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go). Per sfruttare i tipi più recenti di istanza supportati, potrebbe essere necessario aggiornare la versione del componente aggiuntivo CNI di Amazon VPC. Per ulteriori informazioni, consulta [Assegna IPs ai pod con Amazon VPC CNI](managing-vpc-cni.md). L’ultima versione supporta le funzionalità più recenti per l’utilizzo con Amazon EKS. Le versioni precedenti non supportano tutte le funzionalità. Puoi visualizzare le funzionalità supportate dalle diverse versioni in [Changelog](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/CHANGELOG.md) su GitHub.

 **La Regione AWS in cui stai creando i nodi**   
Non tutti i tipi di istanze sono disponibili in tutte le AWS regioni.

 **Se stai usando gruppi di sicurezza per i Pod**   
Se stai usando gruppi di sicurezza per i Pod, sono supportati solo tipi specifici di istanza. Per ulteriori informazioni, consulta [Assegnazione dei gruppi di sicurezza ai singoli pod](security-groups-for-pods.md).

## Come viene determinato MaxPods
<a name="max-pods-precedence"></a>

Il `maxPods` valore finale applicato a un nodo dipende da diversi componenti che interagiscono secondo uno specifico ordine di precedenza. La comprensione di questo ordine consente di evitare comportamenti imprevisti durante la personalizzazione`maxPods`.

 **Ordine di precedenza (dal più alto al più basso):** 

1.  **Applicazione di gruppi di nodi gestiti**: quando utilizzi un gruppo di nodi gestiti senza un'[AMI personalizzata](launch-templates.md#launch-template-custom-ami), Amazon EKS impone `maxPods` un limite ai dati utente del nodo. Per i casi con meno di 30 vCPUs, il limite è. `110` Per i casi con più di 30 vCPUs, il limite è. `250` Questo valore ha la precedenza su qualsiasi altra `maxPods` configurazione, tra cui. `maxPodsExpression`

1.  **`maxPods`configurazione kubelet** — Se si imposta `maxPods` direttamente nella configurazione kubelet (ad esempio, tramite un modello di avvio con un'AMI personalizzata), questo valore ha la precedenza su. `maxPodsExpression`

1.  **nodeadm `maxPodsExpression`** — Se usi [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/examples/#defining-a-max-pods-expression](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/examples/#defining-a-max-pods-expression)nel tuo`NodeConfig`, nodeadm valuta l'espressione da calcolare. `maxPods` Questo è efficace solo quando il valore non è già impostato da una fonte con precedenza più alta.

1.  **Calcolo predefinito basato sull'ENI**: se non è impostato nessun altro valore, l'AMI calcola in `maxPods` base al numero di interfacce di rete elastiche e indirizzi IP supportati dal tipo di istanza. È equivalente alla formula. `(number of ENIs × (IPs per ENI − 1)) + 2` Gli `+ 2` account per Amazon VPC CNI sono in `kube-proxy` esecuzione su ogni nodo, che non utilizzano un indirizzo IP Pod.

**Importante**  
Se utilizzi un gruppo di nodi gestiti e lo imposti `maxPodsExpression` nel tuo`NodeConfig`, l'applicazione del gruppo di nodi gestiti ha la precedenza sulla tua espressione. Per utilizzare un `maxPods` valore personalizzato con i gruppi di nodi gestiti, devi specificare un'AMI personalizzata nel modello di avvio e impostarla `maxPods` direttamente. Per ulteriori informazioni, consulta [Personalizzazione dei nodi gestiti con modelli di avvio](launch-templates.md).

 **Gruppi di nodi gestiti e nodi autogestiti** 

Con i gruppi di nodi gestiti (senza un'AMI personalizzata), Amazon EKS inserisce il `maxPods` valore nei dati utente bootstrap del nodo. Ciò significa che:
+ Il `maxPods` valore è sempre limitato `110` o `250` dipende dalla dimensione dell'istanza.
+ Tutto `maxPodsExpression` ciò che configuri viene sovrascritto da questo valore iniettato.
+ Per utilizzare un `maxPods` valore diverso, specifica un AMI personalizzato nel modello di avvio e `--use-max-pods false` `--kubelet-extra-args '--max-pods=my-value'` passalo allo `bootstrap.sh` script. Per alcuni esempi, consulta [Personalizzazione dei nodi gestiti con modelli di avvio](launch-templates.md).

Con i nodi autogestiti, hai il pieno controllo del processo di bootstrap. Puoi utilizzarlo `maxPodsExpression` nel tuo `NodeConfig` o passare `--max-pods` direttamente a. `bootstrap.sh`

## Considerazioni per la modalità automatica di EKS
<a name="_considerations_for_eks_auto_mode"></a>

modalità automatica di EKS limita il numero di pod sui nodi al valore inferiore tra:
+ Tappo rigido da 110 pod
+ Il risultato del calcolo del numero massimo di pod descritto sopra.

# Creazione di nodi con immagini ottimizzate preconfigurate
<a name="eks-optimized-amis"></a>

Puoi implementare i nodi con versioni preconfigurate delle [Amazon Machine Image](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) (AMI) ottimizzate per Amazon EKS o con AMI personalizzate quando utilizzi i gruppi di nodi gestiti o i nodi autogestiti. Se stai eseguendo nodi ibridi, consulta [Preparazione del sistema operativo per i nodi ibridi](hybrid-nodes-os.md). Per ulteriori informazioni sui vari tipi di AMI ottimizzate per Amazon EKS, consulta il relativo argomento di seguito. Per istruzioni su come creare un'AMI personalizzata, consulta [Crea un'AMI Amazon Linux personalizzata ottimizzata per EKS](eks-ami-build-scripts.md).

Con Amazon EKS Auto Mode, EKS gestisce l’istanza EC2, inclusa la selezione e l’aggiornamento dell’AMI.

**Topics**
+ [Guida a EKS AL2 e funzionalità AL2 di transizione accelerata AMIs](eks-ami-deprecation-faqs.md)
+ [Crea nodi con Amazon Linux ottimizzato AMIs](eks-optimized-ami.md)
+ [Crea nodi con Bottlerocket ottimizzato AMIs](eks-optimized-ami-bottlerocket.md)
+ [Creare nodi con AMI ottimizzate per Ubuntu Linux](eks-partner-amis.md)
+ [Crea nodi con Windows ottimizzato AMIs](eks-optimized-windows-ami.md)

# Guida a EKS AL2 e funzionalità AL2 di transizione accelerata AMIs
<a name="eks-ami-deprecation-faqs"></a>

**avvertimento**  
Amazon EKS ha smesso di pubblicare Amazon Linux 2 (AL2) ottimizzato per EKS il 26 AMIs novembre 2025. AL2023 e Bottlerocket based for AMIs Amazon EKS sono disponibili per tutte le versioni di Kubernetes supportate, inclusa la 1.33 e successive.

 AWS terminerà il supporto per EKS AL2 ottimizzato e AL2 accelerato a partire dal 26 novembre 2025. AMIs Sebbene sia possibile continuare a utilizzare EKS AL2 AMIs dopo la data end-of-support (EOS) (26 novembre 2025), EKS non rilascerà più nuove versioni o aggiornamenti di Kubernetes AL2 AMIs, incluse versioni minori, patch e correzioni di bug dopo tale data. Ti consigliamo di eseguire l'aggiornamento ad Amazon Linux 2023 (AL2023) o Bottlerocket: AMIs
+ AL2023 consente un secure-by-default approccio con politiche di sicurezza preconfigurate, SELinux in modalità permissiva, modalità IMDSv2 solo abilitata per impostazione predefinita, tempi di avvio ottimizzati e una migliore gestione dei pacchetti per una maggiore sicurezza e prestazioni, ideale per infrastrutture che richiedono personalizzazioni significative come l'accesso diretto a livello di sistema operativo o modifiche estese dei nodi. [Per ulteriori informazioni, consulta AL2 023 o visualizza le nostre linee guida dettagliate sulla migrazione all'indirizzo. FAQs](https://aws.amazon.com/linux/amazon-linux-2023/faqs/) [Aggiornamento da Amazon Linux 2 ad Amazon Linux 2023](al2023.md)
+ Bottlerocket offre una sicurezza avanzata, tempi di avvio più rapidi e una superficie di attacco minore per una maggiore efficienza grazie al design progettato appositamente e ottimizzato per i container, adatto ad approcci nativi per i container con personalizzazioni minime dei nodi. Per saperne di più, consulta [Bottlerocket FAQs](https://aws.amazon.com/bottlerocket/faqs/) o visualizza la nostra guida dettagliata alla migrazione all'indirizzo. [Crea nodi con Bottlerocket ottimizzato AMIs](eks-optimized-ami-bottlerocket.md)

In alternativa, puoi farlo [Crea un'AMI Amazon Linux personalizzata ottimizzata per EKS](eks-ami-build-scripts.md) fino alla data EOS (26 novembre 2025). Inoltre, puoi creare un'AMI personalizzata con un'istanza di base Amazon Linux 2 fino alla data EOS di Amazon Linux 2 (30 giugno 2026).

## Migrazione e supporto FAQs
<a name="_migration_and_support_faqs"></a>

### Come posso migrare dalla mia AL2 AMI AL2 a una 023?
<a name="_how_do_i_migrate_from_my_al2_to_an_al2023_ami"></a>

Ti consigliamo di creare e implementare un piano di migrazione che includa test approfonditi del carico di lavoro delle applicazioni e procedure di rollback documentate, quindi segui le step-by-step istruzioni contenute nella documentazione ufficiale di EKS per l'aggiornamento [da Amazon Linux 2 ad Amazon Linux 2023](https://docs.aws.amazon.com/eks/latest/userguide/al2023.html).

### Posso creare un' AL2 AMI personalizzata dopo la data EKS end-of-support (EOS) per EKS optimized AL2 AMIs?
<a name="_can_i_build_a_custom_al2_ami_past_the_eks_end_of_support_eos_date_for_eks_optimized_al2_amis"></a>

Sebbene consigliamo di passare a EKS ottimizzati AMIs per AL2 023 o Bottlerocket supportati e pubblicati ufficialmente, puoi creare EKS personalizzati AL2 ottimizzati e AL2 accelerati AMIs fino alla data AL2 AMI EOS (26 novembre 2025). In alternativa, è possibile creare un’AMI personalizzata con un’istanza base di Amazon Linux 2 fino alla data di fine del supporto di Amazon Linux 2 (30 giugno 2026). Per step-by-step istruzioni su come creare un'AMI personalizzata AL2 ottimizzata e AL2 accelerata per EKS, [consulta Creare un'AMI Amazon Linux personalizzata nella documentazione ufficiale](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-build-scripts.html) di EKS.

### La policy di supporto delle versioni Kubernetes di EKS si applica alle distribuzioni Amazon Linux?
<a name="_does_the_eks_kubernetes_version_support_policy_apply_to_amazon_linux_distributions"></a>

No. La data EOS per l' AL2ottimizzazione e l' AL2accelerazione di EKS AMIs è indipendente dalle tempistiche di supporto standard ed estese per le versioni Kubernetes di EKS. È necessario migrare a AL2 023 o Bottlerocket anche se si utilizza il supporto esteso EKS.

### In che modo il passaggio da cgroupv1 a cgroupv2 influisce sulla migrazione?
<a name="_how_does_the_shift_from_cgroupv1_to_cgroupv2_affect_my_migration"></a>

La [community di Kubernetes](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/4569-cgroup-v1-maintenance-mode/README.md) ha spostato il `cgroupv1` supporto (utilizzato da AL2) in modalità di manutenzione, il che significa che non verranno aggiunte nuove funzionalità e verranno fornite solo le correzioni di sicurezza e i principali bug. Per adottare `cgroupv2` in Kubernetes, è necessario garantire la compatibilità tra sistema operativo, kernel, runtime dei container e componenti Kubernetes. Ciò richiede una distribuzione Linux abilitata `cgroupv2` per impostazione predefinita, come AL2 023, Bottlerocket, Red Hat Enterprise Linux (RHEL) 9\$1, Ubuntu 22.04\$1 o Debian 11\$1. Tali distribuzioni vengono fornite con versioni del kernel pari o superiori alla 5.8, che è il requisito minimo per il supporto di `cgroupv2` in Kubernetes. Per ulteriori informazioni, consultare la pagina [About cgroup v2](https://kubernetes.io/docs/concepts/architecture/cgroups/).

### Cosa devo fare se ho bisogno di Neuron nella mia AL2 AMI personalizzata?
<a name="_what_do_i_do_if_i_need_neuron_in_my_custom_al2_ami"></a>

Non è possibile eseguire le applicazioni complete basate su Neuron in modo nativo su una base. AL2 AMIs Per utilizzare AWS Neuron su un' AL2 AMI, devi containerizzare le tue applicazioni utilizzando un contenitore supportato da Neuron con una distribuzione non AL2 Linux (ad esempio, Ubuntu 22.04, Amazon Linux 2023, ecc.) e quindi distribuire quei contenitori su un'AMI AL2 basata su cui è installato il Neuron Driver (). `aws-neuronx-dkms`

### Devo passare a un'istanza base di Amazon Linux 2 nuda dopo la data EKS AL2 AMI EOS (26 novembre 2025)?
<a name="_should_i_switch_to_a_bare_amazon_linux_2_base_instance_after_the_eks_al2_ami_eos_date_november_26_2025"></a>

Il passaggio a un'istanza base di Amazon Linux 2 non include le ottimizzazioni specifiche, le configurazioni di runtime dei container e le personalizzazioni fornite dalla versione ufficiale di EKS AL2, ottimizzata e accelerata. AL2 AMIs Invece, se devi continuare a utilizzare una soluzione AL2 basata, ti consigliamo di creare un'AMI personalizzata utilizzando le ricette AMI EKS su [Crea un'AMI Amazon Linux personalizzata ottimizzata per EKS](eks-ami-build-scripts.md) o [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami). Ciò garantisce la compatibilità con i carichi di lavoro esistenti e include aggiornamenti del AL2 kernel fino alla data EOS di Amazon Linux 2 (30 giugno 2026).

### Quando si crea un' AL2 AMI personalizzata utilizzando l' GitHub archivio EKS AMI dopo la data EKS AL2 AMI EOS (26 novembre 2025), quale supporto è disponibile per i pacchetti di repository come amzn2-core e amzn2extra-docker?
<a name="_when_building_a_custom_al2_ami_using_the_eks_ami_github_repository_after_the_eks_al2_ami_eos_date_november_26_2025_what_support_is_available_for_packages_from_repositories_like_amzn2_core_and_amzn2extra_docker"></a>

La ricetta di AMI EKS disponibile alla pagina [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami) estrae pacchetti tramite YUM da software Amazon Linux 2 standard, come [amzn2-core](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) e [amzn2extra-docker](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html). Dopo la data EKS AL2 AMI EOS (26 novembre 2025), questo software continuerà a essere supportato fino alla data più ampia di Amazon Linux 2 EOS (30 giugno 2026). Tenere presente che durante questo periodo il supporto è limitato agli aggiornamenti del kernel, il che significa che sarà necessario gestire e applicare manualmente altri aggiornamenti dei pacchetti, patch di sicurezza e qualsiasi dipendenza non relativa al kernel per mantenere la sicurezza e la compatibilità.

### Perché le applicazioni Java che utilizzano versioni precedenti di JDK8 Amazon EKS con AL2 023 potrebbero presentare eccezioni di esaurimento della memoria (OOM) e riavvii dei pod, e come è possibile risolvere questo problema?
<a name="_why_might_java_applications_using_older_versions_of_jdk8_on_amazon_eks_with_al2023_experience_out_of_memory_oom_exceptions_and_pod_restarts_and_how_can_this_be_resolved"></a>

Quando vengono eseguite su nodi Amazon EKS con AL2 023, le applicazioni Java che si basavano su versioni precedenti di JDK 8 `jdk8u372` possono causare eccezioni OOM e riavvii dei pod perché la JVM non è compatibile con. `cgroupv2` Questo problema deriva in particolare dall’incapacità della JVM di rilevare i limiti di memoria dei container utilizzando `cgroupv2`, l’impostazione predefinita in Amazon Linux 2023. Di conseguenza, basa l’allocazione della memoria heap sulla memoria totale del nodo anziché sul limite definito dal pod. La causa del problema è la modifica della posizione di archiviazione dei dati relativi al limite di memoria in `cgroupv2`, che causa la lettura errata della memoria disponibile e l’utilizzo di risorse a livello di nodo da parte delle versioni precedenti di Java. Ecco alcune possibili soluzioni:
+  **Aggiornare la versione del JDK**: l’aggiornamento alla versione `jdk8u372` o successive o a una versione del JDK più recente con supporto completo di `cgroupv2` può risolvere questo problema. Per un elenco delle versioni Java compatibili con supporto completo di `cgroupv2`, consultare la pagina [About cgroup v2](https://kubernetes.io/docs/concepts/architecture/cgroups/).
+  **Crea un'AMI personalizzata**: se devi continuare a utilizzare una soluzione AL2 basata su AMI, puoi creare un'AMI personalizzata AL2 (fino al 26 novembre 2025) utilizzando [Crea un'AMI Amazon Linux personalizzata ottimizzata per EKS](eks-ami-build-scripts.md) [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami). Ad esempio, puoi creare un'AMI v1.33 AL2 basata (fino al 26 novembre 2025). Amazon EKS fornirà un servizio AL2 basato AMIs fino alla data AL2 EKS EOS (26 novembre 2025). Dopo la data di fine del supporto (26 novembre 2025), sarà necessario creare la propria AMI.
+  **Abilita cgroupv1**: se devi continuare a utilizzare`cgroupv1`, puoi abilitarlo `cgroupv1` su un'AMI EKS AL2 023. Per abilitare, eseguire `sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"` e riavviare il sistema (ad esempio, EC2 istanza o nodo che esegue Amazon Linux 2023). Ciò modificherà i parametri di avvio del sistema (ad esempio, aggiungendo il parametro di kernel ’systemd.unified\$1cgroup\$1hierarchy=0’, che indica a systemd di utilizzare la gerarchia legacy `cgroupv1`, alla configurazione GRUB) e abiliterà `cgroupv1`. Tenere presente che, con l’esecuzione di questo comando grubby, si procede alla configurazione del kernel in modo che venga avviato con `cgroupv1` abilitato e `cgroupv2` disabilitato. Per la gestione attiva delle risorse su un nodo viene utilizzata solo una di queste versioni di cgroup. Ciò non equivale all’esecuzione di `cgroupv2` con compatibilità retroattiva per l’API `cgroupv1`.

**avvertimento**  
Sconsigliamo l’uso continuato di `cgroupv1`. Consigliamo invece di eseguire la migrazione a `cgroupv2`. La community di Kubernetes ha spostato `cgroupv1` il supporto (utilizzato da AL2) in modalità di manutenzione, il che significa che non verranno aggiunte nuove funzionalità o aggiornamenti e verranno fornite solo le correzioni di sicurezza e i principali bug. La rimozione completa del supporto di `cgroupv1` è prevista in una versione futura, anche se non è stata ancora annunciata una data specifica. Se riscontri problemi con`cgroupv1`, non AWS sarà in grado di fornire supporto e ti consigliamo di eseguire l'aggiornamento a. `cgroupv2`

## Compatibilità e versioni
<a name="_compatibility_and_versions"></a>

### Versioni Kubernetes supportate per AL2 AMIs
<a name="_supported_kubernetes_versions_for_al2_amis"></a>

La versione 1.32 di Kubernetes è l'ultima versione per la quale Amazon EKS verrà rilasciato ( AL2 Amazon Linux 2). AMIs Per le versioni di Kubernetes [supportate](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) fino alla 1.32, EKS continuerà a rilasciare AL2 AMIs (AL2\$1ARM\$164, \$1x86\$164) e -accelerated ( AL2\$1x86\$164\$1GPU) fino al 26 novembre 2025. AL2 AMIs AL2 Dopo questa data, AL2 EKS AL2 smetterà di AMIs rilasciare versioni ottimizzate e accelerate per tutte le versioni di Kubernetes. Tieni presente che la data EOS per le versioni AL2 ottimizzate e AL2 accelerate per EKS AMIs è indipendente dalle tempistiche di supporto standard ed estese per le versioni Kubernetes di EKS.

### Confronto dei driver supportati e delle versioni del kernel Linux per, 023 e Bottlerocket AL2 AL2 AMIs
<a name="_supported_drivers_and_linux_kernel_versions_comparison_for_al2_al2023_and_bottlerocket_amis"></a>


| Componente |  AL2 AMI EKS | EKS AL2 023 AMI | EKS Bottlerocket AMI | 
| --- | --- | --- | --- | 
|  Compatibilità con il sistema operativo di base  |  RHEL7/CentOS 7  |  Fedora/CentOS 9  |  N/D  | 
|   [Driver in modalità utente CUDA](https://docs.nvidia.com/deploy/cuda-compatibility/why-cuda-compatibility.html#why-cuda-compatibility)   |  12.x  |  12.x, 13.x  |  12x, 13x  | 
|  Driver GPU NVIDIA  |  R570  |  R580  |  R570, R580  | 
|   AWS Driver neuronale  |  2,20 \$1  |  2,20\$1  |  2,20\$1  | 
|  Kernel Linux  |  5,10  |  6.1, 6.12  |  6.1, 6.12  | 

[Per ulteriori informazioni sui driver NVIDIA e sulla compatibilità con CUDA, consulta la documentazione NVIDIA.](https://docs.nvidia.com/datacenter/tesla/drivers/index.html#supported-drivers-and-cuda-toolkit-versions)

### AWS Compatibilità di Neuron con AL2 AMIs
<a name="shared_aws_neuron_compatibility_with_al2_amis"></a>

A partire dalla [versione 2.20 di AWS Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/release-notes/prev/rn.html#neuron-2-20-0-whatsnew), Neuron Runtime (`aws-neuronx-runtime-lib`) utilizzato da EKS AL-based AMIs non supporta più Amazon Linux 2 (). AL2 Il Neuron Driver (`aws-neuronx-dkms`) è ora l'unico pacchetto AWS Neuron che supporta Amazon Linux 2. Ciò significa che non è possibile eseguire le applicazioni basate su Neuron in modo nativo su un'AMI basata AL2. [Per configurare Neuron su AL2 023 AMIs, consulta la guida all'installazione di Neuron.AWS](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/setup/index.html#setup-guide-index)

### Compatibilità con Kubernetes con AL2 AMIs
<a name="_kubernetes_compatibility_with_al2_amis"></a>

La community Kubernetes ha spostato il `cgroupv1` supporto (utilizzato da) in modalità manutenzione. AL2 Ciò significa che non verranno aggiunte nuove funzionalità e verranno forniti solo gli aggiornamenti di sicurezza critici e le correzioni di bug più importanti. Tutte le funzionalità di Kubernetes che si basano su cgroupv2, come MemoryQo S e Enhanced Resource Isolation, non sono disponibili su. AL2 Inoltre, la versione 1.32 di Amazon EKS Kubernetes è stata l'ultima versione supportata. AL2 AMIs Per mantenere la compatibilità con le versioni più recenti di Kubernetes, consigliamo di migrare a AL2 023 o Bottlerocket, che sono abilitati per impostazione predefinita. `cgroupv2`

### Compatibilità della versione Linux con AL2 AMIs
<a name="_linux_version_compatibility_with_al2_amis"></a>

Amazon Linux 2 (AL2) è supportato AWS fino alla data end-of-support (EOS) del 30 giugno 2026. Tuttavia, con il AL2 passare del tempo, il supporto da parte della più ampia comunità Linux per nuove applicazioni e funzionalità è diventato più limitato. AL2 AMIs [sono basati sul [kernel Linux 5.10](https://docs.aws.amazon.com/linux/al2/ug/kernel.html), mentre AL2 023 utilizza il kernel Linux 6.1.](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2-kernel.html) A differenza di AL2 023, AL2 ha un supporto limitato da parte della più ampia comunità Linux. Ciò significa che molti pacchetti e strumenti Linux upstream devono essere sottoposti a backport per funzionare con la vecchia versione AL2 del kernel, alcune funzionalità e miglioramenti della sicurezza di Linux moderni non sono disponibili a causa del kernel più vecchio, molti progetti open source hanno un supporto deprecato o limitato per le versioni precedenti del kernel come la 5.10.

### AL2Pacchetti obsoleti non inclusi in 023
<a name="_deprecated_packages_not_included_in_al2023"></a>

Alcuni dei pacchetti più comuni che non sono inclusi o che sono stati modificati nella AL2 versione 023, includono:
+ Alcuni [pacchetti binari di origine in Amazon Linux 2](https://docs.aws.amazon.com/linux/al2023/release-notes/removed-AL2023.6-AL2.html) non sono più disponibili in Amazon Linux 2023
+ Modifiche nel modo in cui Amazon Linux supporta diverse versioni di pacchetti (ad esempio, [amazon-linux-extras sistema](https://repost.aws/questions/QUWGU3VFJMRSGf6MDPWn4tLg/how-to-resolve-amazon-linux-extras-in-al2023)) in AL2 023
+  [I pacchetti aggiuntivi per Enterprise Linux (EPEL)](https://docs.aws.amazon.com/linux/al2023/ug/epel.html) non sono supportati nella versione 023 AL2
+  [Le applicazioni a 32 bit non sono supportate](https://docs.aws.amazon.com/linux/al2023/ug/deprecated-al2.html#deprecated-32bit-rpms) in 023 AL2

Per ulteriori informazioni, vedere [Confronto AL2 e AL2 023](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html).

### Confronto della convalida FIPS tra AL2, AL2 023 e Bottlerocket
<a name="_fips_validation_comparison_across_al2_al2023_and_bottlerocket"></a>

Amazon Linux 2 (AL2), Amazon Linux 2023 (AL2023) e Bottlerocket forniscono supporto per la conformità agli standard federali di elaborazione delle informazioni (FIPS).
+ AL2 è certificato secondo FIPS 140-2 e AL2 023 è certificato secondo FIPS 140-3. Per abilitare la modalità FIPS su AL2 023, installa i pacchetti necessari sulla tua EC2 istanza Amazon e segui i passaggi di configurazione utilizzando le istruzioni in [Abilita la modalità FIPS](https://docs.aws.amazon.com/linux/al2023/ug/fips-mode.html) su 023. AL2 [Per ulteriori informazioni, consulta 023. AL2 FAQs](https://aws.amazon.com/linux/amazon-linux-2023/faqs)
+ Bottlerocket offre varianti dedicate specificamente per FIPS che limitano i componenti del kernel e dello spazio utente all’uso di moduli crittografici che sono stati inviati al programma di convalida FIPS 140-3 Cryptographic Module Validation Program.

### Changelog di driver e versioni delle AMI EKS
<a name="_eks_ami_driver_and_versions_changelog"></a>

Per un elenco completo di tutti i componenti AMI EKS e delle relative versioni, consulta le [note di rilascio dell'AMI di Amazon EKS](https://github.com/awslabs/amazon-eks-ami/releases) su GitHub.

# Crea nodi con Amazon Linux ottimizzato AMIs
<a name="eks-optimized-ami"></a>

Amazon Elastic Kubernetes Service (Amazon EKS) fornisce Amazon Machine AMIs Images () specializzate ottimizzate per l'esecuzione di nodi di lavoro Kubernetes. Questi Amazon Linux (AL) ottimizzati per EKS AMIs sono preconfigurati con componenti essenziali, come AWS `kubelet` IAM Authenticator e, per garantire un'integrazione e `containerd` una sicurezza senza interruzioni all'interno dei cluster. Questa guida descrive in dettaglio le versioni AMI disponibili e delinea le opzioni specializzate per l'elaborazione accelerata e le architetture basate su ARM.

## Considerazioni
<a name="ami-considerations"></a>
+ Tieni traccia degli eventi di sicurezza o di privacy per Amazon Linux in [Amazon Linux security center](https://alas.aws.amazon.com/) scegliendo la scheda per la versione desiderata. Puoi anche abbonarti al feed RSS applicabile. Gli eventi di sicurezza e privacy includono una panoramica del problema, quali sono i pacchetti interessati e come aggiornare le istanze per risolvere il problema.
+ Prima di distribuire un'AMI accelerata o Arm, esamina le informazioni in Amazon Linux [accelerato ottimizzato per Amazon EKS](#gpu-ami) e. AMIs [Arm ottimizzato per Amazon EKS Amazon Linux AMIs](#arm-ami)
+  EC2 `P2`Le istanze Amazon non sono supportate su Amazon EKS perché richiedono la versione 470 o precedente del `NVIDIA` driver.
+ Tutti i gruppi di nodi gestiti appena creati nei cluster a partire dalla versione `1.30` più recente utilizzeranno automaticamente AL2 023 come sistema operativo del nodo.

## Amazon Linux accelerato ottimizzato per Amazon EKS AMIs
<a name="gpu-ami"></a>

Gli Amazon Linux (AL AMIs ) accelerati ottimizzati per Amazon EKS si basano sullo standard Amazon Linux ottimizzato per EKS. AMIs Sono configurate per fungere da immagini facoltative per i nodi Amazon EKS per supportare i carichi di lavoro basati su GPU, [Inferentia](https://aws.amazon.com/machine-learning/inferentia/) e [Trainium](https://aws.amazon.com/machine-learning/trainium/).

Per ulteriori informazioni, consulta [Usa l'accelerazione ottimizzata per EKS per le istanze AMIs GPU](ml-eks-optimized-ami.md).

## Arm ottimizzato per Amazon EKS Amazon Linux AMIs
<a name="arm-ami"></a>

Le istanze Arm offrono significativi risparmi sui costi per applicazioni aumentabili orizzontalmente e basate su Arm come server Web, microservizi containerizzati, flotte di memorizzazione nella cache e archivi di dati distribuiti. Quando si aggiungono nodi Arm al cluster, esaminare le considerazioni riportate di seguito.
+ Se il cluster è stato implementato prima del 17 agosto 2020, è necessario eseguire un aggiornamento una tantum dei manifesti critici dei componenti aggiuntivi del cluster. In questo modo Kubernetes può estrarre l'immagine corretta per ogni architettura hardware utilizzata nel cluster. Per ulteriori informazioni sull'aggiornamento dei componenti aggiuntivi del cluster, consultare [Passaggio 1: preparazione per l’aggiornamento](update-cluster.md#update-existing-cluster). Se il cluster è stato implementato a partire dal 17 agosto 2020, il CoreDNS, `kube-proxy` e i plug-in della CNI di Amazon VPC per i componenti aggiuntivi di Kubernetes sono già predisposti alla multi-architettura.
+ Le applicazioni distribuite nei nodi Arm devono essere compilate per Arm.
+ Se li hai DaemonSets implementati in un cluster esistente o desideri distribuirli in un nuovo cluster in cui desideri distribuire anche nodi Arm, verifica che sia DaemonSet possibile eseguirli su tutte le architetture hardware del cluster.
+ È possibile eseguire gruppi di nodi Arm e gruppi di nodi x86 nello stesso cluster. In tal caso, prendi in considerazione di implementare immagini del container multi-architettura in un repository del container come Amazon Elastic Container Registry, quindi aggiungi selettori di nodi ai manifesti in modo che Kubernetes sappia in quale architettura hardware può essere implementato un pod. Per ulteriori informazioni, consultare [Inviare un'immagine multi-architettura](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html) nella *Guida per l'utente di Amazon ECR* ed il blog post [Presentazione di immagini container multi-architettura per Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr).

## Ulteriori informazioni
<a name="linux-more-information"></a>

Per ulteriori informazioni sull'uso di Amazon Linux ottimizzato per Amazon EKS AMIs, consulta le seguenti sezioni:
+ Per utilizzare Amazon Linux con gruppi di nodi gestiti, consulta la sezione [Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti](managed-node-groups.md).
+ Per avviare nodi Amazon Linux autogestiti, consulta la sezione [Recupera le AMI Amazon Linux consigliate IDs](retrieve-ami-id.md).
+ Per informazioni sulla versione, consulta [Recupero delle informazioni sulla versione dell’AMI Amazon Linux](eks-linux-ami-versions.md).
+ Per recuperare la versione più recente IDs di Amazon AMIs Linux ottimizzata per Amazon EKS, consulta. [Recupera le AMI Amazon Linux consigliate IDs](retrieve-ami-id.md)
+ Per gli script open source utilizzati per creare applicazioni ottimizzate per Amazon EKS AMIs, consulta. [Crea un'AMI Amazon Linux personalizzata ottimizzata per EKS](eks-ami-build-scripts.md)

# Aggiornamento da Amazon Linux 2 ad Amazon Linux 2023
<a name="al2023"></a>

**avvertimento**  
Amazon EKS ha smesso di pubblicare Amazon Linux 2 (AL2) ottimizzato per EKS il 26 AMIs novembre 2025. AL2023 e Bottlerocket based for AMIs Amazon EKS sono disponibili per tutte le versioni di Kubernetes supportate, inclusa la 1.33 e successive.

AL2023 è un sistema operativo basato su Linux progettato per fornire un ambiente sicuro, stabile e ad alte prestazioni per le tue applicazioni cloud. È la nuova generazione di Amazon Linux offerta da Amazon Web Services ed è disponibile in tutte le versioni di Amazon EKS supportate.

AL2023 offre diversi miglioramenti rispetto a. AL2 Per un confronto completo, consulta [ AL2 Comparating and Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) nella *Amazon Linux 2023 User Guide*. Sono stati aggiunti, aggiornati e rimossi diversi pacchetti da AL2. Si consiglia vivamente di testare le applicazioni AL2023 prima dell'aggiornamento. Per un elenco di tutte le modifiche ai pacchetti in AL2023, consulta [Modifiche ai pacchetti in Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/release-notes/compare-packages.html) nelle *Note di rilascio di Amazon Linux 2023*.

Oltre a queste modifiche, devi tenere presente quanto riportato di seguito:
+ AL2023 introduce un nuovo processo di inizializzazione dei nodi `nodeadm` che utilizza uno schema di configurazione YAML. Se utilizzi gruppi di nodi autogestiti o un’AMI con un modello di avvio, ora dovrai fornire esplicitamente metadati del cluster aggiuntivi quando si crea un nuovo gruppo di nodi. Un [esempio](https://awslabs.github.io/amazon-eks-ami/nodeadm/) dei parametri minimi richiesti è come segue, dove ora `apiServerEndpoint`, `certificateAuthority` e il servizio `cidr` sono richiesti:

  ```
  ---
  apiVersion: node.eks.aws/v1alpha1
  kind: NodeConfig
  spec:
    cluster:
      name: my-cluster
      apiServerEndpoint: https://example.com
      certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
      cidr: 10.100.0.0/16
  ```

  Nel AL2, i metadati di questi parametri sono stati scoperti dalla chiamata `DescribeCluster` API di Amazon EKS. Nel frattempo AL2023, questo comportamento è cambiato poiché la chiamata API aggiuntiva rischia di rallentare durante l'up-up di nodi su larga scala. Questa modifica non ha effetto su di te se utilizzi gruppi di nodi gestiti senza un modello di avvio o se utilizzi Karpenter. Per ulteriori informazioni su `certificateAuthority` e sul servizio `cidr`, consulta [https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html) nel *Riferimento di API Amazon EKS*.
+ Infatti AL2023, modifica `nodeadm` anche il formato in cui applicare i parametri a `kubelet` per ogni nodo utilizzato. [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec) Nel AL2, ciò è stato fatto con il `--kubelet-extra-args` parametro. Questo è usato comunemente per aggiungere etichette e taint ai nodi. L’esempio seguente mostra l’applicazione di `maxPods` e `--node-labels` al nodo.

  ```
  ---
  apiVersion: node.eks.aws/v1alpha1
  kind: NodeConfig
  spec:
    cluster:
      name: test-cluster
      apiServerEndpoint: https://example.com
      certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
      cidr: 10.100.0.0/16
    kubelet:
      config:
        maxPods: 110
      flags:
        - --node-labels=karpenter.sh/capacity-type=on-demand,karpenter.sh/nodepool=test
  ```
+ È richiesta la versione CNI di Amazon VPC `1.16.2` o superiore. AL2023
+ AL2023 richiede per impostazione `IMDSv2` predefinita. `IMDSv2`presenta diversi vantaggi che aiutano a migliorare il livello di sicurezza. Usa un metodo di autenticazione orientato alla sessione che prevede la creazione di un token segreto in una semplice richiesta HTTP PUT per avviare la sessione. Il token di una sessione può avere una validità compresa tra 1 secondo e 6 ore. Per ulteriori informazioni su come passare da `IMDSv1` a`IMDSv2`, consulta [Transizione all'utilizzo di Instance Metadata Service versione 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html) e [Ottieni IMDSv1 tutti i vantaggi IMDSv2 e disabilita l'intera infrastruttura AWS](https://aws.amazon.com/blogs/security/get-the-full-benefits-of-imdsv2-and-disable-imdsv1-across-your-aws-infrastructure). Se desideri usare `IMDSv1`, puoi farlo comunque sovrascrivendo manualmente le impostazioni usando le proprietà di avvio dell’opzione dei metadati di istanza.
**Nota**  
Ad `IMDSv2` esempio AL2023, il numero di hop predefinito per i gruppi di nodi gestiti può variare:  
Quando non si utilizza un modello di avvio, il valore predefinito è impostato su `1`. Ciò significa che i container non avranno accesso alle credenziali del nodo che usano IMDS. Se necessiti dell’accesso del container alle credenziali del nodo, puoi comunque farlo utilizzando un [modello di lancio Amazon EC2 personalizzato](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html).
Quando si utilizza un’AMI personalizzata in un modello di avvio, il valore predefinito `HttpPutResponseHopLimit` è impostato su `2`. Puoi sostituire manualmente `HttpPutResponseHopLimit` nel modello di avvio.
In alternativa, puoi utilizzare [Amazon EKS Pod Identity](pod-identities.md) per fornire credenziali anziché `IMDSv2`.
+ AL2023 presenta la nuova generazione di gerarchia unificata dei gruppi di controllo ()`cgroupv2`. `cgroupv2`viene utilizzato per implementare un runtime del contenitore e da. `systemd` Sebbene includa AL2023 ancora codice che può far funzionare il sistema`cgroupv1`, questa non è una configurazione consigliata o supportata. Questa configurazione verrà completamente rimossa in una delle future release principali di Amazon Linux.
+  `eksctl`per il supporto è richiesta `eksctl` una versione `0.176.0` o superiore AL2023.

Per i gruppi di nodi gestiti precedentemente esistenti, puoi eseguire un aggiornamento sul posto o un blue/green aggiornamento a seconda di come stai utilizzando un modello di lancio:
+ Se utilizzi un’AMI personalizzata con un gruppo di nodi gestito, puoi eseguire un aggiornamento sul posto scambiando l’ID AMI nel modello di avvio. È necessario assicurarsi che le applicazioni e tutti i dati utente vengano trasferiti a AL2023 First prima di eseguire questa strategia di aggiornamento.
+ Se utilizzi gruppi di nodi gestiti con il modello di avvio standard o con un modello di avvio personalizzato che non specifica l'ID AMI, devi eseguire l'aggiornamento utilizzando una blue/green strategia. Un blue/green aggiornamento è in genere più complesso e comporta la creazione di un gruppo di nodi completamente nuovo in cui specificare AL2023 il tipo di AMI. Il nuovo gruppo di nodi dovrà quindi essere configurato con cura per garantire che tutti i dati personalizzati del gruppo di AL2 nodi siano compatibili con il nuovo sistema operativo. Una volta che il nuovo gruppo di nodi è stato testato e convalidato con le applicazioni, i Pod possono essere migrati dal vecchio gruppo di nodi al nuovo gruppo di nodi. Una volta completata la migrazione, puoi eliminare il vecchio gruppo di nodi.

Se utilizzi Karpenter e desideri utilizzarlo AL2023, dovrai modificare il `EC2NodeClass` `amiFamily` campo con. AL2023 Per impostazione predefinita, Drift è abilitato in Karpenter. Ciò significa che una volta modificato il campo `amiFamily`, Karpenter aggiornerà automaticamente i nodi worker all’AMI più recente, quando disponibile.

## Informazioni aggiuntive su nodeadm
<a name="_additional_information_about_nodeadm"></a>

Quando utilizzi un'AMI Amazon Linux 2023 ottimizzata per EKS o crei un'AMI Amazon Linux 2023 EKS personalizzata tramite gli script Packer forniti nel repository amazon-eks-ami GitHub ufficiale, dovresti evitare di eseguire esplicitamente nodeadm init all'interno dei dati utente EC2 o come parte della tua AMI personalizzata.

Se desideri generare dati dinamici NodeConfig nei tuoi dati utente, puoi scrivere quella configurazione in un file yaml o json drop-in. `/etc/eks/nodeadm.d` Questi file di configurazione verranno uniti e applicati al nodo quando nodeadm init verrà avviato automaticamente più avanti nel processo di avvio. Esempio:

```
cat > /etc/eks/nodeadm.d/additional-node-labels.yaml << EOF
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  kubelet:
    flags:
      - --node-labels=foo=bar
EOF
```

Amazon Linux 2023 ottimizzato per EKS esegue AMIs automaticamente nodeadm init in due fasi tramite servizi systemd separati: nodeadm-config viene eseguito prima dell'esecuzione dei dati utente, mentre nodeadm-run viene eseguito dopo. Il servizio nodeadm-config stabilisce le configurazioni di base per containerd e kubelet prima dell'esecuzione dei dati utente. Il servizio nodeadm-run esegue determinati demoni di sistema e completa tutte le configurazioni finali dopo l'esecuzione dei dati dell'utente. Se il comando nodeadm init viene eseguito un'altra volta, tramite dati utente o un'AMI personalizzata, potrebbe violare le ipotesi sull'ordine di esecuzione, portando a risultati imprevisti, tra cui configurazioni errate. ENIs

# Recupero delle informazioni sulla versione dell’AMI Amazon Linux
<a name="eks-linux-ami-versions"></a>

Le versioni delle AMI Amazon Linux ottimizzate per Amazon EKS si basano sulla versione di Kubernetes e la data di rilascio dell’AMI è nel formato seguente:

```
k8s_major_version.k8s_minor_version.k8s_patch_version-release_date
```

Ogni rilascio dell’AMI include varie versioni di [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), del kernel Linux e di [containerd](https://containerd.io/). L’AMI accelerata include anche varie versioni del driver NVIDIA. Puoi trovare queste informazioni sulle versioni in [Changelog](https://github.com/awslabs/amazon-eks-ami/blob/main/CHANGELOG.md) su GitHub.

# Recupera le AMI Amazon Linux consigliate IDs
<a name="retrieve-ami-id"></a>

Durante la distribuzione dei nodi, è possibile specificare un ID per un’Amazon Machine Image (AMI) preconfigurata e ottimizzata per Amazon EKS. Per recuperare un ID AMI adatto alla configurazione desiderata, interroga l'API AWS Systems Manager Parameter Store. L'utilizzo di questa API elimina la necessità di cercare manualmente le AMI ottimizzate per Amazon EKS IDs. Per ulteriori informazioni, consulta [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Il [principale IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) che usi deve disporre dell'autorizzazione IAM `ssm:GetParameter` per recuperare i metadati dell'AMI ottimizzata per Amazon EKS.

È possibile recuperare l’ID immagine dell’ultima versione consigliata dell’AMI Amazon Linux ottimizzata per Amazon EKS con il comando seguente, che utilizza il parametro secondario `image_id`. Apportare le seguenti modifiche al comando, se necessario, quindi esegui il comando modificato:
+ Sostituisci `<kubernetes-version>` con una [versione supportata da Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).
+ Sostituisci *ami-type* con una delle seguenti opzioni. Per informazioni sui tipi di EC2 istanze Amazon, consulta [Tipi di EC2 istanze Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html).
  + Utilizzalo *amazon-linux-2023/x86\$164/standard* per istanze `x86` basate su Amazon Linux 2023 (AL2023).
  + [Utilizzalo *amazon-linux-2023/arm64/standard* per AL2 023 istanze ARM, come AWS le istanze basate su Graviton.](https://aws.amazon.com/ec2/graviton/)
  + Da utilizzare *amazon-linux-2023/x86\$164/nvidia* per le ultime AL2 023 istanze basate su NVIDIA approvate. `x86`
  + Da utilizzare *amazon-linux-2023/arm64/nvidia* per le ultime istanze AL2 023 basate su NVIDIA approvate. `arm64`
  + [Da utilizzare *amazon-linux-2023/x86\$164/neuron* per le ultime istanze AL2 AWS 023 Neuron.](https://aws.amazon.com/machine-learning/neuron/)
+ Sostituisci `<region-code>` con una [AWS regione supportata da Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) per la quale desideri l'ID AMI.

```
aws ssm get-parameter --name /aws/service/eks/optimized-ami/<kubernetes-version>/<ami-type>/recommended/image_id \
    --region <region-code> --query "Parameter.Value" --output text
```

Ecco un comando esemplificativo dopo la sostituzione dei segnaposto.

```
aws ssm get-parameter --name /aws/service/eks/optimized-ami/1.31/amazon-linux-2023/x86_64/standard/recommended/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Di seguito viene riportato un output di esempio.

```
ami-1234567890abcdef0
```

# Crea un'AMI Amazon Linux personalizzata ottimizzata per EKS
<a name="eks-ami-build-scripts"></a>

**avvertimento**  
Amazon EKS ha smesso di pubblicare Amazon Linux 2 (AL2) ottimizzato per EKS il 26 AMIs novembre 2025. AL2023 e Bottlerocket based for AMIs Amazon EKS sono disponibili per tutte le versioni di Kubernetes supportate, inclusa la 1.33 e successive.

Amazon EKS fornisce script di build open source nel repository [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami) che puoi usare per visualizzare le configurazioni`kubelet`, il runtime, AWS IAM Authenticator per Kubernetes e creare da zero la tua AMI basata su AL.

[Questo repository contiene lo [script di bootstrap](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) specializzato e lo strumento nodeadm per 023 che viene eseguito all'avvio. AL2 AL2](https://awslabs.github.io/amazon-eks-ami/nodeadm/) Questi script configurano i dati del certificato dell’istanza, l’endpoint del piano di controllo (control-plane), il nome del cluster e altro ancora. Gli script sono considerati la fonte di verità per le build AMI ottimizzate per Amazon EKS, quindi puoi seguire GitHub il repository per monitorare le modifiche al nostro. AMIs

Quando si crea una creazione personalizzata AMIs con Eks Optimized AMIs come base, non è consigliato né supportato l'esecuzione di un aggiornamento del sistema operativo (ad es. `dnf upgrade`) o aggiorna uno qualsiasi dei pacchetti Kubernetes o GPU inclusi in EKS-Optimized, poiché ciò rischia di compromettere la compatibilità AMIs dei componenti. Se si esegue l'aggiornamento del sistema operativo o dei pacchetti inclusi nei pacchetti ottimizzati per EKS AMIs, si consiglia di eseguire test approfonditi in un ambiente di sviluppo o di gestione temporanea prima di passare alla produzione.

Quando si creano istanze GPU personalizzate AMIs , si consiglia di creare istanze personalizzate separate AMIs per ogni tipo di istanza, generazione e famiglia di istanze che verrà eseguita. La versione accelerata ottimizzata per EKS installa AMIs in modo selettivo driver e pacchetti in fase di esecuzione in base alla generazione e alla famiglia di istanze sottostanti. Per ulteriori informazioni, consulta gli script EKS AMI per [l'installazione](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/provisioners/install-nvidia-driver.sh) e il [runtime](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/runtime/gpu/nvidia-kmod-load.sh).

## Prerequisiti
<a name="_prerequisites"></a>
+  [Installa la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 
+  [Installa HashiCorp Packer v1.9.4\$1](https://developer.hashicorp.com/packer/downloads) 
+  [Installare GNU Make](https://www.gnu.org/software/make/) 

## Guida introduttiva
<a name="_quickstart"></a>

Questa guida rapida mostra i comandi per creare un'AMI personalizzata nel tuo AWS account. Per ulteriori informazioni sulle configurazioni disponibili per personalizzare l’AMI, consultare le variabili del modello alla pagina [Amazon Linux 2023](https://awslabs.github.io/amazon-eks-ami/usage/al2023/).

### Prerequisiti
<a name="_prerequisites_2"></a>

Installare il [plugin Amazon](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon) richiesto. Esempio:

```
packer plugins install github.com/hashicorp/amazon
```

### Passaggio 1. Configurare l’ambiente
<a name="_step_1_setup_your_environment"></a>

Clonare o creare un fork del repository Amazon EKS AMI ufficiale. Esempio:

```
git clone https://github.com/awslabs/amazon-eks-ami.git
cd amazon-eks-ami
```

Verificare che Packer sia installato:

```
packer --version
```

### Passaggio 2. Creazione di un'AMI personalizzata
<a name="_step_2_create_a_custom_ami"></a>

Di seguito sono riportati alcuni comandi di esempio per varie AMIs personalizzazioni.

 ** AL2 AMI NVIDIA di base:** 

```
make k8s=1.31 os_distro=al2 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 ** AL2AMI NVIDIA 023 di base:** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **AMI Neuron 023 conforme a STIG: AL2** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=neuron \
  enable_fips=true \
  source_ami_id=ami-0abcd1234efgh5678 \
  kms_key_id=alias/aws-stig
```

Dopo aver eseguito questi comandi, Packer eseguirà le seguenti operazioni: \$1 Avvia un' EC2 istanza Amazon temporanea. \$1 Installazione di componenti, driver e configurazioni Kubernetes. \$1 Crea l'AMI nel tuo AWS account.

L’output previsto dovrebbe essere simile al seguente:

```
==> Wait completed after 8 minutes 42 seconds

==> Builds finished. The artifacts of successful builds are:
--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9
```

### Fase 3. Visualizzare i valori predefiniti
<a name="_step_3_view_default_values"></a>

Eseguire il seguente comando per visualizzare i valori predefiniti e le opzioni aggiuntive:

```
make help
```

# Crea nodi con Bottlerocket ottimizzato AMIs
<a name="eks-optimized-ami-bottlerocket"></a>

 [Bottlerocket](https://aws.amazon.com/bottlerocket/) è una distribuzione Linux open source sponsorizzata e supportata da. AWS Bottlerocket è progettato appositamente per ospitare carichi di lavoro in container. Con Bottlerocket, puoi migliorare la disponibilità delle implementazioni containerizzate e ridurre i costi operativi automatizzando gli aggiornamenti dell’infrastruttura dei container. Bottlerocket include solo il software essenziale per eseguire i container, che migliora l’utilizzo delle risorse, riduce le minacce alla sicurezza e riduce i costi di gestione. L'AMI Bottlerocket include e AWS IAM `containerd` `kubelet` Authenticator. Oltre che dai gruppi di nodi gestiti e di nodi autogestiti, Bottlerocket è supportato anche da [Karpenter](https://karpenter.sh/).

## Vantaggi
<a name="bottlerocket-advantages"></a>

L'utilizzo di Bottlerocket con il cluster Amazon EKS presenta i seguenti vantaggi:
+  **Tempi di attività maggiori con costi operativi inferiori e minore complessità di gestione**: Bottlerocket necessita di un minore utilizzo di risorse, tempi di avvio più brevi ed è meno vulnerabile alle minacce alla sicurezza rispetto ad altre distribuzioni Linux. L’ingombro ridotto di Bottlerocket aiuta a ridurre i costi utilizzando meno risorse di archiviazione, elaborazione e rete.
+  **Maggiore sicurezza grazie agli aggiornamenti automatici del sistema operativo** – gli aggiornamenti a Bottlerocket vengono applicati come una singola unità che può essere ripristinata, se necessario. Ciò elimina il rischio di aggiornamenti danneggiati o non riusciti che possono lasciare il sistema in uno stato inutilizzabile. Con Bottlerocket, gli aggiornamenti di sicurezza possono essere applicati automaticamente non appena sono disponibili con un impatto minimo e possono essere ripristinati in caso di guasti.
+  **Supporto premium**: le AWS versioni fornite di Bottlerocket su Amazon EC2 sono coperte dagli stessi piani di AWS supporto che coprono anche AWS servizi come Amazon, Amazon EKS e EC2 Amazon ECR.

## Considerazioni
<a name="bottlerocket-considerations"></a>

Quando utilizzi Bottlerocket per il tuo tipo di AMI, considera quanto segue:
+ Bottlerocket supporta EC2 istanze Amazon con `x86_64` processori. `arm64`
+ Bottlerocket supporta EC2 istanze Amazon con. GPUs Per ulteriori informazioni, consulta [Usa l'accelerazione ottimizzata per EKS per le istanze AMIs GPU](ml-eks-optimized-ami.md).
+ Le immagini Bottlerocket non includono un server SSH o una shell. Puoi utilizzare metodi di out-of-band accesso per consentire SSH. Questi approcci consentono di utilizzare il container dell'amministratore e saltare alcune fasi di configurazione di bootstrap con i dati utente. Per ulteriori informazioni, consulta le seguenti sezioni in [Bottlerocket](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) OS su: GitHub
  +  [Esplorazione](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#exploration) 
  +  [Container amministratore](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) 
  +  [Impostazioni Kubernetes](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#kubernetes-settings) 
+ Bottlerocket utilizza diversi tipi di container:
  + Per impostazione predefinita, è abilitato un [container di controllo](https://github.com/bottlerocket-os/bottlerocket-control-container). Questo contenitore esegue l'[agente AWS Systems Manager](https://github.com/aws/amazon-ssm-agent) che puoi utilizzare per eseguire comandi o avviare sessioni di shell su istanze Amazon EC2 Bottlerocket. Per ulteriori informazioni, vedere [Configurazione di Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) nella *Guida per l'utente di AWS Systems Manager*.
  + Se viene fornita una chiave SSH durante la creazione del gruppo di nodi, viene abilitato un container dell'amministratore. Consigliamo di utilizzare il container amministratore solo per scenari di sviluppo e test. Non è consigliabile utilizzarlo in ambienti di produzione. Per ulteriori informazioni, consulta [Container amministratore](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) su GitHub.

## Ulteriori informazioni
<a name="bottlerocket-more-information"></a>

Per ulteriori informazioni sull'uso di Bottlerocket ottimizzato per Amazon EKS AMIs, consulta le seguenti sezioni:
+ Per i dettagli su Bottlerocket, consulta la [documentazione di Bottlerocket](https://bottlerocket.dev/en/).
+ Per le risorse informative sulla versione, consulta [Recupero delle informazioni sulla versione delle AMI Bottlerocket](eks-ami-versions-bottlerocket.md).
+ Per utilizzare Bottlerocket con gruppi di nodi gestiti, consulta [Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti](managed-node-groups.md).
+ Per avviare i nodi autogestiti di Bottlerocket, consulta [Crea nodi autogestiti Bottlerocket](launch-node-bottlerocket.md).
+ Per recuperare la versione più recente IDs del Bottlerocket AMIs ottimizzato per Amazon EKS, consulta. [Recupero degli ID AMI Bottlerocket consigliati](retrieve-ami-id-bottlerocket.md)
+ Per informazioni dettagliate sul supporto per la conformità, consulta la sezione [Soddisfare i requisiti di conformità con Bottlerocket](bottlerocket-compliance-support.md).

# Recupero delle informazioni sulla versione delle AMI Bottlerocket
<a name="eks-ami-versions-bottlerocket"></a>

Ogni versione delle AMI Bottlerocket include varie versioni di [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), del kernel Bottlerocket e di [containerd](https://containerd.io/). Le versioni dell’AMI accelerata includono anche varie versioni del driver NVIDIA. È possibile trovare queste informazioni sulla versione nell’argomento relativo al sistema operativo [OS](https://bottlerocket.dev/en/os/) della *documentazione di Bottlerocket*. Da questa pagina, andare all’argomento secondario *Version Information* applicabile.

A volte la *documentazione di Bottlerocket* può essere in ritardo rispetto alle versioni disponibili su GitHub. È possibile trovare un elenco di modifiche relative alle versioni più recenti alla pagina [releases](https://github.com/bottlerocket-os/bottlerocket/releases) su GitHub.

# Recupero degli ID AMI Bottlerocket consigliati
<a name="retrieve-ami-id-bottlerocket"></a>

Durante la distribuzione dei nodi, è possibile specificare un ID per un’Amazon Machine Image (AMI) preconfigurata e ottimizzata per Amazon EKS. Per recuperare un ID AMI adatto alla configurazione desiderata, interroga l’API AWS Systems Manager Parameter Store. L’utilizzo di tale parametro consente di evitare la ricerca manuale degli ID AMI ottimizzata per Amazon EKS. Per ulteriori informazioni, consulta [Ottenere parametro](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Il [principale IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) che usi deve disporre dell'autorizzazione IAM `ssm:GetParameter` per recuperare i metadati dell'AMI ottimizzata per Amazon EKS.

È possibile recuperare l’ID immagine della versione più recente dell’AMI Bottlerocket ottimizzata per Amazon EKS consigliata con il seguente comando AWS CLI, che utilizza il parametro secondario `image_id`. Apportare le seguenti modifiche al comando, se necessario, quindi esegui il comando modificato:
+ Sostituisci la *versione Kubernetes* con una [versione della piattaforma](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) supportata.
+ Sostituisci *-flavor* con una delle seguenti opzioni.
  + Rimuovi *-flavor* per le varianti senza GPU.
  + Utilizza *-nvidia* per le varianti abilitate per la GPU.
  + Utilizza *-fips* per le varianti compatibili con FIPS.
+ Sostituisci *architettura* con una delle seguenti opzioni.
  + Utilizza *x86\$164* per le istanze basate su `x86`.
  + Utilizza *arm64* per le istanze ARM.
+ Sostituisci *codice regione* con una [regione AWS supportata da Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) per la quale si desidera l’ID AMI.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-kubernetes-version-flavor/architecture/latest/image_id \
    --region region-code --query "Parameter.Value" --output text
```

Ecco un comando esemplificativo dopo la sostituzione dei segnaposto.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-1.31/x86_64/latest/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Di seguito viene riportato un output di esempio:

```
ami-1234567890abcdef0
```

# Soddisfare i requisiti di conformità con Bottlerocket
<a name="bottlerocket-compliance-support"></a>

Bottlerocket è conforme alle raccomandazioni definite da varie organizzazioni:
+ È stato definito un [Benchmark CIS](https://www.cisecurity.org/benchmark/bottlerocket) per Bottlerocket. In una configurazione predefinita, l’immagine Bottlerocket presenta la maggior parte dei controlli richiesti dal profilo di configurazione CIS Level 1. Puoi implementare i controlli necessari per un profilo di configurazione CIS di livello 2. Per ulteriori informazioni, consulta [Validating Amazon EKS optimized Bottlerocket AMI against the CIS Benchmark](https://aws.amazon.com/blogs/containers/validating-amazon-eks-optimized-bottlerocket-ami-against-the-cis-benchmark) sul blog AWS.
+ Il set di funzionalità ottimizzato e la superficie di attacco ridotta fanno sì che le istanze Bottlerocket richiedano meno configurazioni per soddisfare i requisiti PCI DSS. Il [Benchmark CIS per Bottlerocket](https://www.cisecurity.org/benchmark/bottlerocket) è una risorsa eccellente per le linee guida in materia di hardening e supporta i requisiti per gli standard di configurazione sicuri ai sensi del requisito PCI DSS 2.2. Puoi sfruttare [Fluent Bit](https://opensearch.org/blog/technical-post/2022/07/bottlerocket-k8s-fluent-bit/) per supportare i requisiti di registrazione degli audit a livello di sistema operativo ai sensi del requisito PCI DSS 10.2. AWS pubblica periodicamente nuove istanze Bottlerocket (con patch) per soddisfare i requisiti PCI DSS 6.2 (per la versione 3.2.1) e il requisito 6.3.3 (per la versione 4.0).
+ Bottlerocket è una funzionalità idonea alla normativa HIPAA autorizzata per l’uso con carichi di lavoro regolamentati sia per Amazon EC2 che per Amazon EKS. Per ulteriori informazioni, consulta [HIPAA Eligible Services Reference](https://aws.amazon.com/compliance/hipaa-eligible-services-reference/).
+ Sono disponibili AMI Bottlerocket preconfigurate per utilizzare moduli crittografici convalidati FIPS 140-3. Sono inclusi il modulo crittografico Amazon Linux 2023 Kernel Crypto API e il modulo crittografico AWS-LC. Per ulteriori informazioni, consulta [Prepara i tuoi nodi di lavoro con FIPS con Bottlerocket FIPS AMIs](bottlerocket-fips-amis.md).

# Prepara i tuoi nodi di lavoro con FIPS con Bottlerocket FIPS AMIs
<a name="bottlerocket-fips-amis"></a>

La pubblicazione 140-3 del Federal Information Processing Standard (FIPS) è uno standard di sicurezza dei governi degli Stati Uniti e del Canada che specifica i requisiti di sicurezza previsti per i moduli crittografici che proteggono informazioni sensibili. Bottlerocket semplifica l'adesione a FIPS offrendo un kernel FIPS. AMIs 

Questi AMIs sono preconfigurati per utilizzare moduli crittografici convalidati FIPS 140-3. Ciò include il modulo crittografico Amazon Linux 2023 Kernel Crypto API e il modulo crittografico AWS-LC.

L'uso di Bottlerocket FIPS AMIs rende i nodi di lavoro «pronti per FIPS» ma non automaticamente «conformi a FIPS». [Per ulteriori informazioni, vedere Federal Information Processing Standard (FIPS) 140-3.](https://aws.amazon.com/compliance/fips/)

## Considerazioni
<a name="_considerations"></a>
+ Se il cluster usa sottoreti isolate, l’endpoint FIPS di Amazon ECR potrebbe non essere accessibile. Questo può causare il fallimento del bootstrap del nodo. Assicurati che la configurazione di rete consenta l’accesso agli endpoint FIPS necessari. *Per ulteriori informazioni, consulta [Accedere a una risorsa tramite un endpoint VPC di risorse nella Guida](https://docs.aws.amazon.com/vpc/latest/privatelink/use-resource-endpoint.html). AWS PrivateLink *
+ Se il cluster utilizza una sottorete con [PrivateLink](vpc-interface-endpoints.md), il recupero delle immagini avrà esito negativo perché gli endpoint FIPS di Amazon ECR non sono disponibili tramite. PrivateLink

## Creare un gruppo di nodi gestiti con un’AMI Bottlerocket FIPS
<a name="_create_a_managed_node_group_with_a_bottlerocket_fips_ami"></a>

L'AMI FIPS Bottlerocket è disponibile in quattro varianti per supportare i tuoi carichi di lavoro:
+  `BOTTLEROCKET_x86_64_FIPS` 
+  `BOTTLEROCKET_ARM_64_FIPS` 
+  `BOTTLEROCKET_x86_64_NVIDIA_FIPS` 
+  `BOTTLEROCKET_ARM_64_NVIDIA_FIPS` 

Per creare un gruppo di nodi gestiti con un’AMI FIPS Bottlerocket, seleziona il tipo di AMI applicabile durante il processo di creazione. Per ulteriori informazioni, consulta [Creare un gruppo di nodi gestiti per il cluster](create-managed-node-group.md).

Per ulteriori informazioni sulla scelta delle varianti compatibili con FIPS, consulta [Recupero degli ID AMI Bottlerocket consigliati](retrieve-ami-id-bottlerocket.md).

## Disabilita l'endpoint FIPS per le regioni non supportate AWS
<a name="disable_the_fips_endpoint_for_non_supported_shared_aws_regions"></a>

I FIPS Bottlerocket AMIs sono supportati direttamente negli Stati Uniti d'America, comprese le regioni AWS GovCloud (Stati Uniti). Per AWS le regioni in cui AMIs sono disponibili ma non supportate direttamente, puoi comunque utilizzarle creando un gruppo di nodi gestito con un modello di avvio. AMIs 

L’AMI FIPS Bottlerocket si basa sull’endpoint FIPS Amazon ECR durante il bootstrap, che generalmente non è disponibile al di fuori degli Stati Uniti. Per utilizzare l'AMI per il suo kernel FIPS in AWS regioni in cui non è disponibile l'endpoint FIPS Amazon ECR, procedi nel seguente modo per disabilitare l'endpoint FIPS:

1. Crea un nuovo file di configurazione con il contenuto seguente o incorpora il contenuto nel file di configurazione esistente.

```
[default]
use_fips_endpoint=false
```

1. Codifica il contenuto del file nel formato Base64.

1. Nel campo `UserData` del modello di avvio, aggiungi la seguente stringa codificata usando il formato TOML:

```
[settings.aws]
config = "<your-base64-encoded-string>"
```

[Per altre impostazioni, consulta la descrizione delle impostazioni su di Bottlerocket.](https://github.com/bottlerocket-os/bottlerocket?tab=readme-ov-file#description-of-settings) GitHub

Ecco un esempio di `UserData` in un modello di avvio:

```
[settings]
motd = "Hello from eksctl!"
[settings.aws]
config = "W2RlZmF1bHRdCnVzZV9maXBzX2VuZHBvaW50PWZhbHNlCg==" # Base64-encoded string.
[settings.kubernetes]
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
cluster-name = "<cluster-name>"
...<other-settings>
```

Per ulteriori informazioni sulla creazione di un modello di avvio con i dati utente, consulta [Personalizzazione dei nodi gestiti con modelli di avvio](launch-templates.md).

# Creare nodi con AMI ottimizzate per Ubuntu Linux
<a name="eks-partner-amis"></a>

Canonical ha collaborato con Amazon EKS per creare AMI del nodo utilizzabili nei cluster.

 [Canonical](https://www.canonical.com/) offre un'immagine del sistema operativo del nodo Kubernetes integrata per lo scopo. Questa immagine Ubuntu ridotta è ottimizzata per Amazon EKS e include il kernel AWS personalizzato, sviluppato in collaborazione con AWS. Per ulteriori informazioni, consultare la pagina [Ubuntu on Amazon Elastic Kubernetes Service (EKS)](https://cloud-images.ubuntu.com/aws-eks/) e [Creazione di nodi Ubuntu Linux autogestiti](launch-node-ubuntu.md). Per informazioni sul supporto, consultare la sezione [Third-party software](https://aws.amazon.com/premiumsupport/faqs/#Third-party_software) delle *domande frequenti del Supporto AWS Premium*.

# Crea nodi con Windows ottimizzato AMIs
<a name="eks-optimized-windows-ami"></a>

Windows Amazon EKS AMIs optimized si basa su Windows Server 2019, Windows Server 2022 e Windows Server 2025. Sono configurate per fungere da immagine di base per i nodi Amazon EKS. Per impostazione predefinita, AMIs includono i seguenti componenti:
+  [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) 
+  [kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/) 
+  [AWS IAM Authenticator per Kubernetes](https://github.com/kubernetes-sigs/aws-iam-authenticator) 
+  [csi-proxy](https://github.com/kubernetes-csi/csi-proxy) 
+  [containerd](https://containerd.io/) 

**Nota**  
É possibile monitorare gli eventi di sicurezza o privacy per Windows Server con la [Microsoft Security Update Guide](https://portal.msrc.microsoft.com/en-us/security-guidance).

Offerte AMIs Amazon EKS ottimizzate per contenitori Windows nelle seguenti varianti:
+ AMI Windows Server, versione 2019 (Core) ottimizzata per Amazon EKS
+ AMI Windows Server, versione 2019 (Full) ottimizzata per Amazon EKS
+ AMI Core per Windows Server 2022 ottimizzata per Amazon EKS
+ AMI completa per Windows Server 2022 ottimizzata per Amazon EKS
+ AMI Core per Windows Server 2025 ottimizzata per Amazon EKS
+ AMI completa per Windows Server 2025 ottimizzata per Amazon EKS

**Importante**  
L’AMI Windows Server 20H2 (Core) ottimizzata per Amazon EKS è obsoleta. Non verranno rilasciate nuove versioni di questa AMI.
Per garantire di disporre degli ultimi aggiornamenti di sicurezza AMIs per impostazione predefinita, Amazon EKS mantiene Windows ottimizzato negli ultimi 4 mesi. Ogni nuova AMI sarà disponibile per 4 mesi dal momento della pubblicazione iniziale. Dopo questo periodo, AMIs le versioni più vecchie vengono rese private e non sono più accessibili. Consigliamo di utilizzare le versioni più recenti AMIs per evitare vulnerabilità di sicurezza e perdere l'accesso alle versioni più vecchie AMIs che hanno raggiunto la fine del periodo di validità del supporto. Sebbene non possiamo garantire di poter fornire l'accesso a AMIs ciò che è stato reso privato, puoi richiedere l'accesso inviando un ticket a AWS Support.

## Calendario dei rilasci
<a name="windows-ami-release-calendar"></a>

Nella tabella seguente sono elencate le date di rilascio e di fine supporto delle versioni Windows per Amazon EKS. Se una data di fine del supporto è vuota, la versione è ancora supportata.


| Versione Windows | Rilascio Amazon EKS | Fine del supporto Amazon EKS | 
| --- | --- | --- | 
|  Windows Server 2025 Core  |  27/01/2026  |  | 
|  Windows Server 2025 completo  |  27/01/2026  |  | 
|  Windows Server 2022 Core  |  17/10/2022  |  | 
|  Windows Server 2022 Full  |  17/10/2022  |  | 
|  Windows Server 20H2 Core  |  12/08/2021  |  09/08/2022  | 
|  Windows Server 2004 Core  |  19/08/2020  |  14/12/2021  | 
|  Windows Server 2019 Core  |  07/10/2019  |  | 
|  Windows Server, versione 2019 (Full)  |  07/10/2019  |  | 
|  Windows Server, versione 1909 (Core)  |  07/10/2019  |  08/12/2020  | 

## Parametri di configurazione dello script di bootstrap
<a name="bootstrap-script-configuration-parameters"></a>

Quando crei un nodo Windows, sul nodo è presente uno script che consente la configurazione di diversi parametri. A seconda della configurazione, questo script può essere presente sul nodo in una posizione simile a: `C:\Program Files\Amazon\EKS\Start-EKSBootstrap.ps1`. È possibile specificare valori di parametri personalizzati specificandoli come argomenti dello script di bootstrap. Ad esempio, puoi aggiornare i dati utente nel modello di avvio. Per ulteriori informazioni, consulta [Dati utente Amazon EC2](launch-templates.md#launch-template-user-data).

Lo script include i seguenti parametri della riga di comando:
+  `-EKSClusterName`: specifica il nome del cluster Amazon EKS a cui il nodo worker deve essere aggiunto.
+  `-KubeletExtraArgs`: specifica argomenti aggiuntivi per `kubelet` (facoltativo).
+  `-KubeProxyExtraArgs`: specifica argomenti aggiuntivi per `kube-proxy` (facoltativo).
+  `-APIServerEndpoint`: specifica l'endpoint del server API del cluster Amazon EKS (facoltativo). Valido solo se usato con `-Base64ClusterCA`. Bypassa la chiamata a `Get-EKSCluster`.
+  `-Base64ClusterCA`: specifica il contenuto CA del cluster codificato base64 (facoltativo). Valido solo se usato con `-APIServerEndpoint`. Bypassa la chiamata a `Get-EKSCluster`.
+  `-DNSClusterIP`: sostituisce l'indirizzo IP da utilizzare per le query DNS all'interno del cluster (facoltativo). L'impostazione predefinita è `10.100.0.10` o `172.20.0.10` in base all'indirizzo IP dell'interfaccia primaria.
+  `-ServiceCIDR`: sostituisce l’intervallo di indirizzi IP del servizio Kubernetes da cui vengono indirizzati i servizi del cluster. L'impostazione predefinita è `172.20.0.0/16` o `10.100.0.0/16` in base all'indirizzo IP dell'interfaccia primaria.
+  `-ExcludedSnatCIDRs`— Un elenco di cose da escludere `IPv4` CIDRs da Source Network Address Translation (SNAT). Ciò significa che l’IP privato del pod indirizzabile nel VPC non verrebbe tradotto nell’indirizzo IP dell’indirizzo `IPv4` primario dell’interfaccia di rete elastica (ENI) dell’istanza per il traffico in uscita. Per impostazione predefinita, viene aggiunto il CIDR `IPv4` del VPC per il nodo Windows di Amazon EKS. La specificazione CIDRs di questo parametro esclude inoltre quanto specificato. CIDRs Per ulteriori informazioni, consulta [Abilitare l’accesso a Internet in uscita per i pod](external-snat.md).

Oltre ai parametri della riga di comando, è anche possibile specificare alcuni parametri delle variabili di ambiente. Quando si specifica un parametro della riga di comando, questo ha la precedenza sulla rispettiva variabile di ambiente. Le variabili di ambiente devono essere definite come ambito di computer (o sistema) perché lo script bootstrap leggerà solo le variabili con ambito di computer.

Lo script tiene conto delle seguenti variabili di ambiente:
+  `SERVICE_IPV4_CIDR`: per la definizione, fare riferimento al parametro della riga di comando `ServiceCIDR`.
+  `EXCLUDED_SNAT_CIDRS`: dovrebbe essere una stringa separata da virgole. Fare riferimento al parametro della riga di comando `ExcludedSnatCIDRs` per la definizione.

### Supporto dell’autenticazione gMSA
<a name="ad-and-gmsa-support"></a>

I pod Windows di Amazon EKS consentono diversi tipi di autenticazione dell’account del servizio gestito del gruppo (gMSA).
+ Amazon EKS supporta le identità di dominio di Active Directory per l’autenticazione. Per ulteriori informazioni sulla gMSA aggiunta a un dominio, consulta la sezione [Autenticazione di Windows su Amazon EKS Windowspods sul blog](https://aws.amazon.com/blogs/containers/windows-authentication-on-amazon-eks-windows-pods). AWS 
+ Amazon EKS offre un plug-in che consente ai nodi non-domain-joined Windows di recuperare le credenziali gMSA con un'identità utente portatile. Per ulteriori informazioni su gMSA senza dominio, consulta Domainless [Windows Authentication for](https://aws.amazon.com/blogs/containers/domainless-windows-authentication-for-amazon-eks-windows-pods) Amazon EKS Windowspods sul blog. AWS 

## Immagini di container memorizzate nella cache
<a name="windows-cached-container-images"></a>

Amazon EKS Windows Optimized AMIs dispone di alcune immagini di container memorizzate nella cache per il `containerd` runtime. Le immagini dei container vengono memorizzate nella cache durante la creazione personalizzata AMIs utilizzando componenti di compilazione gestiti da Amazon. Per ulteriori informazioni, consulta [Utilizzo del componente di compilazione gestito da Amazon](eks-custom-ami-windows.md#custom-windows-ami-build-component).

Le seguenti immagini di container memorizzate nella cache sono per il runtime `containerd`:
+  `amazonaws.com/eks/pause-windows` 
+  `mcr.microsoft.com/windows/nanoserver` 
+  `mcr.microsoft.com/windows/servercore` 

## Ulteriori informazioni
<a name="windows-more-information"></a>

Per ulteriori informazioni sull'uso di Windows ottimizzato per Amazon EKS AMIs, consulta le seguenti sezioni:
+ Per informazioni dettagliate sull'esecuzione di carichi di lavoro su Windows accelerato ottimizzato per Amazon EKS AMIs, consulta. [Esegui container accelerati da GPU (Windows su EC2 G-Series)](ml-eks-windows-optimized-ami.md)
+ Per utilizzare Windows con gruppi di nodi gestiti, consulta [Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti](managed-node-groups.md).
+ Per avviare nodi Windows autogestiti, consulta [Crea nodi Microsoft Windows autogestiti](launch-windows-workers.md).
+ Per informazioni sulla versione, consulta [Recupero delle informazioni sulla versione delle AMI Windows](eks-ami-versions-windows.md).
+ Per recuperare la versione più recente IDs di Windows ottimizzata per Amazon EKS AMIs, consulta[Recupera l'AMI Microsoft Windows consigliata IDs](retrieve-windows-ami-id.md).
+ Per utilizzare Amazon EC2 Image Builder per creare finestre personalizzate ottimizzate AMIs per Amazon EKS, consulta. [Creazione di un’AMI Windows personalizzata con Image Builder](eks-custom-ami-windows.md)
+ Per le best practice, consulta [Amazon EKS optimized Windows AMI management](https://aws.github.io/aws-eks-best-practices/windows/docs/ami/) nella *Guida alle best practice di EKS*.

# Creazione di nodi Windows Server 2022 autogestiti con `eksctl`
<a name="self-managed-windows-server-2022"></a>

È possibile utilizzare il seguente `test-windows-2022.yaml` come riferimento per creare nodi Windows Server 2022 autogestiti. Sostituisci ogni *example value* con i valori in tuo possesso.

**Nota**  
Per eseguire nodi Windows Server 2022 autogestiti, è necessario utilizzare versione `eksctl` [0.116.0](https://github.com/weaveworks/eksctl/releases/tag/v0.116.0) o una versione successiva.

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: windows-2022-cluster
  region: region-code
  version: '1.35'

nodeGroups:
  - name: windows-ng
    instanceType: m5.2xlarge
    amiFamily: WindowsServer2022FullContainer
    volumeSize: 100
    minSize: 2
    maxSize: 3
  - name: linux-ng
    amiFamily: AmazonLinux2
    minSize: 2
    maxSize: 3
```

È quindi possibile creare i gruppi di nodi utilizzando il comando seguente.

```
eksctl create cluster -f test-windows-2022.yaml
```

# Recupero delle informazioni sulla versione delle AMI Windows
<a name="eks-ami-versions-windows"></a>

[https://containerd.io/](https://containerd.io/)

I metadati di un'AMI ottimizzata per Amazon EKS, incluso l'ID AMI per ogni variante, possono essere recuperati a livello di programmazione. Per ulteriori informazioni, consulta [Recupera l'AMI Microsoft Windows consigliata IDs](retrieve-windows-ami-id.md).

AMIs sono aggiornati in base alla versione di Kubernetes e alla data di rilascio dell'AMI nel seguente formato:

```
k8s_major_version.k8s_minor_version-release_date
```

**Nota**  
I gruppi di nodi gestiti di Amazon EKS supportano le versioni di novembre 2022 e successive di Windows AMIs.

Per ricevere notifiche di tutte le modifiche al file di origine di questa pagina di documentazione specifica, puoi iscriverti al seguente URL con un lettore RSS:

```
https://github.com/awsdocs/amazon-eks-user-guide/commits/mainline/latest/ug/nodes/eks-ami-versions-windows.adoc.atom
```

## AMI Core per Windows Server 2025 ottimizzata per Amazon EKS
<a name="eks-ami-versions-windows-2025-core"></a>

Le tabelle seguenti elencano le versioni correnti e precedenti dell'AMI Core Windows Server 2025 ottimizzata per Amazon EKS.

**Example**  


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 

## AMI completa per Windows Server 2025 ottimizzata per Amazon EKS
<a name="eks-ami-versions-windows-2025-full"></a>

Le tabelle seguenti elencano le versioni attuali e precedenti dell'AMI completa Windows Server 2025 ottimizzata per Amazon EKS.

**Example**  


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 

## AMI Windows Server 2022 Core ottimizzata per Amazon EKS
<a name="eks-ami-versions-windows-2022-core"></a>

Le tabelle seguenti riportano le versioni correnti e precedenti dell’AMI Windows Server 2022 Core ottimizzata per Amazon EKS.

**Example**  


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  `containerd` è stato aggiornato a `2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.11`. `kubelet` è stato aggiornato a `1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.28`. CNI ricompilato e `csi-proxy` con uso di `golang 1.22.1`.  | 
|   `1.29-2024.03.12`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Risolto un bug a causa del quale l’immagine in pausa veniva eliminata erroneamente dal processo `kubelet` di rimozione di oggetti inutili (garbage collection).  | 
|   `1.29-2024.01.11`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  Windows Update autonomo escluso [KB5034439](https://support.microsoft.com/en-au/topic/kb5034439-windows-recovery-environment-update-for-azure-stack-hci-version-22h2-and-windows-server-2022-january-9-2024-6f9d26e6-784c-4503-a3c6-0beedda443ca)su Windows Server 2022 Core. AMIs La KB si applica solo alle installazioni Windows con una partizione WinRE separata, che non sono incluse in nessuno dei nostri Windows ottimizzati per Amazon EKS. AMIs  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.28`. `kubelet` è stato aggiornato a `1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.25`. CNI ricompilato e `csi-proxy` con uso di `golang 1.22.1`.  | 
|   `1.28-2024.03.12`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.11`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  Windows Update autonomo escluso [KB5034439](https://support.microsoft.com/en-au/topic/kb5034439-windows-recovery-environment-update-for-azure-stack-hci-version-22h2-and-windows-server-2022-january-9-2024-6f9d26e6-784c-4503-a3c6-0beedda443ca)su Windows Server 2022 Core. AMIs La KB si applica solo alle installazioni Windows con una partizione WinRE separata, che non sono incluse in nessuno dei nostri Windows ottimizzati per Amazon EKS. AMIs  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Include patch per `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.18`. Aggiunte nuove [variabili di ambiente dello script di bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) (`SERVICE_IPV4_CIDR` e `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Risolto un [avviso di sicurezza](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) in `kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## AMI Windows Server 2022 Full ottimizzata per Amazon EKS
<a name="eks-ami-versions-windows-2022-full"></a>

Le tabelle seguenti riportano le versioni correnti e precedenti dell’AMI Windows Server 2022 Full ottimizzata per Amazon EKS.

**Example**  


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  `containerd` è stato aggiornato a `2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  Aggiornamento di `containrd` a `1.7.27`   | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.01`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  `contianerd` è stato aggiornato a `1.7.20`.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.11`. `kubelet` è stato aggiornato a `1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.28`. CNI ricompilato e `csi-proxy` con uso di `golang 1.22.1`.  | 
|   `1.29-2024.03.12`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Risolto un bug a causa del quale l’immagine in pausa veniva eliminata erroneamente dal processo `kubelet` di rimozione di oggetti inutili (garbage collection).  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.28`. `kubelet` è stato aggiornato a `1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.25`. CNI ricompilato e `csi-proxy` con uso di `golang 1.22.1`.  | 
|   `1.28-2024.03.12`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Include patch per `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.18`. Aggiunte nuove [variabili di ambiente dello script di bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) (`SERVICE_IPV4_CIDR` e `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Risolto un [avviso di sicurezza](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) in `kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## AMI Windows Server, versione 2019 (Core) ottimizzata per Amazon EKS
<a name="eks-ami-versions-windows-2019-core"></a>

Le tabelle seguenti riportano le versioni correnti e precedenti dell’AMI Windows Server 2019 Core ottimizzata per Amazon EKS.

**Example**  


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  `containerd` è stato aggiornato a `2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.4`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.30-2025-02-15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.11`. `kubelet` è stato aggiornato a `1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.28`. CNI ricompilato e `csi-proxy` con uso di `golang 1.22.1`.  | 
|   `1.29-2024.03.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Risolto un bug a causa del quale l’immagine in pausa veniva eliminata erroneamente dal processo `kubelet` di rimozione di oggetti inutili (garbage collection).  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.28`. `kubelet` è stato aggiornato a `1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.25`. CNI ricompilato e `csi-proxy` con uso di `golang 1.22.1`.  | 
|   `1.28-2024.03.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Include patch per `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.18`. Aggiunte nuove [variabili di ambiente dello script di bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) (`SERVICE_IPV4_CIDR` e `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Risolto un [avviso di sicurezza](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) in `kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## AMI Windows Server, versione 2019 (Full) ottimizzata per Amazon EKS
<a name="eks-ami-versions-windows-2019-full"></a>

Le tabelle seguenti riportano le versioni correnti e precedenti dell’AMI Windows Server 2019 Full ottimizzata per Amazon EKS.

**Example**  


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  `containerd` è stato aggiornato a `2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.11`. `kubelet` è stato aggiornato a `1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.28`. CNI ricompilato e `csi-proxy` con uso di `golang 1.22.1`.  | 
|   `1.29-2024.03.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Risolto un bug a causa del quale l’immagine in pausa veniva eliminata erroneamente dal processo `kubelet` di rimozione di oggetti inutili (garbage collection).  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| Versione AMI | Versione kubelet | Versione containerd | Versione csi-proxy | Note di rilascio | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Modifica dei log del plugin GMSA in Eventi di Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` è stato aggiornato a `1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  `containerd` è stato aggiornato a `1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Include patch per `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Include patch per `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.28`. `kubelet` è stato aggiornato a `1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.25`. CNI ricompilato e `csi-proxy` con uso di `golang 1.22.1`.  | 
|   `1.28-2024.03.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Include patch per `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  `containerd` è stato aggiornato a `1.6.18`. Aggiunte nuove [variabili di ambiente dello script di bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) (`SERVICE_IPV4_CIDR` e `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Risolto un [avviso di sicurezza](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) in `kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

# Recupera l'AMI Microsoft Windows consigliata IDs
<a name="retrieve-windows-ami-id"></a>

Durante la distribuzione dei nodi, è possibile specificare un ID per un’Amazon Machine Image (AMI) preconfigurata e ottimizzata per Amazon EKS. Per recuperare un ID AMI adatto alla configurazione desiderata, interroga l'API AWS Systems Manager Parameter Store. L'utilizzo di questa API elimina la necessità di cercare manualmente le AMI ottimizzate per Amazon EKS IDs. Per ulteriori informazioni, consulta [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Il [principale IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) che usi deve disporre dell'autorizzazione IAM `ssm:GetParameter` per recuperare i metadati dell'AMI ottimizzata per Amazon EKS.

È possibile recuperare l’ID immagine della versione consigliata dell’AMI Windows ottimizzata per Amazon EKS più recente con il comando seguente che utilizza il parametro secondario `image_id`. Apportare le seguenti modifiche al comando, se necessario, quindi esegui il comando modificato:
+ Sostituisci *release* con una delle seguenti opzioni.
  + Utilizzare *2025* per Windows Server 2025.
  + Utilizzare *2022* per Windows Server 2022.
  + Utilizzare *2019* per Windows Server 2019.
+ Sostituisci *installation-option* con una delle seguenti opzioni. Per ulteriori informazioni, consulta [Cos’è l’opzione di installazione Server Core in Windows Server](https://learn.microsoft.com/en-us/windows-server/administration/server-core/what-is-server-core).
  + Utilizzare *Core* per un'installazione minima con una superficie di attacco più piccola.
  + *Full*Da utilizzare per includere l'esperienza desktop di Windows.
+ Sostituisci *kubernetes-version* con una versione della [piattaforma](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) supportata.
+ Sostituisci *region-code* con una [AWS regione supportata da Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) per la quale desideri l'ID AMI.

```
aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-release-English-installation-option-EKS_Optimized-kubernetes-version/image_id \
    --region region-code --query "Parameter.Value" --output text
```

Ecco un comando esemplificativo dopo la sostituzione dei segnaposto.

```
aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-2022-English-Core-EKS_Optimized-k8s-n-2/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Di seguito viene riportato un output di esempio.

```
ami-1234567890abcdef0
```

# Creazione di un’AMI Windows personalizzata con Image Builder
<a name="eks-custom-ami-windows"></a>

Puoi usare EC2 Image Builder per creare Windows personalizzati ottimizzati per Amazon EKS AMIs con una delle seguenti opzioni:
+  [Utilizzo di un’AMI Windows ottimizzata per Amazon EKS come base](#custom-windows-ami-as-base) 
+  [Utilizzo del componente di compilazione gestito da Amazon](#custom-windows-ami-build-component) 

In entrambi i casi, è necessario creare la propria ricetta di Image Builder. Per ulteriori informazioni, consulta la sezione [Creazione di una nuova versione di una ricetta di immagine](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html) nella Guida per l'utente di Image Builder.

**Importante**  
I seguenti componenti **gestiti da Amazon** per `eks` includono patch per `CVE-2024-5321`.  
 `1.28.2` e versioni successive
 `1.29.2` e versioni successive
 `1.30.1` e versioni successive
Tutte le versioni per Kubernetes 1.31 e versioni successive

## Utilizzo di un’AMI Windows ottimizzata per Amazon EKS come base
<a name="custom-windows-ami-as-base"></a>

Questa opzione è il metodo consigliato per creare Windows AMIs personalizzati. Le finestre ottimizzate per Amazon EKS AMIs che forniamo vengono aggiornate più frequentemente rispetto al componente di build gestito da Amazon.

1. Inizia a creare la tua ricetta di Image Builder.

   1. Aprire la console EC2 Image Builder in /imagebuilder. https://console.aws.amazon.com

   1. Nel riquadro di navigazione di sinistra, scegli **Ricette di immagini**.

   1. Scegli **Crea ricetta di immagine**.

1. Nella sezione **Dettagli della ricetta**, inserisci un **nome** e una **versione**.

1. Specifica l’ID dell’AMI Windows ottimizzata per Amazon EKS nella sezione **Immagine di base**.

   1. Scegli **Inserisci un ID dell'AMI personalizzata**.

   1. Recupera l’ID dell’AMI per la versione del sistema operativo Windows richiesta. Per ulteriori informazioni, consulta [Recupera l'AMI Microsoft Windows consigliata IDs](retrieve-windows-ami-id.md).

   1. Inserisci l'**ID dell'AMI** personalizzata. Se l'ID AMI non viene trovato, assicurati che la AWS regione per l'ID AMI corrisponda alla AWS regione mostrata nella parte superiore destra della console.

1. (Facoltativo) Per ottenere gli ultimi aggiornamenti di sicurezza, aggiungi il componente `update-windows` nella sezione **Componenti di compilazione**.

   1. Dall'elenco a discesa a destra della casella di ricerca **Trova componenti per nome** scegli **Gestito da Amazon**.

   1. Nella sezione **Trova componenti per nome**, inserisci `update-windows`.

   1. Seleziona la casella di controllo del risultato della ricerca **`update-windows`**. Il componente include le patch di Windows più recenti per il sistema operativo.

1. Completa gli input rimanenti della ricetta di immagine con le configurazioni richieste. Per ulteriori informazioni, consulta la sezione [Creazione di una nuova versione di una ricetta di immagine (console)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html#create-image-recipe-version-console) nella Guida per l'utente di Image Builder.

1. Scegli **Crea ricetta**.

1. Utilizza la nuova ricetta di immagine in una pipeline di immagini nuova o esistente. Una volta che la pipeline di immagini viene eseguita correttamente, l'AMI personalizzata verrà elencata come immagine di output e sarà pronta per l'uso. Per ulteriori informazioni, vedere [Creare una pipeline di immagini utilizzando la procedura guidata della console EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html).

## Utilizzo del componente di compilazione gestito da Amazon
<a name="custom-windows-ami-build-component"></a>

Quando non è possibile utilizzare un’AMI Windows ottimizzata per Amazon EKS come base, puoi utilizzare il componente di compilazione gestito da Amazon. Questa opzione potrebbe essere in ritardo rispetto alle versioni di Kubernetes supportate più recenti.

1. Inizia a creare la tua ricetta di Image Builder.

   1. Aprire la console EC2 Image Builder in /imagebuilder. https://console.aws.amazon.com

   1. Nel riquadro di navigazione di sinistra, scegli **Ricette di immagini**.

   1. Scegli **Crea ricetta di immagine**.

1. Nella sezione **Dettagli della ricetta**, inserisci un **nome** e una **versione**.

1. Determina quale opzione utilizzerai per creare la tua AMI personalizzata nella sezione **Immagine di base**:
   +  **Seleziona immagini gestite**: scegli **Windows** come **Sistema operativo (OS) per le immagini**. Quindi scegli una delle seguenti opzioni per **Origine dell'immagine**.
     +  **Quick start (gestito da Amazon)**: nell’elenco a discesa **Nome immagine**, seleziona una versione Windows Server supportata da Amazon EKS. Per ulteriori informazioni, consulta [Crea nodi con Windows ottimizzato AMIs](eks-optimized-windows-ami.md).
     +  **Immagini di mia proprietà**: per **Nome immagine**, seleziona l'ARN della tua immagine con la tua licenza. L’immagine fornita non deve avere componenti Amazon EKS già installati.
   +  **Inserisci l'ID dell'AMI personalizzata**: per l'ID dell'AMI, inserisci l'ID della tua AMI con la tua licenza. L’immagine fornita non deve avere componenti Amazon EKS già installati.

1. Nella sezione **Componenti di compilazione - Windows**, esegui le seguenti operazioni:

   1. Dall'elenco a discesa a destra della casella di ricerca **Trova componenti per nome** scegli **Gestito da Amazon**.

   1. Nella casella di ricerca **Trova componenti per nome**, inserisci `eks`.

   1. Seleziona la casella di controllo accanto al risultato della ricerca **`eks-optimized-ami-windows`**, anche se il risultato restituito potrebbe non essere la versione desiderata.

   1. Nella casella di ricerca **Trova componenti per nome**, inserisci `update-windows`.

   1. Seleziona la casella di controllo accanto al risultato della ricerca **update-windows**. Il componente include le patch di Windows più recenti per il sistema operativo.

1. Nella sezione **Componenti selezionati**, esegui le seguenti operazioni:

   1. Scegli **Opzioni di controllo delle versioni** per **`eks-optimized-ami-windows`**.

   1. Scegli **Specifica la versione del componente**.

   1. Nel campo **Versione del componente, inserisci, sostituendolo *version* con una versione** di *version.x* Kubernetes supportata. L'immissione *x* di una parte del numero di versione indica di utilizzare la versione più recente del componente che è anche in linea con la parte della versione definita in modo esplicito. Presta attenzione all'output della console, in quanto ti avviserà se la versione desiderata è disponibile come componente gestito. Tieni presente che le versioni di Kubernetes più recenti potrebbero non essere disponibili per il componente di compilazione. Per ulteriori informazioni sulle versioni disponibili, consulta [Recupero di informazioni sulle versioni dei componenti di `eks-optimized-ami-windows`](#custom-windows-ami-component-versions).

1. Completa gli input rimanenti della ricetta di immagine con le configurazioni richieste. Per ulteriori informazioni, consulta la sezione [Creazione di una nuova versione di una ricetta di immagine (console)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html#create-image-recipe-version-console) nella Guida per l'utente di Image Builder.

1. Scegli **Crea ricetta**.

1. Utilizza la nuova ricetta di immagine in una pipeline di immagini nuova o esistente. Una volta che la pipeline di immagini viene eseguita correttamente, l'AMI personalizzata verrà elencata come immagine di output e sarà pronta per l'uso. Per ulteriori informazioni, vedere [Creare una pipeline di immagini utilizzando la procedura guidata della console EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html).

## Recupero di informazioni sulle versioni dei componenti di `eks-optimized-ami-windows`
<a name="custom-windows-ami-component-versions"></a>

È possibile recuperare informazioni specifiche relative a ciò che viene installato con ciascun componente. Ad esempio, puoi verificare quale versione di `kubelet` è installata. I componenti sono sottoposti a test funzionali sulle versioni del sistema operativo Windows supportate da Amazon EKS. Per ulteriori informazioni, consulta [Calendario dei rilasci](eks-optimized-windows-ami.md#windows-ami-release-calendar). Altre eventuali versioni del sistema operativo Windows non elencate come supportate o che hanno raggiunto la fine del supporto potrebbero non essere compatibili con il componente.

1. Aprire la console EC2 Image Builder in /imagebuilder. https://console.aws.amazon.com

1. Nel riquadro di navigazione a sinistra, scegli **Componenti**.

1. Dall'elenco a discesa a destra della casella di ricerca **Trova componenti per nome**, modifica la selezione **Di mia proprietà** con **Quick start (gestito da Amazon)**.

1. Nella sezione **Trova componenti per nome,** inserire `eks`.

1. (Facoltativo) Se stai utilizzando una versione recente, ordina la colonna **Versione** in ordine decrescente selezionandola due volte.

1. Scegli il collegamento **`eks-optimized-ami-windows`** con la versione desiderata.

La **Descrizione** nella pagina risultante mostra le informazioni specifiche.

# Rileva i problemi di integrità dei nodi e abilita la riparazione automatica dei nodi
<a name="node-health"></a>

Lo stato del nodo si riferisce allo stato operativo e alla capacità di un nodo Kubernetes di eseguire efficacemente i carichi di lavoro. Un nodo integro mantiene la connettività di rete prevista, dispone di risorse di elaborazione e archiviazione sufficienti e può eseguire con successo i carichi di lavoro senza interruzioni.

*Per aiutare a mantenere i nodi integri nei cluster EKS, EKS offre l'*agente di monitoraggio dei nodi* e la riparazione automatica dei nodi.* Queste funzionalità vengono abilitate automaticamente con EKS Auto Mode Compute. È inoltre possibile utilizzare la riparazione automatica dei nodi con i gruppi di nodi gestiti da EKS e Karpenter e utilizzare l'agente di monitoraggio dei nodi EKS con qualsiasi tipo di elaborazione EKS ad eccezione di Fargate. AWS L'agente di monitoraggio dei nodi EKS e la riparazione automatica dei nodi sono più efficaci se usati insieme, ma possono anche essere usati singolarmente nei cluster EKS.

**Importante**  
L’*agente di monitoraggio dei nodi* e la *riparazione automatica dei nodi* sono disponibili solo su Linux. Queste funzionalità non sono disponibili su Windows.

## Agente di monitoraggio del nodo
<a name="node-monitoring-agent"></a>

L'agente di monitoraggio dei nodi EKS legge i log dei nodi per rilevare problemi di salute. Analizza i log per rilevare i guasti e fornisce informazioni sullo stato di salute dei nodi. Per ogni categoria di problemi rilevati, l'agente ne applica uno dedicato `NodeCondition` ai nodi di lavoro. Per informazioni dettagliate sui problemi di integrità dei nodi rilevati dall'agente di monitoraggio dei nodi EKS, vedere[Rileva i problemi di integrità dei nodi con l'agente di monitoraggio dei nodi EKS](node-health-nma.md).

Il calcolo in modalità automatica di EKS include l'agente di monitoraggio dei nodi. Per altri tipi di elaborazione EKS, puoi aggiungere l'agente di monitoraggio dei nodi come componente aggiuntivo EKS o gestirlo con strumenti Kubernetes come Helm. Per ulteriori informazioni, consulta [Configura l'agente di monitoraggio del nodo](node-health-nma.md#node-monitoring-agent-configure).

Con l'agente di monitoraggio dei nodi EKS, le seguenti categorie di problemi di integrità dei nodi vengono evidenziate come condizioni del nodo. Nota, `Ready``DiskPressure`, e `MemoryPressure` sono condizioni standard dei nodi Kubernetes che vengono rilevate anche senza l'agente di monitoraggio dei nodi EKS.


| Condizione del nodo | Description | 
| --- | --- | 
|  AcceleratedHardwareReady  |  AcceleratedHardwareReady indica se l'hardware accelerato (GPU, Neuron) sul nodo funziona correttamente.  | 
|  ContainerRuntimeReady  |  ContainerRuntimeReady indica se il runtime del contenitore (containerd, ecc.) funziona correttamente ed è in grado di eseguire contenitori.  | 
|  DiskPressure  |  DiskPressure è una condizione standard di Kubernetes che indica che il nodo sta subendo una pressione sul disco (spazio su disco insufficiente o I/O elevato).  | 
|  KernelReady  |  KernelReady indica se il kernel funziona correttamente senza errori critici, attacchi di panico o esaurimento delle risorse.  | 
|  MemoryPressure  |  MemoryPressure è una condizione standard di Kubernetes che indica che il nodo sta subendo una pressione della memoria (memoria disponibile insufficiente).  | 
|  NetworkingReady  |  NetworkingReady indica se lo stack di rete del nodo funziona correttamente (interfacce, routing, connettività).  | 
|  StorageReady  |  StorageReady indica se il sottosistema di archiviazione del nodo funziona correttamente (dischi, file system, I/O).  | 
|  Pronto  |  Ready è la condizione standard di Kubernetes che indica che il nodo è integro e pronto ad accettare i pod.  | 

## Riparazione automatica dei nodi
<a name="node-auto-repair"></a>

La riparazione automatica dei nodi EKS monitora continuamente lo stato dei nodi, reagisce ai problemi rilevati e sostituisce o riavvia i nodi quando possibile. Ciò migliora l'affidabilità del cluster con un intervento manuale minimo e aiuta a ridurre i tempi di inattività delle applicazioni.

Di per sé, la riparazione automatica dei nodi EKS reagisce alle `Ready` condizioni del kubelet, a tutti gli oggetti del nodo eliminati manualmente e alle istanze del gruppo di nodi gestite da EKS che non riescono a unirsi al cluster. Quando la riparazione automatica dei nodi EKS è abilitata con l'agente di monitoraggio dei nodi installato, la riparazione automatica dei nodi EKS reagisce a condizioni aggiuntive del nodo:`AcceleratedHardwareReady`,,, `ContainerRuntimeReady` e. `KernelReady` `NetworkingReady` `StorageReady`

La riparazione automatica dei nodi EKS non reagisce a Kubernetes `DiskPressure` standard o alle condizioni dei nodi. `MemoryPressure` `PIDPressure` Queste condizioni spesso indicano problemi relativi al comportamento dell'applicazione, alla configurazione del carico di lavoro o ai limiti delle risorse piuttosto che errori a livello di nodo, il che rende difficile determinare un'azione di riparazione predefinita appropriata. [In questi scenari, i carichi di lavoro sono soggetti al comportamento di eliminazione della pressione dei nodi Kubernetes.](https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction)

Per ulteriori informazioni sulla riparazione automatica dei nodi EKS, consulta. [Ripara automaticamente i nodi nei cluster EKS](node-repair.md)

**Topics**

# Rileva i problemi di integrità dei nodi con l'agente di monitoraggio dei nodi EKS
<a name="node-health-nma"></a>

Questo argomento descrive in dettaglio i problemi di integrità dei nodi rilevati dall'agente di monitoraggio dei nodi EKS, come tali problemi vengono rilevati sotto forma di condizioni o eventi del nodo e come configurare l'agente di monitoraggio dei nodi.

L'agente di monitoraggio dei nodi EKS può essere utilizzato con o senza la riparazione automatica dei nodi EKS. Per ulteriori informazioni sulla riparazione automatica dei nodi EKS, vedere[Ripara automaticamente i nodi nei cluster EKS](node-repair.md).

Il codice sorgente dell'agente di monitoraggio dei nodi EKS è pubblicato GitHub nel repository [aws/ eks-node-monitoring-agent](https://github.com/aws/eks-node-monitoring-agent).

## Problemi di integrità dei nodi
<a name="node-health-issues"></a>

Le tabelle seguenti descrivono i problemi di integrità dei nodi che possono essere rilevati dall’agente di monitoraggio dei nodi. Esistono due tipi di problemi:
+ Condizione: un problema del terminale che richiede un’azione di riparazione come la sostituzione o il riavvio dell’istanza. Quando la riparazione automatica è abilitata, Amazon EKS eseguirà un’azione di riparazione, sostituendo o riavviando il nodo. Per ulteriori informazioni, consulta [Condizioni dei nodi](learn-status-conditions.md#status-node-conditions).
+ Evento: un problema temporaneo o una configurazione non ottimale del nodo. Non sarà effettuata alcuna operazione di riparazione automatica. Per ulteriori informazioni, consulta [Eventi dei nodi](learn-status-conditions.md#status-node-events).

## AcceleratedHardware problemi di salute dei nodi
<a name="node-health-AcceleratedHardware"></a>

La condizione di monitoraggio riguarda `AcceleratedHardwareReady` per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”. Gli eventi e le condizioni nella tabella seguente riguardano i problemi di salute dei nodi relativi a NVIDIA e Neuron.


| Name | Gravità | Description | Azione di riparazione | 
| --- | --- | --- | --- | 
|  DCGMDiagnosticFallimento  |  Condizione  |  Un caso di test della suite di test della diagnostica attiva DCGM non è riuscito.  |  Nessuno  | 
|  DCGMError  |  Condizione  |  La connessione al processo host DCGM è stata interrotta o non è stato possibile stabilirla.  |  Nessuno  | 
|  DCGMFieldErrore [Codice]  |  Event  |  DCGM ha rilevato un deterioramento della GPU tramite un identificatore di campo.  |  Nessuno  | 
|  DCGMHealthCodice [Codice]  |  Event  |  Un controllo sanitario DCGM non è riuscito in modo non fatale.  |  Nessuno  | 
|  DCGMHealthCodice [Codice]  |  Condizione  |  Un controllo sanitario DCGM non è riuscito in modo fatale.  |  Nessuno  | 
|  Un neurone DMAError  |  Condizione  |  Un motore DMA ha rilevato un errore irreversibile.  |  Replace (Sostituisci)  | 
|  Errore HBMUncorrectable neuronale  |  Condizione  |  Un HBM ha riscontrato un errore non correggibile e ha prodotto risultati errati.  |  Replace (Sostituisci)  | 
|  Errore NCUncorrectable neuronale  |  Condizione  |  È stato rilevato un errore di memoria non correggibile di Neuron Core.  |  Replace (Sostituisci)  | 
|  Errore SRAMUncorrectable neuronale  |  Condizione  |  Una SRAM su chip ha rilevato un errore di parità e ha prodotto risultati errati.  |  Replace (Sostituisci)  | 
|  NvidiaDeviceCountMismatch  |  Event  |  Il numero di dispositivi GPUs visibili tramite NVML non è coerente con il numero di dispositivi NVIDIA sul file system.  |  Nessuno  | 
|  NvidiaDoubleBitError  |  Condizione  |  Un errore a doppio bit è stato prodotto dal driver della GPU.  |  Replace (Sostituisci)  | 
|  Nvidia NCCLError  |  Event  |  Si è verificato un errore di sicurezza nella libreria NVIDIA Collective Communications (). `libnccl`  |  Nessuno  | 
|  Errore Nvidia NVLink  |  Condizione  |  NVLink gli errori sono stati segnalati dal driver della GPU.  |  Replace (Sostituisci)  | 
|  Errore Nvidia PCIe  |  Event  |  PCIe i replay sono stati attivati per ripristinare gli errori di trasmissione.  |  Nessuno  | 
|  NvidiaPageRetirement  |  Event  |  Il driver della GPU ha contrassegnato una pagina di memoria come ritirata. Ciò può verificarsi se si riscontra un singolo errore a doppio bit o due errori a singolo bit nello stesso indirizzo.  |  Nessuno  | 
|  NvidiaPowerError  |  Event  |  L'utilizzo dell'energia ha GPUs superato le soglie consentite.  |  Nessuno  | 
|  NvidiaThermalError  |  Event  |  Stato termico del superamento delle soglie consentite GPUs .  |  Nessuno  | 
|  Errore nvidiaXID [Code]  |  Condizione  |  Si è verificato un errore critico della GPU.  |  Sostituisci o riavvia  | 
|  NvidiaXID[Code]Warning  |  Event  |  Si è verificato un errore non critico della GPU.  |  Nessuno  | 

## Codici di errore NVIDIA XID
<a name="nvidia-xid-codes"></a>

L'agente di monitoraggio dei nodi rileva gli errori NVIDIA XID dai log del kernel della GPU. Gli errori XID si dividono in due categorie:
+  **Codici XID noti**: errori critici che impostano una condizione del nodo (`AcceleratedHardwareReady=False`) e attivano la riparazione automatica quando abilitati. Il formato del codice motivo è`NvidiaXID[Code]Error`. I noti codici XID rilevati dall'agente di monitoraggio dei nodi EKS potrebbero non rappresentare l'elenco completo dei codici XID NVIDIA che richiedono azioni di riparazione.
+  **Codici XID sconosciuti**: registrati solo come eventi Kubernetes. Questi non attivano la riparazione dell'auto. Il formato del codice motivo è`NvidiaXID[Code]Warning`. Per verificare gli errori XID sconosciuti, controllate i log del kernel con. `dmesg | grep -i nvrm`

Per ulteriori informazioni sugli errori XID, consulta [Errori Xid](https://docs.nvidia.com/deploy/xid-errors/index.html#topic_5_1) nella *Documentazione di implementazione e gestione delle GPU NVIDIA*. Per ulteriori informazioni sui singoli messaggi XID, consulta [Comprensione dei messaggi Xid](https://docs.nvidia.com/deploy/gpu-debug-guidelines/index.html#understanding-xid-messages) nella *Documentazione di implementazione e gestione delle GPU NVIDIA*.

La tabella seguente elenca i codici XID più diffusi, il loro significato e l'azione di riparazione dei nodi predefinita, se abilitata.


| Codice XID | Description | Azione di riparazione | 
| --- | --- | --- | 
|  13  |  Eccezione del motore grafico: si è verificato un errore del motore grafico della GPU, in genere causato da problemi software o bug del driver.  |  Riavvio  | 
|  31  |  Errore nella pagina di memoria della GPU: un'applicazione ha tentato di accedere alla memoria della GPU che non è mappata o accessibile.  |  Riavvio  | 
|  48  |  Errore ECC a doppio bit: si è verificato un errore a doppio bit non correggibile nella memoria della GPU, che indica un potenziale degrado dell'hardware.  |  Riavvio  | 
|  63  |  Evento di rimappatura della memoria GPU: il driver GPU ha rimappato una parte della memoria GPU a causa di errori rilevati. Questo problema è spesso recuperabile.  |  Riavviare  | 
|  64  |  Errore di rimappatura della memoria della GPU: la GPU non è riuscita a rimappare la memoria difettosa, il che indica problemi hardware.  |  Riavvio  | 
|  74  |  NVLink Errore: si è verificato un errore nell' NVLink interconnessione ad alta velocità tra. GPUs  |  Replace (Sostituisci)  | 
|  79  |  La GPU è caduta dal bus: la GPU non è più accessibile tramite PCIe, il che in genere indica un guasto hardware o un problema di alimentazione.  |  Replace (Sostituisci)  | 
|  94  |  Errore di memoria contenuta: si è verificato un errore di memoria ma era contenuto e non ha influito sulle altre applicazioni.  |  Riavvio  | 
|  95  |  Errore di memoria non contenuta: si è verificato un errore di memoria che potrebbe aver influito su altre applicazioni o sulla memoria di sistema.  |  Riavvio  | 
|  119  |  Timeout GSP RPC: la comunicazione con il processore di sistema GPU è scaduta, probabilmente a causa di problemi del firmware.  |  Replace (Sostituisci)  | 
|  120  |  Errore GSP: si è verificato un errore nel processore di sistema GPU.  |  Replace (Sostituisci)  | 
|  121  |  Errore C2C: si è verificato un errore nell' chip-to-chipinterconnessione (utilizzata in multi-die). GPUs  |  Replace (Sostituisci)  | 
|  140  |  Errore ECC non recuperato: un errore ECC è sfuggito al contenimento e potrebbe aver danneggiato i dati.  |  Replace (Sostituisci)  | 

Per visualizzare le condizioni correnti del nodo relative allo stato della GPU, esegui il comando seguente.

```
kubectl get nodes -o custom-columns='NAME:.metadata.name,ACCELERATOR_READY:.status.conditions[?(@.type=="AcceleratedHardwareReady")].status,REASON:.status.conditions[?(@.type=="AcceleratedHardwareReady")].reason'
```

Per visualizzare gli eventi relativi a XID sul tuo cluster, esegui uno dei seguenti comandi.

```
kubectl get events | grep -i "NvidiaXID"
```

## ContainerRuntime problemi di salute dei nodi
<a name="node-health-ContainerRuntime"></a>

La condizione di monitoraggio riguarda `ContainerRuntimeReady` per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.


| Name | Gravità | Description | Azione di riparazione | 
| --- | --- | --- | --- | 
|  ContainerRuntimeFailed  |  Event  |  Il runtime del container non è riuscito a creare un container, probabilmente correlato a eventuali problemi segnalati se si verificano ripetutamente.  |  Nessuno  | 
|  DeprecatedContainerdConfiguration  |  Event  |  Un'immagine del contenitore che utilizza il manifesto dell'immagine obsoleta versione 2, schema 1, è stata recentemente inserita nel nodo. `containerd`  |  Nessuno  | 
|  KubeletFailed  |  Event  |  Il kubelet è entrato in uno stato di errore.  |  Nessuno  | 
|  LivenessProbeFailures  |  Event  |  È stato rilevato un errore della sonda liveness, che potrebbe indicare problemi nel codice dell’applicazione o nei valori di timeout insufficienti se si verificano ripetutamente.  |  Nessuno  | 
|  PodStuckTerminating  |  Condizione  |  Un pod è o è rimasto bloccato nella terminazione per un periodo di tempo eccessivo, il che può essere causato da errori CRI che impediscono la progressione dello stato del pod.  |  Replace (Sostituisci)  | 
|  ReadinessProbeFailures  |  Event  |  È stato rilevato un errore della sonda di preparazione, che potrebbe indicare problemi nel codice dell’applicazione o nei valori di timeout insufficienti se si verificano ripetutamente.  |  Nessuno  | 
|  [Nome] RepeatedRestart  |  Event  |  Un'unità systemd si riavvia frequentemente.  |  Nessuno  | 
|  ServiceFailedToStart  |  Event  |  Impossibile avviare un’unità systemd.  |  Nessuno  | 

## Problemi di integrità dei nodi del kernel
<a name="node-health-Kernel"></a>

La condizione di monitoraggio riguarda `KernelReady` per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.


| Name | Gravità | Description | Azione di riparazione | 
| --- | --- | --- | --- | 
|  AppBlocked  |  Event  |  L’attività è stata bloccata per un lungo periodo di tempo dalla pianificazione, in genere a causa del blocco in ingresso o in uscita.  |  Nessuno  | 
|  AppCrash  |  Event  |  Un’applicazione sul nodo si è bloccata.  |  Nessuno  | 
|  ApproachingKernelPidMax  |  Event  |  Il numero di processi si sta avvicinando al numero massimo di PIDs processi disponibili per l'`kernel.pid_max`impostazione corrente, dopo di che non è possibile avviare altri processi.  |  Nessuno  | 
|  ApproachingMaxOpenFiles  |  Event  |  Il numero di file aperti è simile al numero massimo di file aperti possibili date le impostazioni correnti del kernel, dopodiché l’apertura di nuovi file avrà esito negativo.  |  Nessuno  | 
|  ConntrackExceededKernel  |  Event  |  Il rilevamento delle connessioni ha superato il valore massimo per il kernel e non è stato possibile stabilire nuove connessioni, il che può causare la perdita di pacchetti.  |  Nessuno  | 
|  ExcessiveZombieProcesses  |  Event  |  I processi che non possono essere recuperati completamente si accumulano in gran numero, il che indica problemi di applicazione e può portare al raggiungimento dei limiti dei processi di sistema.  |  Nessuno  | 
|  ForkFailedOutOfPIDs  |  Condizione  |  Una chiamata fork o exec non è riuscita a causa dell'esaurimento del processo IDs o della memoria del sistema, che può essere causato da processi zombi o dall'esaurimento della memoria fisica.  |  Replace (Sostituisci)  | 
|  KernelBug  |  Event  |  Un bug del kernel è stato rilevato e segnalato dal kernel Linux stesso, sebbene a volte ciò può essere causato da nodi con un elevato utilizzo della CPU o della memoria, con conseguente ritardo nell’elaborazione degli eventi.  |  Nessuno  | 
|  LargeEnvironment  |  Event  |  Il numero di variabili di ambiente per questo processo è maggiore del previsto, potenzialmente causato da molti servizi `enableServiceLinks` impostati su true, il che può causare problemi di prestazioni.  |  Nessuno  | 
|  RapidCron  |  Event  |  Un cron job è eseguito più velocemente di ogni cinque minuti su questo nodo, il che può influire sulle prestazioni se il processo consuma risorse significative.  |  Nessuno  | 
|  SoftLockup  |  Event  |  La CPU si è bloccata per un periodo di tempo specificato.  |  Nessuno  | 

## Problemi di integrità dei nodi di rete
<a name="node-health-Networking"></a>

La condizione di monitoraggio riguarda `NetworkingReady` per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.


| Name | Gravità | Description | Azione di riparazione | 
| --- | --- | --- | --- | 
|  BandwidthInExceeded  |  Event  |  I pacchetti accodati o rilasciati perché la larghezza di banda aggregata in ingresso ha superato il valore massimo per l’istanza.  |  Nessuno  | 
|  BandwidthOutExceeded  |  Event  |  I pacchetti sono stati accodati o rilasciati perché la larghezza di banda aggregata in uscita ha superato il valore massimo per l’istanza.  |  Nessuno  | 
|  ConntrackExceeded  |  Event  |  Il rilevamento delle connessioni ha superato il valore massimo per l’istanza e non è stato possibile stabilire nuove connessioni, il che può determinare la perdita di pacchetti.  |  Nessuno  | 
|  EFAErrorParametro  |  Event  |  Le metriche dei driver EFA mostrano che esiste un'interfaccia con la riduzione delle prestazioni.  |  Nessuno  | 
|  IPAMDInconsistentStato  |  Event  |  Lo stato del checkpoint IPAMD su disco non riflette il runtime del contenitore. IPs   |  Nessuno  | 
|  IPAMDNoIPs  |  Event  |  IPAMD ha esaurito gli indirizzi IP.  |  Nessuno  | 
|  IPAMDNotPronto  |  Condizione  |  IPAMD non riesce a connettersi al server API.  |  Replace (Sostituisci)  | 
|  IPAMDNotCorrere  |  Condizione  |  Il processo CNI di Amazon VPC non è stato trovato in esecuzione.  |  Replace (Sostituisci)  | 
|  IPAMDRepeatedlyRiavvia  |  Event  |  Si sono verificati più riavvii del servizio IPAMD.  |  Nessuno  | 
|  InterfaceNotRunning  |  Condizione  |  Questa interfaccia sembra non essere in esecuzione o ci sono problemi di rete.  |  Replace (Sostituisci)  | 
|  InterfaceNotUp  |  Condizione  |  Questa interfaccia sembra non essere avviata o ci sono problemi di rete.  |  Replace (Sostituisci)  | 
|  KubeProxyNotReady  |  Event  |  Kube-proxy non è riuscito a controllare o elencare le risorse.  |  Nessuno  | 
|  LinkLocalExceeded  |  Event  |  I pacchetti sono stati accodati o rilasciati perché il PPS del traffico verso i servizi proxy locali ha superato il valore massimo per l’interfaccia di rete.  |  Nessuno  | 
|  MACAddressPolicyMisconfigured  |  Event  |  La configurazione del link systemd-networkd ha un valore errato. `MACAddressPolicy`  |  Nessuno  | 
|  MissingDefaultRoutes  |  Event  |  Mancano le regole di routing predefinite.  |  Nessuno  | 
|  Mancante IPRoutes  |  Event  |  Mancano alcune rotte per Pod IPs.  |  Nessuno  | 
|  Mancante IPRules  |  Event  |  Mancano delle regole per Pod IPs.  |  Nessuno  | 
|  MissingLoopbackInterface  |  Condizione  |  L’interfaccia di loopback non è presente in questa istanza, il che causa l’interruzione dei servizi a seconda della connettività locale.  |  Replace (Sostituisci)  | 
|  NetworkSysctl  |  Event  |  Le `sysctl` impostazioni di rete di questo nodo sono potenzialmente errate.  |  Nessuno  | 
|  PPSExceeded  |  Event  |  I pacchetti sono stati accodati o rilasciati perché il PPS bidirezionale ha superato il valore massimo per l’istanza.  |  Nessuno  | 
|  PortConflict  |  Event  |  Se un Pod utilizza HostPort, può scrivere `iptables` regole che sovrascrivono le porte già associate dell'host, impedendo potenzialmente l'accesso al server API. `kubelet`  |  Nessuno  | 
|  UnexpectedRejectRule  |  Event  |  È stata rilevata una `DROP` regola `REJECT` o imprevista nel traffico `iptables` previsto che potrebbe bloccare.  |  Nessuno  | 

## Problemi di integrità dei nodi di storage
<a name="node-health-Storage"></a>

La condizione di monitoraggio riguarda `StorageReady` per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.


| Name | Gravità | Description | Azione di riparazione | 
| --- | --- | --- | --- | 
|  EBSInstanceIOPSExceeded  |  Event  |  È stato superato il numero massimo di IOPS per l'istanza.  |  Nessuno  | 
|  EBSInstanceThroughputExceeded  |  Event  |  Il throughput massimo per l'istanza è stato superato.  |  Nessuno  | 
|  EBSVolumeIOPSExceeded  |  Event  |  È stato superato il numero massimo di IOPS per un determinato volume EBS.  |  Nessuno  | 
|  EBSVolumeThroughputExceeded  |  Event  |  È stato superato il throughput massimo per un determinato volume Amazon EBS.  |  Nessuno  | 
|  EtcHostsMountFailed  |  Event  |  Il montaggio del kubelet generato `/etc/hosts` non è riuscito a causa del rimontaggio dei dati utente durante il funzionamento. `/var/lib/kubelet/pods` `kubelet-container`  |  Nessuno  | 
|  IODelays  |  Event  |  Ritardo di ingresso o uscita rilevato in un processo, che potrebbe indicare un approvvigionamento input-output insufficiente, se eccessivo.  |  Nessuno  | 
|  KubeletDiskUsageSlow  |  Event  |  Segnala `kubelet` un utilizzo lento del disco durante il tentativo di accesso al filesystem. Ciò potrebbe indicare problemi di input-output del disco o problemi di file system insufficienti.  |  Nessuno  | 
|  XFSSmallAverageClusterSize  |  Event  |  La dimensione media del cluster XFS è piccola, il che indica un'eccessiva frammentazione dello spazio libero. Ciò può impedire la creazione di file nonostante gli inode disponibili o lo spazio libero.  |  Nessuno  | 

## Configura l'agente di monitoraggio del nodo
<a name="node-monitoring-agent-configure"></a>

L'agente di monitoraggio dei nodi EKS viene distribuito come DaemonSet. Quando lo distribuisci come componente aggiuntivo EKS, puoi personalizzare l'installazione con i seguenti valori di configurazione. [Per le configurazioni predefinite, fate riferimento alla tabella Helm dell'agente di monitoraggio dei nodi EKS.](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml)


| Opzione di configurazione | Description | 
| --- | --- | 
|   `monitoringAgent.resources.requests.cpu`   |  Richiesta di risorse CPU per l'agente di monitoraggio.  | 
|   `monitoringAgent.resources.requests.memory`   |  Richiesta di risorse di memoria per l'agente di monitoraggio.  | 
|   `monitoringAgent.resources.limits.cpu`   |  Limite di risorse della CPU per l'agente di monitoraggio.  | 
|   `monitoringAgent.resources.limits.memory`   |  Limite di risorse di memoria per l'agente di monitoraggio.  | 
|   `monitoringAgent.tolerations`   |  Tolleranze per la pianificazione dell'agente di monitoraggio sui nodi contaminati.  | 
|   `monitoringAgent.additionalArgs`   |  Argomenti aggiuntivi della riga di comando da passare all'agente di monitoraggio.  | 

**Nota**  
È possibile configurare `hostname-override` e `verbosity` utilizzare i componenti aggiuntivi EKS o l'installazione di Helm. `monitoringAgent.additionalArgs` Al momento non è possibile personalizzare l'agente di monitoraggio del nodo `probe-address` (`8002`) o `metrics-address` (`8003`) tramite args aggiuntivi con componenti aggiuntivi EKS o l'installazione di Helm.

L'agente di monitoraggio del nodo include un componente server NVIDIA DCGM (Data Center GPU Manager) () per il monitoraggio di NVIDIA. `nv-hostengine` GPUs [Questo componente funziona solo su nodi che sono tipi di istanze GPU NVIDIA, come mostrato nel grafico Helm dell'`nodeAffinity`agente.](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml) Non è possibile utilizzare un'installazione NVIDIA DCGM esistente con l'agente di monitoraggio dei nodi EKS. Se hai bisogno di questa funzionalità, fornisci un feedback sul [GitHub numero](https://github.com/aws/containers-roadmap/issues/2763) \$12763 della roadmap EKS.

Quando si implementa l'agente di monitoraggio dei nodi EKS come componente aggiuntivo EKS, è possibile personalizzare l'installazione NVIDIA DCGM con i seguenti valori di configurazione.


| Opzione di configurazione | Description | 
| --- | --- | 
|   `dcgmAgent.resources.requests.cpu`   |  Richiesta di risorse CPU per l'agente DCGM.  | 
|   `dcgmAgent.resources.requests.memory`   |  Richiesta di risorse di memoria per l'agente DCGM.  | 
|   `dcgmAgent.resources.limits.cpu`   |  Limite di risorse CPU per l'agente DCGM.  | 
|   `dcgmAgent.resources.limits.memory`   |  Limite di risorse di memoria per l'agente DCGM.  | 
|   `dcgmAgent.tolerations`   |  Tolleranze per la pianificazione dell'agente DCGM sui nodi contaminati.  | 

È possibile utilizzare i seguenti comandi AWS CLI per ottenere informazioni utili sulle versioni e sullo schema del componente aggiuntivo EKS dell'agente di monitoraggio dei nodi EKS.

Scarica l'ultima versione del componente aggiuntivo dell'agente per la tua versione di Kubernetes. Sostituiscila `1.35` con la tua versione di Kubernetes.

```
aws eks describe-addon-versions \
  --addon-name eks-node-monitoring-agent \
  --kubernetes-version 1.35 \
  --query='addons[].addonVersions[].addonVersion'
```

Scarica lo schema del componente aggiuntivo dell'agente supportato nei componenti aggiuntivi EKS. Sostituiscilo `v1.5.1-eksbuild.1` con la tua versione per agenti.

```
aws eks describe-addon-configuration \
  --addon-name eks-node-monitoring-agent \
  --addon-version v1.5.1-eksbuild.1
```

# Ripara automaticamente i nodi nei cluster EKS
<a name="node-repair"></a>

Questo argomento descrive in dettaglio il comportamento di riparazione automatica dei nodi EKS e come configurarlo per soddisfare le vostre esigenze. La riparazione automatica dei nodi EKS è abilitata di default nella modalità automatica EKS e può essere utilizzata con i gruppi di nodi gestiti da EKS e Karpenter.

Le azioni di riparazione automatica dei nodi EKS predefinite sono riassunte nella tabella seguente e si applicano al comportamento di EKS Auto Mode, dei gruppi di nodi gestiti da EKS e Karpenter. Quando si utilizza EKS Auto Mode o Karpenter`Replace`, tutte le azioni di `AcceleratedHardwareReady` riparazione sono supportate e solo i gruppi di nodi gestiti da EKS sono `Reboot` supportate come azioni di riparazione.

Per un elenco dettagliato dei problemi di salute dei nodi rilevati dall'agente di monitoraggio dei nodi EKS e le relative azioni di riparazione dei nodi, vedere. [Rileva i problemi di integrità dei nodi con l'agente di monitoraggio dei nodi EKS](node-health-nma.md)


| Condizione del nodo | Description | Riparazione dopo | Azioni di riparazione | 
| --- | --- | --- | --- | 
|  AcceleratedHardwareReady  |  AcceleratedHardwareReady indica se l'hardware accelerato (GPU, Neuron) sul nodo funziona correttamente.  |  10 m  |  Sostituisci o riavvia  | 
|  ContainerRuntimeReady  |  ContainerRuntimeReady indica se il runtime del contenitore (containerd, ecc.) funziona correttamente ed è in grado di eseguire contenitori.  |  30 m  |  Replace (Sostituisci)  | 
|  DiskPressure  |  DiskPressure è una condizione standard di Kubernetes che indica che il nodo sta subendo una pressione sul disco (spazio su disco insufficiente o I/O elevato).  |  N/D  |  Nessuno  | 
|  KernelReady  |  KernelReady indica se il kernel funziona correttamente senza errori critici, attacchi di panico o esaurimento delle risorse.  |  30 m  |  Replace (Sostituisci)  | 
|  MemoryPressure  |  MemoryPressure è una condizione standard di Kubernetes che indica che il nodo sta subendo una pressione della memoria (memoria disponibile insufficiente).  |  N/D  |  Nessuno  | 
|  NetworkingReady  |  NetworkingReady indica se lo stack di rete del nodo funziona correttamente (interfacce, routing, connettività).  |  30 m  |  Replace (Sostituisci)  | 
|  StorageReady  |  StorageReady indica se il sottosistema di archiviazione del nodo funziona correttamente (dischi, file system, I/O).  |  30 m  |  Replace (Sostituisci)  | 
|  Pronto  |  Ready è la condizione standard di Kubernetes che indica che il nodo è integro e pronto ad accettare i pod.  |  30 m  |  Replace (Sostituisci)  | 

Le azioni di riparazione automatica dei nodi EKS sono disabilitate per impostazione predefinita nei seguenti scenari. Le azioni di riparazione dei nodi in corso continuano in ogni scenario. Scopri [Configura la riparazione automatica dei nodi](#configure-node-repair) come sovrascrivere queste impostazioni predefinite.

 **Gruppi di nodi gestiti da EKS** 
+ Il gruppo di nodi ha più di cinque nodi e più del 20% dei nodi del gruppo di nodi non è integro.
+ Lo spostamento zonale del cluster viene attivato tramite l'Application Recovery Controller (ARC).

 **EKS Auto Mode e Karpenter** 
+ Oltre il 20% dei nodi presenti non NodePool sono sani.
+ In modalità standalone NodeClaims, il 20% dei nodi del cluster non è integro.

## Configura la riparazione automatica dei nodi
<a name="configure-node-repair"></a>

La riparazione automatica dei nodi non può essere configurata quando si utilizza la modalità automatica EKS ed è sempre abilitata con le stesse impostazioni predefinite di Karpenter.

### Karpenter
<a name="configure-node-repair-karpenter"></a>

Per utilizzare la riparazione automatica dei nodi con Karpenter, abilita il feature gate. `NodeRepair=true` È possibile abilitare i feature gate tramite l'opzione `--feature-gates` CLI o la variabile di `FEATURE_GATES` ambiente nella distribuzione di Karpenter. Per ulteriori informazioni, consulta la [documentazione di Karpenter](https://karpenter.sh/docs/concepts/disruption/#node-auto-repair).

### Gruppi di nodi gestiti
<a name="configure-node-repair-mng"></a>

È possibile abilitare la riparazione automatica dei nodi durante la creazione di nuovi gruppi di nodi gestiti EKS o aggiornando i gruppi di nodi gestiti EKS esistenti.
+  **Console Amazon EKS**: seleziona la casella di controllo **Abilita riparazione automatica del nodo** per il gruppo di nodi gestito. Per ulteriori informazioni, consulta [Creare un gruppo di nodi gestiti per il cluster](create-managed-node-group.md).
+  ** AWS CLI**: aggiungi `--node-repair-config enabled=true` al comando [https://docs.aws.amazon.com/cli/latest/reference/eks/create-nodegroup.html](https://docs.aws.amazon.com/cli/latest/reference/eks/create-nodegroup.html)or [https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html](https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html).
+  **eksctl** [— Configure`managedNodeGroups.nodeRepairConfig.enabled: true`, vedi l'esempio in eksctl. GitHub](https://github.com/eksctl-io/eksctl/blob/main/examples/44-node-repair.yaml)

Quando si utilizzano i gruppi di nodi gestiti da EKS, è possibile controllare il comportamento di riparazione automatica dei nodi con le seguenti impostazioni.

Per controllare quando la riparazione automatica del nodo smette di agire, imposta una soglia basata sul numero di nodi non integri nel gruppo di nodi. Imposta il conteggio assoluto o la percentuale, ma non entrambi.


| Impostazione | Description | 
| --- | --- | 
|   `maxUnhealthyNodeThresholdCount`   |  Il numero assoluto di nodi non integri al di sopra dei quali si interrompe la riparazione automatica del nodo. Utilizzatelo per limitare l'ambito delle riparazioni.  | 
|   `maxUnhealthyNodeThresholdPercentage`   |  La percentuale di nodi non integri al di sopra della quale si interrompe la riparazione automatica del nodo (0-100).  | 

Per controllare quanti nodi vengono riparati contemporaneamente, puoi configurare il parallelismo di riparazione. Come per la soglia dei nodi non integri, imposta il conteggio assoluto o la percentuale, ma non entrambi.


| Impostazione | Description | 
| --- | --- | 
|   `maxParallelNodesRepairedCount`   |  Il numero massimo di nodi da riparare contemporaneamente.  | 
|   `maxParallelNodesRepairedPercentage`   |  La percentuale massima di nodi non integri da riparare contemporaneamente (0-100).  | 

Con`nodeRepairConfigOverrides`, è possibile personalizzare il comportamento di riparazione per condizioni specifiche. Utilizzalo quando hai bisogno di diverse azioni di riparazione o tempi di attesa per diversi tipi di problemi.

Ogni override richiede tutti i seguenti campi:


| Campo | Description | 
| --- | --- | 
|   `nodeMonitoringCondition`   |  Il tipo di condizione del nodo riportato dall'agente di monitoraggio del nodo. Ad esempio:`AcceleratedHardwareReady`,`NetworkingReady`,`StorageReady`,`KernelReady`.  | 
|   `nodeUnhealthyReason`   |  Il codice causale specifico della condizione non salutare. Ad esempio, `NvidiaXID31Error`, `IPAMDNotRunning`.  | 
|   `minRepairWaitTimeMins`   |  Il tempo minimo, in minuti, in cui la condizione deve persistere prima che il nodo diventi idoneo alla riparazione. Usalo per evitare di riparare i nodi per problemi temporanei.  | 
|   `repairAction`   |  L'azione da intraprendere quando le condizioni sono soddisfatte. Valori validi: `Replace` (terminare e sostituire il nodo), `Reboot` (riavviare il nodo) o `NoAction` (nessuna azione di riparazione).  | 

L'esempio AWS CLI seguente crea un gruppo di nodi con impostazioni di riparazione personalizzate.

```
aws eks create-nodegroup \
  --cluster-name my-cluster \
  --nodegroup-name my-nodegroup \
  --node-role arn:aws:iam::111122223333:role/NodeRole \
  --subnets subnet-0123456789abcdef0 \
  --node-repair-config '{
    "enabled": true,
    "maxUnhealthyNodeThresholdPercentage": 10,
    "maxParallelNodesRepairedCount": 3,
    "nodeRepairConfigOverrides": [
      {
        "nodeMonitoringCondition": "AcceleratedHardwareReady",
        "nodeUnhealthyReason": "NvidiaXID64Error",
        "minRepairWaitTimeMins": 5,
        "repairAction": "Replace"
      },
      {
        "nodeMonitoringCondition": "AcceleratedHardwareReady",
        "nodeUnhealthyReason": "NvidiaXID31Error",
        "minRepairWaitTimeMins": 15,
        "repairAction": "NoAction"
      }
    ]
  }'
```

Questa configurazione esegue le seguenti operazioni:
+ Abilita la riparazione automatica del nodo
+ Interrompe le azioni di riparazione quando più del 10% dei nodi non è integro
+ Ripara fino a 3 nodi alla volta
+ Sostituisce gli errori XID 64 (errore di rimappatura della memoria GPU) per sostituire il nodo dopo 5 minuti. L'impostazione predefinita è il riavvio dopo 10 minuti.
+ Sostituisce gli errori XID 31 (errore della pagina di memoria della GPU) per non intraprendere alcuna azione. L'impostazione predefinita è il riavvio dopo 10 minuti.

# Visualizzazione dello stato di integrità dei nodi
<a name="learn-status-conditions"></a>

Questo argomento spiega gli strumenti e i metodi disponibili per monitorare lo stato di integrità dei nodi nei cluster Amazon EKS. Le informazioni riguardano le condizioni dei nodi, gli eventi e i casi di rilevamento che aiutano a identificare e diagnosticare problemi a livello di nodo. Utilizza i comandi e gli schemi descritti qui per ispezionare le risorse dello stato dei nodi, interpretare le condizioni dello stato e analizzare gli eventi dei nodi per la risoluzione dei problemi operativi.

Puoi ottenere alcune informazioni sullo stato dei nodi con i comandi Kubernetes per tutti i nodi. E se utilizzi l’agente di monitoraggio dei nodi tramite la modalità automatica di Amazon EKS o il componente aggiuntivo gestito Amazon EKS, otterrai una più ampia varietà di segnali di nodo per aiutarti a risolvere i problemi. Le descrizioni dei problemi di integrità rilevati dall’agente di monitoraggio dei nodi sono disponibili anche nella dashboard di osservabilità. Per ulteriori informazioni, consulta [Rileva i problemi di integrità dei nodi con l'agente di monitoraggio dei nodi EKS](node-health-nma.md).

## Condizioni dei nodi
<a name="status-node-conditions"></a>

Le condizioni dei nodi rappresentano problemi terminali che richiedono azioni di riparazione come la sostituzione o il riavvio dell’istanza.

 **Per ottenere le condizioni per tutti i nodi:** 

```
kubectl get nodes -o 'custom-columns=NAME:.metadata.name,CONDITIONS:.status.conditions[*].type,STATUS:.status.conditions[*].status'
```

 **Per ottenere condizioni dettagliate per un nodo specifico** 

```
kubectl describe node node-name
```

 **Esempio di output delle condizioni di un nodo integro:** 

```
  - lastHeartbeatTime: "2024-11-21T19:07:40Z"
    lastTransitionTime: "2024-11-08T03:57:40Z"
    message: Monitoring for the Networking system is active
    reason: NetworkingIsReady
    status: "True"
    type: NetworkingReady
```

 **Esempio di condizione di un nodo non integro con un problema di rete:** 

```
  - lastHeartbeatTime: "2024-11-21T19:12:29Z"
    lastTransitionTime: "2024-11-08T17:04:17Z"
    message: IPAM-D has failed to connect to API Server which could be an issue with
      IPTable rules or any other network configuration.
    reason: IPAMDNotReady
    status: "False"
    type: NetworkingReady
```

## Eventi dei nodi
<a name="status-node-events"></a>

Gli eventi dei nodi indicano problemi temporanei o configurazioni non ottimali.

 **Per ottenere tutti gli eventi segnalati dall’agente di monitoraggio dei nodi** 

Quando l’agente di monitoraggio dei nodi è disponibile, puoi eseguire il comando seguente.

```
kubectl get events --field-selector=reportingComponent=eks-node-monitoring-agent
```

Output di esempio:

```
LAST SEEN   TYPE      REASON       OBJECT                                              MESSAGE
4s          Warning   SoftLockup   node/ip-192-168-71-251.us-west-2.compute.internal   CPU stuck for 23s
```

 **Per ottenere eventi per tutti i nodi** 

```
kubectl get events --field-selector involvedObject.kind=Node
```

 **Per ottenere eventi per un nodo specifico** 

```
kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=node-name
```

 **Per osservare gli eventi in tempo reale** 

```
kubectl get events -w --field-selector involvedObject.kind=Node
```

 **Esempio di output di un evento:** 

```
LAST SEEN   TYPE     REASON           OBJECT         MESSAGE
2m          Warning  MemoryPressure   Node/node-1    Node experiencing memory pressure
5m          Normal   NodeReady        Node/node-1    Node became ready
```

## Comandi per la risoluzione dei problemi comuni
<a name="status-node-troubleshooting"></a>

```
# Get comprehensive node status
kubectl get node node-name -o yaml

# Watch node status changes
kubectl get nodes -w

# Get node metrics
kubectl top node
```

# Recuperare i log dei nodi per un nodo gestito usando kubectl e S3
<a name="auto-get-logs"></a>

Scopri come recuperare i log dei nodi per un nodo gestito di Amazon EKS che dispone dell’agente di monitoraggio dei nodi.

## Prerequisiti
<a name="_prerequisites"></a>

Verifica di disporre di quanto segue:
+ Un cluster Amazon EKS esistente con agente di monitoraggio dei nodi. Per ulteriori informazioni, consulta [Rileva i problemi di integrità dei nodi e abilita la riparazione automatica dei nodi](node-health.md).
+ Lo strumento di riga di comando `kubectl` installato e configurato per comunicare con il cluster.
+ La AWS CLI è stata installata e ha effettuato l'accesso con autorizzazioni sufficienti per creare bucket e oggetti S3.
+ Una versione recente di Python 3 installata
+ L' AWS SDK per Python 3, Boto 3, è installato.

## Fase 1: Creare di una destinazione bucket S3 (facoltativo)
<a name="_step_1_create_s3_bucket_destination_optional"></a>

Se non disponi già di un bucket S3 in cui archiviare i log, creane uno. Usa il seguente comando AWS CLI. Per impostazione predefinita, il bucket è l’elenco di controllo degli accessi `private`. Sostituisci *bucket-name* con il nome univoco del bucket scelto.

```
aws s3api create-bucket --bucket <bucket-name>
```

## Fase 2: Creare un URL S3 prefirmato per HTTP Put
<a name="_step_2_create_pre_signed_s3_url_for_http_put"></a>

Amazon EKS restituisce i log dei nodi eseguendo un’operazione HTTP PUT su un URL specificato. In questo tutorial, genereremo un URL PUT HTTP S3 prefirmato.

I log verranno restituiti come gzip tarball, con l’estensione `.tar.gz`.

**Nota**  
È necessario utilizzare l' AWS API o un SDK per creare l'URL di caricamento S3 prefirmato per consentire a EKS di caricare il file di registro. Non puoi creare un URL di caricamento S3 prefirmato utilizzando la CLI AWS .

1. Determina in che punto del bucket desideri archiviare i log. Ad esempio, puoi usare *2024-11-12/logs1.tar.gz* come chiave.

1. Salva il seguente codice Python sul file *presign-upload.py*. Sostituisci *<bucket-name>* e *<key>*. La chiave deve terminare con `.tar.gz`.

   ```
   import boto3; print(boto3.client('s3').generate_presigned_url(
      ClientMethod='put_object',
      Params={'Bucket': '<bucket-name>', 'Key': '<key>'},
      ExpiresIn=1000
   ))
   ```

1. Esegui lo script con

   ```
   python presign-upload.py
   ```

1. Annota l’output dell’URL. Usa questo valore nella fase successiva come *http-put-destination*.

Per ulteriori informazioni, consulta [Generare un URL predefinito per caricare un file nella documentazione](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html#generating-a-presigned-url-to-upload-a-file) AWS Boto3 SDK per Python.

## Fase 3: Creare una risorsa NodeDiagnostic
<a name="_step_3_create_nodediagnostic_resource"></a>

Identifica il nome del nodo da cui si desidera raccogliere i log.

Crea un manifesto `NodeDiagnostic` che utilizzi il nome del nodo come nome della risorsa e fornire una destinazione URL PUT HTTP.

```
apiVersion: eks.amazonaws.com/v1alpha1
kind: NodeDiagnostic
metadata:
    name: <node-name>
spec:
    logCapture:
        destination: http-put-destination
```

Applica il file manifesto al cluster.

```
kubectl apply -f nodediagnostic.yaml
```

Puoi controllare lo stato della raccolta descrivendo la risorsa `NodeDiagnostic`:
+ Uno stato di `Success` o `SuccessWithErrors` indica che l’attività è stata completata e i log sono stati caricati nella destinazione fornita (`SuccessWithErrors` indica che alcuni log potrebbero mancare).
+ Se lo stato è Failure, conferma che l’URL di caricamento è ben formato e non è scaduto.

```
kubectl describe nodediagnostics.eks.amazonaws.com/<node-name>
```

## Fase 4: Scaricare log da S3
<a name="_step_4_download_logs_from_s3"></a>

Attendi circa un minuto prima di tentare di scaricare i log. Quindi, usa la CLI di S3 per scaricare i log.

```
# Once NodeDiagnostic shows Success status, download the logs
aws s3 cp s3://<bucket-name>/key ./<path-to-node-logs>.tar.gz
```

## Fase 5: Pulizia della NodeDiagnostic risorsa
<a name="_step_5_clean_up_nodediagnostic_resource"></a>
+  Le risorse `NodeDiagnostic` non vengono eliminate automaticamente. Devi eliminarle in autonomia dopo aver ottenuto gli artefatti del log.

```
# Delete the NodeDiagnostic resource
kubectl delete nodediagnostics.eks.amazonaws.com/<node-name>
```

## NodeDiagnostic `node`Destinazione
<a name="_nodediagnostic_node_destination"></a>

A partire dalla versione `v1.6.0` di Node Monitoring Agent, è disponibile un'opzione su cui impostare la destinazione della raccolta dei log`node`. L'utilizzo di questa destinazione porterà alla raccolta e alla persistenza temporanea dei log sul nodo per la raccolta successiva. Oltre a questa funzionalità, all'interno del GitHub repository di Node Monitoring Agent è presente un `kubectl` plug-in che è possibile installare per facilitare l'interazione e la raccolta dei log. Per ulteriori informazioni, consulta [la documentazione del `kubectl ekslogs` plugin](https://github.com/aws/eks-node-monitoring-agent/blob/main/tools/kubectl-ekslogs/README.md).

## Esempio di utilizzo
<a name="_example_usage"></a>

```
# Collect NodeDiagnostic logs from a single node
kubectl ekslogs <node-name>

# Collect NodeDiagnostic logs from multiple nodes
kubectl ekslogs <node-name-1> <node-name-2> <node-name-3>

# Collect NodeDiagnostic logs from all nodes with a specific label
kubectl ekslogs -l <key>=<value>
```

# Panoramica di Amazon EKS Hybrid Nodes
<a name="hybrid-nodes-overview"></a>

Con *Amazon EKS Hybrid Nodes*, puoi utilizzare la tua infrastruttura on-premises ed edge come nodi nei cluster Amazon EKS. AWS gestisce il piano di controllo Kubernetes ospitato da AWS del cluster Amazon EKS e tu gestisci i nodi ibridi che vengono eseguiti nei tuoi ambienti on-premises o edge. Ciò unifica la gestione di Kubernetes in tutti gli ambienti e affida la gestione del piano di controllo di Kubernetes a AWS per le applicazioni on-premises ed edge.

Amazon EKS Hybrid Nodes funziona con qualsiasi hardware o macchina virtuale on-premises, portando l’efficienza, la scalabilità e la disponibilità di Amazon EKS ovunque sia necessario eseguire le applicazioni. Puoi utilizzare un’ampia gamma di funzionalità di Amazon EKS con Amazon EKS Hybrid Nodes, tra cui componenti aggiuntivi Amazon EKS, Amazon EKS Pod Identity, voci di accesso al cluster, informazioni sui cluster e supporto esteso per le versioni di Kubernetes. Amazon EKS Hybrid Nodes si integra in modo nativo con i servizi AWS tra cui Systems Manager di AWS, IAM Roles Anywhere di AWS, il Servizio gestito da Amazon per Prometheus e Amazon CloudWatch per il monitoraggio centralizzato, la registrazione e la gestione delle identità.

Con Amazon EKS Hybrid Nodes non sono previsti impegni anticipati o tariffe minime e ti viene addebitato un costo orario per le risorse vCPU dei tuoi nodi ibridi quando sono collegati ai cluster Amazon EKS. Per ulteriori informazioni, consulta [Prezzi di Amazon EKS](https://aws.amazon.com/eks/pricing/).

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/tFn9IdlddBw?rel=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/tFn9IdlddBw?rel=0)


## Caratteristiche
<a name="hybrid-nodes-features"></a>

EKS Hybrid Nodes offre le seguenti funzionalità di alto livello:
+  **Piano di controllo Kubernetes gestito**: AWS gestisce il piano di controllo Kubernetes ospitato da AWS del cluster EKS e tu gestisci i nodi ibridi che vengono eseguiti negli ambienti on-premises o edge. Ciò unifica la gestione di Kubernetes in tutti gli ambienti e affida la gestione del piano di controllo di Kubernetes a AWS per le applicazioni on-premises ed edge. Spostando il piano di controllo Kubernetes su AWS, puoi conservare la capacità on-premises per le tue applicazioni e avere la certezza che il piano di controllo Kubernetes sia scalabile in base ai carichi di lavoro.
+  **Esperienza EKS coerente**: la maggior parte delle funzionalità EKS è supportata da EKS Hybrid Nodes per un’esperienza EKS coerente in tutti gli ambienti on-premises e cloud, inclusi componenti aggiuntivi EKS, EKS Pod Identity, voci di accesso al cluster, approfondimenti sui cluster, supporto esteso delle versioni di Kubernetes e altro ancora. Per ulteriori informazioni sui componenti aggiuntivi EKS supportati con EKS Hybrid Nodes, consulta [Configurare componenti aggiuntivi per nodi ibridi](hybrid-nodes-add-ons.md).
+  **Osservabilità centralizzata e gestione delle identità**: EKS Hybrid Nodes si integra in modo nativo con i servizi AWS tra cui Systems Manager di AWS, IAM Roles Anywhere di AWS, il Servizio gestito da Amazon per Prometheus e Amazon CloudWatch per il monitoraggio centralizzato, la registrazione e la gestione delle identità.
+  **Burst-to-cloud o aggiunta di capacità on-premises**: un singolo cluster EKS può essere utilizzato per eseguire nodi e nodi ibridi in Regioni AWS, Zone locali AWS oppure Outpost AWS per burst-to-cloud o per aggiungere capacità on-premises ai cluster EKS. Per ulteriori informazioni, consulta [Considerations for mixed mode clusters](hybrid-nodes-webhooks.md#hybrid-nodes-considerations-mixed-mode).
+  **Infrastruttura flessibile**: EKS Hybrid Nodes segue un *approccio basato sull’infrastruttura personalizzata* ed è agnostico rispetto all’infrastruttura utilizzata per i nodi ibridi. Puoi eseguire nodi ibridi su macchine fisiche o virtuali e architetture x86 e ARM, rendendo possibile la migrazione dei carichi di lavoro on-premises in esecuzione su nodi ibridi su diversi tipi di infrastruttura.
+  **Rete flessibile**: con EKS Hybrid Nodes, la comunicazione tra il piano di controllo EKS e i nodi ibridi viene instradata attraverso il VPC e le sottoreti trasferite durante la creazione del cluster, il che si basa sul [meccanismo esistente](https://docs.aws.amazon.com/eks/latest/best-practices/subnets.html) in EKS per il networking dal piano di controllo al nodo. Ciò offre flessibilità rispetto al tuo metodo preferito per connettere le reti on-premises a un VPC in AWS. Sono disponibili diverse [opzioni documentate](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html), tra cui VPN sito-sito di AWS, Direct Connect di AWS o la soluzione VPN, e puoi scegliere il metodo più adatto al tuo caso d’uso.

## Limiti
<a name="hybrid-node-limits"></a>
+ Per ciascun cluster sono supportati fino a 15 CIDR per reti di nodi remoti e 15 CIDR per reti di pod remoti.

## Considerazioni
<a name="hybrid-nodes-general"></a>
+ EKS Hybrid Nodes può essere utilizzato con cluster EKS nuovi o esistenti.
+ EKS Hybrid Nodes è disponibile in tutte le Regioni AWS, ad eccezione delle Regioni AWS GovCloud (Stati Uniti) e delle Regioni AWS in Cina.
+ EKS Hybrid Nodes deve disporre di una connessione affidabile tra l’ambiente on-premises e AWS. EKS Hybrid Nodes non è adatto per ambienti disconnessi, interrotti, intermittenti o limitati (DDIL). Se utilizzi un ambiente DDIL, prendi in considerazione [Amazon EKS Anywhere](https://aws.amazon.com/eks/eks-anywhere/). Consulta [Best practice for EKS Hybrid Nodes](https://docs.aws.amazon.com/eks/latest/best-practices/hybrid-nodes-network-disconnections.html) per informazioni sul comportamento dei nodi ibridi nei casi di disconnessione della rete.
+ Non è supportata l’esecuzione di EKS Hybrid Nodes sull’infrastruttura cloud, tra cui Regioni AWS, Zone locali AWS, Outpost AWS o in altri cloud. Ti verrà addebitata la tariffa per i nodi ibridi se esegui nodi ibridi su istanze Amazon EC2.
+ La fatturazione per i nodi ibridi inizia quando i nodi si uniscono al cluster EKS e si interrompe quando i nodi vengono rimossi dal cluster. Assicurati di rimuovere i nodi ibridi dal cluster EKS se non li utilizzi.

## Risorse aggiuntive
<a name="hybrid-nodes-resources"></a>
+  [https://www.eksworkshop.com/docs/networking/eks-hybrid-nodes/](https://www.eksworkshop.com/docs/networking/eks-hybrid-nodes/): istruzioni dettagliate per l’implementazione di EKS Hybrid Nodes in un ambiente demo.
+  [https://www.youtube.com/watch?v=ZxC7SkemxvU](https://www.youtube.com/watch?v=ZxC7SkemxvU): sessione di AWS re:Invent che presenta il lancio di EKS Hybrid Nodes con un cliente che mostra come utilizza EKS Hybrid Nodes nel proprio ambiente.
+  [https://repost.aws/articles/ARL44xuau6TG2t-JoJ3mJ5Mw/unpacking-the-cluster-networking-for-amazon-eks-hybrid-nodes](https://repost.aws/articles/ARL44xuau6TG2t-JoJ3mJ5Mw/unpacking-the-cluster-networking-for-amazon-eks-hybrid-nodes): articolo che spiega vari metodi per configurare la rete per EKS Hybrid Nodes.
+  [https://aws.amazon.com/blogs/containers/run-genai-inference-across-environments-with-amazon-eks-hybrid-nodes/](https://aws.amazon.com/blogs/containers/run-genai-inference-across-environments-with-amazon-eks-hybrid-nodes/): post sul blog che mostra come eseguire l’inferenza GenAI in ambienti con EKS Hybrid Nodes.

# Configurazione dei prerequisiti per i nodi ibridi
<a name="hybrid-nodes-prereqs"></a>

Per utilizzare Amazon EKS Hybrid Nodes, devi disporre di connettività privata dal tuo ambiente locale da/verso AWS server bare metal o macchine virtuali con un sistema operativo supportato e attivare attivazioni ibride AWS IAM Roles Anywhere o AWS Systems Manager (SSM) configurate. Sei responsabile della gestione di questi prerequisiti durante l’intero ciclo di vita dei nodi ibridi.
+ Connettività di rete ibrida dall'ambiente locale da/verso AWS 
+ Infrastruttura sotto forma di macchine fisiche o virtuali
+ Sistema operativo compatibile con i nodi ibridi
+ Provider di credenziali IAM on-premises configurato

![\[Connettività di rete a nodi ibridi.\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-prereq-diagram.png)


## Connettività di rete ibrida
<a name="hybrid-nodes-prereqs-connect"></a>

La comunicazione tra il piano di controllo di Amazon EKS e i nodi ibridi viene instradata attraverso il VPC e le sottoreti trasferite durante la creazione del cluster, il che si basa sul [meccanismo esistente](https://aws.github.io/aws-eks-best-practices/networking/subnets/) in Amazon EKS per il networking dal piano di controllo al nodo. Sono disponibili diverse [opzioni documentate](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) per connettere l'ambiente locale al VPC AWS Site-to-Site , tra cui VPN, AWS Direct Connect o la propria connessione VPN. Consulta le guide utente di [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) e [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) per ulteriori informazioni su come utilizzare queste soluzioni per la connessione di rete ibrida.

Per un'esperienza ottimale, ti consigliamo di disporre di una connettività di rete affidabile di almeno 100 Mbps e una latenza massima di 200 ms di andata e ritorno per la connessione dei nodi ibridi alla Regione. AWS Questa è una guida generale adatta alla maggior parte dei casi d’uso, ma non è un requisito fondamentale. I requisiti di larghezza di banda e latenza possono variare in base al numero di nodi ibridi e alle caratteristiche del carico di lavoro, come la dimensione dell'immagine dell'applicazione, l'elasticità dell'applicazione, le configurazioni di monitoraggio e registrazione e le dipendenze delle applicazioni dall'accesso ai dati archiviati in altri servizi. AWS Ti consigliamo di eseguire test con applicazioni e ambienti prima di passare all’implementazione per verificare che la configurazione di rete soddisfi i requisiti per i carichi di lavoro.

## Configurazione di reti on-premises
<a name="hybrid-nodes-prereqs-onprem"></a>

Devi abilitare l’accesso alla rete in entrata dal piano di controllo di Amazon EKS all’ambiente on-premises per consentire al piano di controllo di Amazon EKS di comunicare con il `kubelet` in esecuzione sui nodi ibridi e, facoltativamente, con i webhook in esecuzione sui nodi ibridi. Inoltre, devi abilitare l’accesso alla rete in uscita per i nodi ibridi e i componenti in esecuzione su di essi per comunicare con il piano di controllo di Amazon EKS. Puoi configurare questa comunicazione in modo che rimanga completamente privata con AWS Direct Connect, AWS Site-to-Site VPN o la tua connessione VPN.

Gli intervalli CIDR (Classless Inter-Domain Routing) utilizzati per le reti di nodi e pod locali devono utilizzare IPv4 intervalli di indirizzi RFC-1918 o CGNAT. Il router on-premises deve essere configurato con percorsi verso i nodi locali e, facoltativamente, verso i pod. Consulta [Configurazione di rete on-premises](hybrid-nodes-networking.md#hybrid-nodes-networking-on-prem) per ulteriori informazioni sui requisiti di rete on-premises, incluso l’elenco completo delle porte e dei protocolli richiesti che devono essere abilitati nel firewall e nell’ambiente on-premises.

## Configurazione del cluster EKS
<a name="hybrid-nodes-prereqs-cluster"></a>

Per ridurre al minimo la latenza, ti consigliamo di creare il tuo cluster Amazon EKS nella AWS regione più vicina al tuo ambiente locale o edge. Passi il nodo e il pod locali CIDRs durante la creazione del cluster Amazon EKS tramite due campi API: `RemoteNodeNetwork` e`RemotePodNetwork`. Potrebbe essere necessario parlare con il team di rete locale per identificare il nodo e il pod locali. CIDRs Il CIDR dei nodi viene allocato dalla rete on-premises e il CIDR dei pod viene allocato dalla Container Network Interface (CNI) che utilizzi se utilizzi una rete overlay per la tua CNI. Cilium e Calico utilizzano reti overlay per impostazione predefinita.

Il nodo e il pod locali CIDRs che configuri tramite i `RemotePodNetwork` campi `RemoteNodeNetwork` and vengono utilizzati per configurare il piano di controllo di Amazon EKS per indirizzare il traffico attraverso il tuo VPC verso `kubelet` i pod in esecuzione sui tuoi nodi ibridi. Il nodo e il pod locali CIDRs non possono sovrapporsi tra loro, il CIDR VPC che passi durante la creazione del cluster o la configurazione del servizio IPv4 per il tuo cluster Amazon EKS. Inoltre, Pod CIDRs deve essere unico per ogni cluster EKS in modo che il router locale possa instradare il traffico.

Ti consigliamo di utilizzare l’accesso agli endpoint pubblico o privato per l’endpoint del server API Amazon EKS Kubernetes. Se scegli «Pubblico e privato», l'endpoint del server API Amazon EKS Kubernetes verrà sempre convertito in pubblico IPs per i nodi ibridi in esecuzione al di fuori del tuo VPC, il che può impedire ai nodi ibridi di entrare a far parte del cluster. Quando utilizzi l'accesso pubblico agli endpoint, l'endpoint del server dell'API Kubernetes viene convertito in pubblico IPs e la comunicazione dai nodi ibridi al piano di controllo di Amazon EKS verrà instradata su Internet. Quando scegli l'accesso privato agli endpoint, l'endpoint del server dell'API Kubernetes viene risolto in privato IPs e la comunicazione dai nodi ibridi al piano di controllo di Amazon EKS verrà instradata tramite il tuo collegamento di connettività privato, nella maggior parte dei casi Direct Connect o VPN. AWS AWS Site-to-Site 

## Configurazione VPC
<a name="hybrid-nodes-prereqs-vpc"></a>

Devi configurare il VPC che trasferisci durante la creazione del cluster Amazon EKS con i percorsi nella tabella di routing per il nodo on-premises e, facoltativamente, le reti pod con il gateway privato virtuale (VGW) o il gateway di transito (TGW) come destinazione. Di seguito è riportato un esempio. Sostituisci `REMOTE_NODE_CIDR` e `REMOTE_POD_CIDR` con i valori per la tua rete on-premises.


| Destinazione | Target | Description | 
| --- | --- | --- | 
|  10.226.0.0/16  |  local  |  Percorsi del traffico locale verso il VPC all’interno del VPC  | 
|  REMOTE\$1NODE\$1CIDR  |  tgw-abcdef123456  |  CIDR nodo on-premises, indirizza il traffico verso il TGW  | 
|  REMODE\$1POD\$1CIDR  |  tgw-abcdef123456  |  CIDR pod on-premises, indirizza il traffico verso il TGW  | 

## Configurazione del gruppo di sicurezza
<a name="hybrid-nodes-prereqs-sg"></a>

Quando crei un cluster, Amazon EKS crea un gruppo di sicurezza denominato `eks-cluster-sg-<cluster-name>-<uniqueID>`. Non puoi modificare le regole in entrata di questo gruppo di sicurezza del cluster, ma puoi limitare le regole in uscita. Devi aggiungere un gruppo di sicurezza aggiuntivo al cluster per abilitare il kubelet e, facoltativamente, i webhook in esecuzione sui nodi ibridi per contattare il piano di controllo di Amazon EKS. Le regole in entrata richieste per questo gruppo di sicurezza aggiuntivo sono riportate di seguito. Sostituisci `REMOTE_NODE_CIDR` e `REMOTE_POD_CIDR` con i valori per la tua rete on-premises.


| Name | ID regola del gruppo di sicurezza | Versione IP | Tipo | Protocollo | Intervallo porte | Origine | 
| --- | --- | --- | --- | --- | --- | --- | 
|  Nodo on-premises in entrata  |  sgr-abcdef123456  |  IPv4  |  HTTPS  |  TCP  |  443  |  REMOTE\$1NODE\$1CIDR  | 
|  Pod on-premises in entrata  |  sgr-abcdef654321  |  IPv4  |  HTTPS  |  TCP  |  443  |  REMOTE\$1POD\$1CIDR  | 

## Infrastruttura
<a name="hybrid-nodes-prereqs-infra"></a>

Devi disporre di server bare metal o macchine virtuali da utilizzare come nodi ibridi. I nodi ibridi sono indipendenti dall’infrastruttura sottostante e supportano le architetture x86 e ARM. Amazon EKS Hybrid Nodes segue un approccio “a infrastruttura personalizzata”, in cui sei responsabile del provisioning e della gestione dei server bare metal o delle macchine virtuali che usi per i nodi ibridi. Sebbene non sia previsto un requisito minimo rigoroso di risorse, ti consigliamo di utilizzare host con almeno 1 vCPU e 1 GB di RAM per i nodi ibridi.

## Sistema operativo
<a name="hybrid-nodes-prereqs-os"></a>

Bottlerocket, Amazon Linux 2023 (AL2023), Ubuntu e RHEL vengono convalidati su base continuativa per l'uso come sistema operativo di nodi per nodi ibridi. Bottlerocket è supportato solo da AWS ambienti VMware vSphere. AL2023 non è coperto dai piani di AWS supporto se eseguito al di fuori di Amazon EC2. AL2023 può essere utilizzato solo in ambienti virtualizzati locali, consulta la [Guida per l'utente di Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/outside-ec2.html) per ulteriori informazioni. AWS supporta l'integrazione dei nodi ibridi con i sistemi operativi Ubuntu e RHEL ma non fornisce supporto per il sistema operativo stesso.

Il provisioning e la gestione del sistema operativo sono una tua responsabilità. Quando testi i nodi ibridi per la prima volta, è più semplice eseguire la CLI Amazon EKS Hybrid Nodes (`nodeadm`) su un host già fornito. Per le implementazioni di produzione, ti consigliamo di includere `nodeadm` nelle immagini “gold” del tuo sistema operativo configurato per l’esecuzione come servizio systemd per unire automaticamente gli host ai cluster Amazon EKS all’avvio dell’host.

## Provider di credenziali IAM on-premises
<a name="hybrid-nodes-prereqs-iam"></a>

I nodi ibridi Amazon EKS utilizzano credenziali IAM temporanee fornite da attivazioni ibride AWS SSM o AWS IAM Roles Anywhere per l'autenticazione con il cluster Amazon EKS. È necessario utilizzare attivazioni ibride AWS SSM o AWS IAM Roles Anywhere con l'Amazon EKS Hybrid Nodes CLI (). `nodeadm` Ti consigliamo di utilizzare le attivazioni ibride AWS SSM se non disponi di un'infrastruttura a chiave pubblica (PKI) esistente con un'autorità di certificazione (CA) e certificati per i tuoi ambienti locali. Se disponi di PKI e certificati esistenti in locale, usa IAM Roles Anywhere. AWS 

Analogamente a [Ruolo IAM del nodo Amazon EKS](create-node-role.md) per i nodi in esecuzione su Amazon EC2, creerai un ruolo IAM Hybrid Nodes con le autorizzazioni necessarie per unire nodi ibridi ai cluster Amazon EKS. Se utilizzi AWS IAM Roles Anywhere, configura una policy di fiducia che consenta a AWS IAM Roles Anywhere di assumere il ruolo IAM di Hybrid Nodes e configurare il tuo profilo AWS IAM Roles Anywhere con il ruolo IAM di Hybrid Nodes come ruolo assumibile. Se utilizzi AWS SSM, configura una policy di fiducia che consenta a AWS SSM di assumere il ruolo IAM di Hybrid Nodes e creare l'attivazione ibrida con il ruolo IAM di Hybrid Nodes. Consulta [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md) su come creare il ruolo IAM di Hybrid Nodes con le autorizzazioni richieste.

# Preparazione della rete per i nodi ibridi
<a name="hybrid-nodes-networking"></a>

Questo argomento fornisce una panoramica della configurazione di rete che devi adottare prima di creare un cluster Amazon EKS e collegare nodi ibridi. Questa guida presuppone che tu abbia soddisfatto i requisiti preliminari per la connettività di rete ibrida utilizzando [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html), [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) o la tua soluzione VPN.

![\[Connettività di rete a nodi ibridi.\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-prereq-diagram.png)


## Configurazione di rete on-premises
<a name="hybrid-nodes-networking-on-prem"></a>

### Requisiti minimi di rete
<a name="hybrid-nodes-networking-min-reqs"></a>

Per un'esperienza ottimale, ti consigliamo di disporre di una connettività di rete affidabile di almeno 100 Mbps e una latenza massima di 200 ms di andata e ritorno per la connessione dei nodi ibridi alla Regione. AWS Questa è una guida generale adatta alla maggior parte dei casi d’uso, ma non è un requisito fondamentale. I requisiti di larghezza di banda e latenza possono variare in base al numero di nodi ibridi e alle caratteristiche del carico di lavoro, come la dimensione dell'immagine dell'applicazione, l'elasticità dell'applicazione, le configurazioni di monitoraggio e registrazione e le dipendenze delle applicazioni dall'accesso ai dati archiviati in altri servizi. AWS Ti consigliamo di eseguire test con applicazioni e ambienti prima di passare all’implementazione per verificare che la configurazione di rete soddisfi i requisiti per i carichi di lavoro.

### Nodo e pod locali CIDRs
<a name="hybrid-nodes-networking-on-prem-cidrs"></a>

Identifica il nodo e il pod CIDRs che utilizzerai per i tuoi nodi ibridi e i carichi di lavoro in esecuzione su di essi. Il CIDR dei nodi viene allocato dalla rete on-premises e quello dei pod viene allocato dalla Container Network Interface (CNI) se utilizzi una rete overlay per la CNI. Trasmetti il nodo CIDRs e il pod locali CIDRs come input quando crei il tuo cluster EKS con i `RemoteNodeNetwork` campi and. `RemotePodNetwork` Il nodo locale CIDRs deve essere instradabile sulla rete locale. Per ulteriori informazioni sull’instradabilità del CIDR dei pod on-premises, consulta la sezione seguente.

Gli intervalli CIDR dei nodi e dei pod on-premises devono soddisfare i seguenti requisiti:

1. Rientrare in uno dei seguenti intervalli `IPv4` RFC-1918:`10.0.0.0/8`, o `172.16.0.0/12``192.168.0.0/16`, o o all'interno dell'intervallo CGNAT definito da RFC 6598:. `100.64.0.0/10`

1. Non si sovrappongano tra loro, né con il CIDR del VPC per il tuo cluster EKS né con il CIDR `IPv4` del tuo servizio Kubernetes.

### Instradamento della rete pod on-premises
<a name="hybrid-nodes-networking-on-prem-pod-routing"></a>

Quando si utilizzano i nodi ibridi EKS, in genere si consiglia di rendere il pod locale CIDRs instradabile sulla rete locale per consentire la comunicazione e la funzionalità complete del cluster tra ambienti cloud e locali.

 **Reti di pod instradabili** 

Se riesci a rendere la tua rete di pod instradabile su quella on-premises, segui le istruzioni riportate di seguito.

1. Configura il campo `RemotePodNetwork` per il cluster EKS con il CIDR del pod on-premises, le tabelle di routing del VPC con il CIDR del pod on-premises e il gruppo di sicurezza del cluster EKS con il CIDR del pod on-premises.

1. Esistono diverse tecniche che puoi utilizzare per rendere il CIDR del pod on-premises instradabile sulla tua rete on-premises, tra cui Border Gateway Protocol (BGP), route statiche o altre soluzioni di instradamento personalizzate. BGP è la soluzione consigliata in quanto è più scalabile e facile da gestire rispetto alle soluzioni alternative che richiedono una configurazione del percorso personalizzata o manuale. AWS supporta le funzionalità BGP di Cilium e Calico per il pod CIDRs pubblicitario, vedi e per ulteriori informazioni. [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md) [CIDR dei pod remoti instradabili](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs)

1. I webhook possono essere eseguiti su nodi ibridi poiché il piano di controllo EKS è in grado di comunicare con gli indirizzi IP dei pod assegnati ai webhook.

1. I carichi di lavoro in esecuzione su nodi cloud sono in grado di comunicare direttamente con i carichi di lavoro in esecuzione su nodi ibridi nello stesso cluster EKS.

1. Altri AWS servizi, come AWS Application Load Balancers e Amazon Managed Service for Prometheus, sono in grado di comunicare con i carichi di lavoro in esecuzione su nodi ibridi per bilanciare il traffico di rete e le metriche dei pod.

 **Reti di pod non instradabili** 

Se *non* riesci a rendere instradabili le reti di pod su quella on-premises, segui le istruzioni riportate di seguito.

1. I webhook non possono essere eseguiti su nodi ibridi perché richiedono la connettività dal piano di controllo EKS agli indirizzi IP dei pod assegnati ai webhook. In questo caso, ti consigliamo di eseguire webhook su nodi cloud nello stesso cluster EKS dei nodi ibridi, consulta [Configurazione di webhook per nodi ibridi](hybrid-nodes-webhooks.md) per ulteriori informazioni.

1. I carichi di lavoro in esecuzione sui nodi cloud non sono in grado di comunicare direttamente con i carichi di lavoro in esecuzione su nodi ibridi quando si utilizza la CNI del VPC per i nodi cloud e Cilium o Calico per i nodi ibridi.

1. Utilizza la Distribuzione del traffico del servizio per mantenere il traffico locale per la zona da cui proviene. Per ulteriori informazioni sulla Distribuzione del traffico del servizio, consulta [Configurazione della distribuzione del traffico del servizio](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).

1. Configura la CNI per utilizzare la mascheratura in uscita o la Network Address Translation (NAT) per il traffico dei pod in uscita dagli host on-premises. Ciò è abilitato per impostazione predefinita in Cilium. Calico necessita che `natOutgoing` sia impostato su `true`.

1. Altri AWS servizi, come AWS Application Load Balancers e Amazon Managed Service for Prometheus, non sono in grado di comunicare con i carichi di lavoro in esecuzione su nodi ibridi.

### Accesso richiesto durante l’installazione e l’aggiornamento del nodo ibrido
<a name="hybrid-nodes-networking-access-reqs"></a>

Devi avere accesso ai seguenti domini durante il processo di installazione in cui installi le dipendenze dei nodi ibridi sui tuoi host. Questa procedura può essere eseguita una sola volta durante la creazione delle immagini del sistema operativo oppure può essere eseguita su ciascun host in Passaggio di runtime. Ciò include l’installazione iniziale e l’aggiornamento della versione Kubernetes dei nodi ibridi.

Alcuni pacchetti vengono installati utilizzando il gestore di pacchetti predefinito del sistema operativo. Per AL2023 e RHEL, il `yum` comando viene utilizzato per installare, e. `containerd` `ca-certificates` `iptables` `amazon-ssm-agent` Per Ubuntu viene utilizzato `apt` per installare `containerd`, `ca-certificates` e `iptables`, e viene utilizzato `snap` per installare `amazon-ssm-agent`.


| Componente | URL | Protocollo | Porta | 
| --- | --- | --- | --- | 
|  Artefatti del nodo EKS (S3)  |  https://hybrid-assets.eks.amazonaws.com  |  HTTPS  |  443  | 
|   [Endpoint del servizio EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |  https://eks. *region*.amazonaws.com  |  HTTPS  |  443  | 
|   [Endpoint del servizio ECR](https://docs.aws.amazon.com/general/latest/gr/ecr.html)   |  https://api.ecr. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Endpoint EKS ECR  |  Consulta [Visualizza i registri delle immagini del container per i componenti aggiuntivi di Amazon EKS](add-ons-images.md) per gli endpoint regionali.  |  HTTPS  |  443  | 
|  Endpoint binario SSM 1   |  https://amazon-ssm - .s3. *region* *region*.amazonaws.com  |  HTTPS  |  443  | 
|   [Endpoint del servizio SSM](https://docs.aws.amazon.com/general/latest/gr/ssm.html) 1   |  https://ssm. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Endpoint binario IAM Anywhere 2   |  https://rolesanywhere.amazonaws.com  |  HTTPS  |  443  | 
|   [Endpoint del servizio IAM Anywhere](https://docs.aws.amazon.com/general/latest/gr/rolesanywhere.html) 2   |  https://rolesanywhere. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Endpoint del gestore di pacchetti del sistema operativo  |  Gli endpoint dei repository di pacchetti sono specifici del sistema operativo e possono variare in base all’area geografica.  |  HTTPS  |  443  | 

**Nota**  
 1 L'accesso agli endpoint AWS SSM è richiesto solo se utilizzi attivazioni ibride AWS SSM per il tuo provider di credenziali IAM locale.  
 2 L'accesso agli endpoint AWS IAM è richiesto solo se utilizzi IAM Roles Anywhere per il tuo provider di credenziali AWS IAM locale.

### Accesso richiesto per le operazioni in corso del cluster
<a name="hybrid-nodes-networking-access-reqs-ongoing"></a>

Per le operazioni in corso del cluster è necessario il seguente accesso alla rete per il firewall on-premises.

**Importante**  
A seconda della CNI scelta, devi configurare ulteriori regole di accesso alla rete per le porte della CNI. Consulta [Cilium documentation](https://docs.cilium.io/en/stable/operations/system_requirements/#firewall-rules) e [Calico documentation](https://docs.tigera.io/calico/latest/getting-started/kubernetes/requirements#network-requirements) per i dettagli.


| Tipo | Protocollo | Direzione | Porta | Origine | Destinazione | Utilizzo | 
| --- | --- | --- | --- | --- | --- | --- | 
|  HTTPS  |  TCP  |  In uscita  |  443  |  CIDR del nodo remoto  |  Cluster EKS 1 IPs    |  Da kubelet al server API Kubernetes  | 
|  HTTPS  |  TCP  |  In uscita  |  443  |  CIDR del pod remoto  |  Gruppo EKS IPs 1   |  Da pod al server API Kubernetes  | 
|  HTTPS  |  TCP  |  In uscita  |  443  |  CIDR del nodo remoto  |   [Endpoint del servizio SSM](https://docs.aws.amazon.com/general/latest/gr/ssm.html)   |  Aggiornamento delle credenziali delle attivazioni ibride SSM e heartbeat SSM ogni 5 minuti  | 
|  HTTPS  |  TCP  |  In uscita  |  443  |  CIDR del nodo remoto  |   [Endpoint del servizio IAM Anywhere](https://docs.aws.amazon.com/general/latest/gr/rolesanywhere.html)   |  Aggiornamento delle credenziali di IAM Roles Anywhere  | 
|  HTTPS  |  TCP  |  In uscita  |  443  |  CIDR del pod remoto  |   [Endpoint regionali STS](https://docs.aws.amazon.com/general/latest/gr/sts.html)   |  Da pod a endpoint STS, richiesto solo per IRSA  | 
|  HTTPS  |  TCP  |  In uscita  |  443  |  CIDR del nodo remoto  |   [Endpoint del servizio di autenticazione Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |  Da nodo a endpoint di autenticazione Amazon EKS, richiesto solo per Amazon EKS Pod Identity  | 
|  HTTPS  |  TCP  |  In entrata  |  10250  |  Gruppo EKS IPs 1   |  CIDR del nodo remoto  |  Da server API Kubernetes a kubelet  | 
|  HTTPS  |  TCP  |  In entrata  |  Porte del webhook  |  Gruppo EKS IPs 1   |  CIDR del pod remoto  |  Da server API Kubernetes a webhook  | 
|  HTTPS  |  TCP, UDP  |  Inbound, Outbound  |  53  |  CIDR del pod remoto  |  CIDR del pod remoto  |  Da pod a CoreDNS. Se esegui almeno una replica di CoreDNS nel cloud, devi consentire il traffico DNS al VPC su cui è in esecuzione CoreDNS.  | 
|  Definito dall’utente  |  Definito dall’utente  |  Inbound, Outbound  |  Porte dell’app  |  CIDR del pod remoto  |  CIDR del pod remoto  |  Da pod a pod  | 

**Nota**  
 1 Il IPs cluster EKS. Consulta la sezione seguente sulle interfacce di rete elastiche di Amazon EKS.

### Interfacce di rete elastiche di Amazon EKS
<a name="hybrid-nodes-networking-eks-network-interfaces"></a>

Amazon EKS collega le interfacce di rete alle sottoreti del VPC che passi durante la creazione del cluster per abilitare la comunicazione tra il piano di controllo EKS e il tuo VPC. Le interfacce di rete create da Amazon EKS possono essere trovate dopo la creazione del cluster nella console Amazon EC2 o con l'interfaccia a riga di comando. AWS Le interfacce di rete originali vengono eliminate e vengono create di nuove quando vengono applicate modifiche al cluster EKS, ad esempio gli aggiornamenti delle versioni di Kubernetes. Puoi limitare l'intervallo IP per le interfacce di rete Amazon EKS utilizzando dimensioni di sottorete vincolate per le sottoreti che passate durante la creazione del cluster, il che semplifica la configurazione del firewall locale per consentire la inbound/outbound connettività a questo insieme noto e vincolato di. IPs Per verificare in quali sottoreti vengono create le interfacce di rete, puoi limitare il numero di sottoreti specificate a due quando crei un cluster o puoi aggiornare le sottoreti dopo aver creato il cluster.

Le interfacce di rete fornite da Amazon EKS hanno una descrizione del formato `Amazon EKS your-cluster-name `. Guarda l'esempio seguente per un comando AWS CLI che puoi usare per trovare gli indirizzi IP delle interfacce di rete fornite da Amazon EKS. Sostituisci `VPC_ID` con l’ID del VPC che passi durante la creazione del cluster.

```
aws ec2 describe-network-interfaces \
--query 'NetworkInterfaces[?(VpcId == VPC_ID && contains(Description,Amazon EKS))].PrivateIpAddress'
```

## AWS Configurazione di VPC e sottorete
<a name="hybrid-nodes-networking-vpc"></a>

Ai cluster con nodi ibridi si applicano gli attuali [Requisiti per VPC e sottoreti](network-reqs.md) per Amazon EKS. Inoltre, il tuo VPC CIDR non può sovrapporsi al nodo e al pod locali. CIDRs È necessario configurare i percorsi nella tabella di routing VPC per il nodo locale e, facoltativamente, il pod. CIDRs Questi percorsi devono essere configurati per indirizzare il traffico verso il gateway utilizzato per la connettività di rete ibrida, che in genere è un gateway privato virtuale (VGW) o un gateway di transito (TGW). Se utilizzi TGW o VGW per connettere il tuo VPC all’ambiente on-premises, devi creare un allegato TGW o VGW per il tuo VPC. Il VPC deve supportare il nome host DNS e la risoluzione DNS.

I passaggi seguenti utilizzano la AWS CLI. Puoi anche creare queste risorse in Console di gestione AWS o con altre interfacce come AWS CDK o AWS CloudFormation Terraform.

### Passaggio 1: creazione di un VPC
<a name="_step_1_create_vpc"></a>

1. Per creare un nuovo VPC, esegui il comando seguente. Sostituisci VPC\$1CIDR con un intervallo CIDR che sia RFC 1918 (privato), IPv4 CGNAT (RFC 6598) o non RFC 1918/non CGNAT (pubblico) (ad esempio, 10.0.0.0/16). Nota: la risoluzione DNS, che è un requisito EKS, è abilitata per impostazione predefinita per il VPC.

   ```
   aws ec2 create-vpc --cidr-block VPC_CIDR
   ```

1. Abilita i nomi degli host DNS per il tuo VPC. Ricorda, la risoluzione DNS è abilitata per impostazione predefinita per il VPC. Sostituisci `VPC_ID` con l’ID del VPC creato nel passaggio precedente.

   ```
   aws ec2 modify-vpc-attribute --vpc-id VPC_ID --enable-dns-hostnames
   ```

### Passaggio 2: creazione di sottoreti
<a name="_step_2_create_subnets"></a>

Crea almeno due sottoreti. Amazon EKS utilizza queste sottoreti per le interfacce di rete del cluster. Per maggiori informazioni, consulta [Subnets requirements and considerations](network-reqs.md#network-requirements-subnets).

1. È AWS possibile trovare le zone di disponibilità per una regione con il seguente comando. Sostituisci `us-west-2` con la tua regione.

   ```
   aws ec2 describe-availability-zones \
        --query 'AvailabilityZones[?(RegionName == us-west-2)].ZoneName'
   ```

1. Crea una sottorete. Sostituisci `VPC_ID` con l’ID del VPC. Sostituisci `SUBNET_CIDR` con l’intervallo CIDR per la sottorete (ad esempio, 10.0.1.0/24). Sostituisci `AZ` con la zona di disponibilità in cui verrà creata la sottorete (ad esempio us-west-2a). Le sottoreti che crei devono trovarsi in almeno due zone di disponibilità differenti.

   ```
   aws ec2 create-subnet \
       --vpc-id VPC_ID \
       --cidr-block SUBNET_CIDR \
       --availability-zone AZ
   ```

### (Facoltativo) Fase 3: collegare il VPC con Amazon VPC Transit Gateway (TGW) o il gateway privato virtuale AWS Direct Connect (VGW)
<a name="optional_step_3_attach_vpc_with_amazon_vpc_transit_gateway_tgw_or_shared_aws_direct_connect_virtual_private_gateway_vgw"></a>

Se utilizzi un TGW o un VGW, collega il tuo VPC al TGW o al VGW. Per ulteriori informazioni, consulta [Amazon VPC attachments in Amazon VPC Transit Gateways](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html) o [AWS Direct Connect virtual private gateway associations](https://docs.aws.amazon.com/vpn/latest/s2svpn/how_it_works.html#VPNGateway).

 **Gateway di transito** 

Esegui il comando seguente per collegare un gateway di transito. Sostituisci `VPC_ID` con l’ID del VPC. Sostituisci `SUBNET_ID1` e `SUBNET_ID2` con le IDs sottoreti create nel passaggio precedente. Sostituisci `TGW_ID` con l’ID del TGW.

```
aws ec2 create-transit-gateway-vpc-attachment \
    --vpc-id VPC_ID \
    --subnet-ids SUBNET_ID1 SUBNET_ID2 \
    --transit-gateway-id TGW_ID
```

 **Gateway virtuale privato** 

Esegui il comando seguente per collegare un Gateway di transito. Sostituisci `VPN_ID` con l’ID del VGW. Sostituisci `VPC_ID` con l’ID del VPC.

```
aws ec2 attach-vpn-gateway \
    --vpn-gateway-id VPN_ID \
    --vpc-id VPC_ID
```

### (Facoltativo) Passaggio 4: creazione di una tabella di routing
<a name="_optional_step_4_create_route_table"></a>

Puoi modificare la tabella di routing principale per il VPC o creare una tabella di routing personalizzata. I passaggi seguenti creano una tabella di routing personalizzata con le rotte verso il nodo e il pod locali. CIDRs Per ulteriori informazioni, consulta le [Tabelle di routing delle sottoreti](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-route-tables.html). Sostituisci `VPC_ID` con l’ID del VPC.

```
aws ec2 create-route-table --vpc-id VPC_ID
```

### Passaggio 5: creazione di percorsi per nodi e pod on-premises
<a name="_step_5_create_routes_for_on_premises_nodes_and_pods"></a>

Crea percorsi nella tabella di routing per ciascuno dei tuoi nodi remoti on-premises. Puoi modificare la tabella di routing principale per il VPC o utilizzare la tabella di routing personalizzata creata nel passaggio precedente.

Gli esempi seguenti mostrano come creare percorsi per il nodo e il pod locali. CIDRs Negli esempi viene utilizzato un gateway di transito (TGW) per connettere il VPC all’ambiente on-premises. Se disponi di più nodi e pod locali CIDRs, ripeti i passaggi per ogni CIDR.
+ Se utilizzi un gateway Internet o un gateway privato virtuale (VGW), sostituisci `--transit-gateway-id` con `--gateway-id`.
+ Sostituisci `RT_ID` con l’ID della tabella di routing creata nel passaggio precedente.
+ Sostituisci `REMOTE_NODE_CIDR` con l’intervallo CIDR che utilizzerai per i tuoi nodi ibridi.
+ Sostituisci `REMOTE_POD_CIDR` con l’intervallo CIDR che utilizzerai per i pod in esecuzione su nodi ibridi. L’intervallo CIDR dei pod corrisponde alla configurazione Container Networking Interface (CNI), che comunemente utilizza una rete overlay on-premises. Per ulteriori informazioni, consulta [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).
+ Sostituisci `TGW_ID` con l’ID del TGW.

 **Rete di nodi remoti** 

```
aws ec2 create-route \
    --route-table-id RT_ID \
    --destination-cidr-block REMOTE_NODE_CIDR \
    --transit-gateway-id TGW_ID
```

 **Rete di pod remoti** 

```
aws ec2 create-route \
    --route-table-id RT_ID \
    --destination-cidr-block REMOTE_POD_CIDR \
    --transit-gateway-id TGW_ID
```

### (Facoltativo) Passaggio 6: associazione delle sottoreti alla tabella di routing
<a name="_optional_step_6_associate_subnets_with_route_table"></a>

Se hai creato una tabella di routing personalizzata nel passaggio precedente, associa ciascuna delle sottoreti che hai creato nel passaggio precedente alla tua tabella di routing personalizzata. Se stai modificando la tabella di routing principale del VPC, le sottoreti vengono automaticamente associate alla tabella di routing principale del VPC e puoi saltare questo passaggio.

Esegui questo comando per ciascuna sottorete creata nei passaggi precedenti. Sostituisci `RT_ID` con la tabella di routing creata nel passaggio precedente. Sostituisci `SUBNET_ID` con l’ID di una sottorete.

```
aws ec2 associate-route-table --route-table-id RT_ID --subnet-id SUBNET_ID
```

## Configurazione del gruppo di sicurezza del cluster
<a name="hybrid-nodes-networking-cluster-sg"></a>

Il seguente accesso per il gruppo di sicurezza del cluster EKS è necessario per le operazioni in corso del cluster. Amazon EKS crea automaticamente le regole dei gruppi di sicurezza **in entrata** richieste per i nodi ibridi quando crei o aggiorni il cluster con reti di nodi e pod remoti configurate. Poiché i gruppi di sicurezza consentono tutto il traffico **in uscita** per impostazione predefinita, Amazon EKS non modifica automaticamente le regole **in uscita** del gruppo di sicurezza del cluster per i nodi ibridi. Se desideri personalizzare il gruppo di sicurezza del cluster, puoi limitare il traffico alle regole riportate nella tabella seguente.


| Tipo | Protocollo | Direzione | Porta | Origine | Destinazione | Utilizzo | 
| --- | --- | --- | --- | --- | --- | --- | 
|  HTTPS  |  TCP  |  In entrata  |  443  |  CIDR del nodo remoto  |  N/D  |  Da Kubelet al server API Kubernetes  | 
|  HTTPS  |  TCP  |  In entrata  |  443  |  CIDR del pod remoto  |  N/D  |  Pod che richiedono l’accesso al server API K8s quando il CNI non utilizza NAT per il traffico dei pod.  | 
|  HTTPS  |  TCP  |  In uscita  |  10250  |  N/D  |  CIDR del nodo remoto  |  Da server API Kubernetes a Kubelet  | 
|  HTTPS  |  TCP  |  In uscita  |  Porte del webhook  |  N/D  |  CIDR del pod remoto  |  Da server API Kubernetes a webhook (se esegui webhook su nodi ibridi)  | 

**Importante**  
 **Limiti delle regole dei gruppi di sicurezza**: per impostazione predefinita, i gruppi di sicurezza di Amazon EC2 hanno un massimo di 60 regole in entrata. Le regole in entrata del gruppo di sicurezza potrebbero non essere applicabili se il gruppo di sicurezza del cluster si avvicina a questo limite. In questo caso, potrebbe essere necessario aggiungere manualmente le regole in entrata mancanti.  
 **Responsabilità di pulizia CIDR**: se rimuovi reti di nodi o pod remoti dai cluster EKS, quest’ultimo non rimuove automaticamente le regole del gruppo di sicurezza corrispondenti. È responsabilità dell’utente rimuovere manualmente le reti di nodi o pod remoti non utilizzate dalle regole del gruppo di sicurezza.

Per ulteriori informazioni sul gruppo di sicurezza del cluster creato da Amazon EKS, consulta [Visualizzazione dei requisiti relativi al gruppo di sicurezza Amazon EKS per cluster](sec-group-reqs.md).

### (Facoltativo) Configurazione manuale del gruppo di sicurezza
<a name="_optional_manual_security_group_configuration"></a>

Se devi creare gruppi di sicurezza aggiuntivi o modificare le regole create automaticamente, puoi utilizzare i seguenti comandi come riferimento. Per impostazione predefinita, il comando seguente crea un gruppo di sicurezza che consente tutti gli accessi in uscita. Puoi limitare l’accesso in uscita in modo da includere solo le regole precedenti. Se stai pianificando una limitazione delle regole, ti consigliamo di testare accuratamente la connettività delle applicazioni e dei pod prima di applicare le regole modificate a un cluster di produzione.
+ Nel primo comando, sostituisci `SG_NAME` con un nome per il tuo gruppo di sicurezza
+ Nel primo comando, sostituisci `VPC_ID` con l’ID del VPC creato nel passaggio precedente
+ Nel secondo comando, sostituisci `SG_ID` con l’ID del gruppo di sicurezza creato nel primo comando
+ Nel secondo comando, sostituisci `REMOTE_NODE_CIDR` e `REMOTE_POD_CIDR` con i valori per i nodi ibridi e la rete on-premises.

```
aws ec2 create-security-group \
    --group-name SG_NAME \
    --description "security group for hybrid nodes" \
    --vpc-id VPC_ID
```

```
aws ec2 authorize-security-group-ingress \
    --group-id SG_ID \
    --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 443, "ToPort": 443, "IpRanges": [{"CidrIp": "REMOTE_NODE_CIDR"}, {"CidrIp": "REMOTE_POD_CIDR"}]}]'
```

# Preparazione del sistema operativo per i nodi ibridi
<a name="hybrid-nodes-os"></a>

Bottlerocket, Amazon Linux 2023 (AL2023), Ubuntu e RHEL vengono convalidati su base continuativa per l'uso come sistema operativo di nodi per nodi ibridi. Bottlerocket è supportato solo da AWS ambienti VMware vSphere. AL2023 non è coperto dai piani di AWS supporto se eseguito al di fuori di Amazon EC2. AL2023 può essere utilizzato solo in ambienti virtualizzati locali, consulta la [Guida per l'utente di Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/outside-ec2.html) per ulteriori informazioni. AWS supporta l'integrazione dei nodi ibridi con i sistemi operativi Ubuntu e RHEL ma non fornisce supporto per il sistema operativo stesso.

Il provisioning e la gestione del sistema operativo sono una tua responsabilità. Quando testi i nodi ibridi per la prima volta, è più semplice eseguire la CLI Amazon EKS Hybrid Nodes (`nodeadm`) su un host già fornito. Per le implementazioni di produzione, ti consigliamo di includere `nodeadm` nelle immagini del tuo sistema operativo configurate per l’esecuzione come servizio systemd per unire automaticamente gli host ai cluster Amazon EKS all’avvio dell’host. Se utilizzi Bottlerocket come sistema operativo del nodo su vSphere, non è necessario utilizzare `nodeadm` poiché Bottlerocket contiene già le dipendenze necessarie per i nodi ibridi e si connetterà automaticamente al cluster configurato all’avvio dell’host.

## Compatibilità delle versioni
<a name="_version_compatibility"></a>

La tabella seguente rappresenta le versioni del sistema operativo compatibili e convalidate per l’uso come sistema operativo dei nodi per i nodi ibridi. Se si utilizzano altre varianti o versioni del sistema operativo non incluse in questa tabella, la compatibilità dei nodi ibridi con la variante o la versione del sistema operativo non è coperta da AWS Support. I nodi ibridi sono indipendenti dall’infrastruttura sottostante e supportano le architetture x86 e ARM.


| Sistema operativo | Versioni | 
| --- | --- | 
|  Amazon Linux  |  Amazon Linux 2023 (AL2023)  | 
|  Portabottiglie  |  v1.37.0 e versioni successive che eseguono Kubernetes v1.28 e VMware versioni successive  | 
|  Ubuntu  |  Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04  | 
|  Red Hat Enterprise Linux  |  RHEL 8, RHEL 9  | 

## Considerazioni sul sistema operativo
<a name="_operating_system_considerations"></a>

### Ambito generale
<a name="_general"></a>
+ La CLI Amazon EKS Hybrid Nodes (`nodeadm`) può essere utilizzata per semplificare l’installazione e la configurazione dei componenti e delle dipendenze dei nodi ibridi. Puoi eseguire il processo `nodeadm install` durante le pipeline di creazione dell’immagine del sistema operativo o in Passaggio di runtime su ogni host on-premises. Per ulteriori informazioni sui componenti che `nodeadm` installa, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).
+ Se utilizzi un proxy nell’ambiente on-premises per accedere a Internet, è necessaria una configurazione aggiuntiva del sistema operativo per i processi di installazione e aggiornamento per configurare il gestore di pacchetti per l’utilizzo del proxy. Per istruzioni, consulta [Configurare il proxy per i nodi ibridi](hybrid-nodes-proxy.md).

### Portabottiglie
<a name="_bottlerocket"></a>
+ I passaggi e gli strumenti per connettere un nodo Bottlerocket sono diversi da quelli per altri sistemi operativi e sono descritti separatamente in [Connessione dei nodi ibridi con Bottlerocket](hybrid-nodes-bottlerocket.md), anziché nelle istruzioni di [Connessione di nodi ibridi](hybrid-nodes-join.md).
+ I passaggi per Bottlerocket non utilizzano lo strumento CLI dei nodi ibridi, `nodeadm`.
+ Solo VMware le varianti della versione Bottlerocket v1.37.0 e successive sono supportate con EKS Hybrid Nodes. VMware le varianti di Bottlerocket sono disponibili per le versioni Kubernetes v1.28 e successive. [Altre varianti di Bottlerocket](https://bottlerocket.dev/en/os/1.36.x/concepts/variants) non sono supportate come sistema operativo dei nodi ibridi. NOTA: le VMware varianti di Bottlerocket sono disponibili solo per l'architettura x86\$164.

### Containerd
<a name="_containerd"></a>
+ Containerd è il runtime del container Kubernetes standard ed è una dipendenza per i nodi ibridi, nonché per tutti i tipi di calcolo dei nodi Amazon EKS. La CLI di Amazon EKS Hybrid Nodes (`nodeadm`) tenta di installare containerd durante il processo `nodeadm install`. È possibile configurare l’installazione containerd nella Passaggio di runtime di `nodeadm install` con l’opzione `--containerd-source` della riga di comando. Le opzioni valide sono `none`, `distro` e `docker`. Se stai usando RHEL, `distro` non è un’opzione valida e puoi configurare `nodeadm` per installare la build containerd dai repository di Docker oppure puoi installare containerd manualmente. Quando si usa AL2 023 o Ubuntu, per `nodeadm` impostazione predefinita installa containerd dalla distribuzione del sistema operativo. Se non vuoi che nodeadm installi containerd, usa l’opzione `--containerd-source none`.

### Ubuntu
<a name="_ubuntu"></a>
+ [Se usi Ubuntu 24.04, potresti dover aggiornare la tua versione di containerd o modificare AppArmor la configurazione per adottare una correzione che consenta ai pod di terminare correttamente, vedi Ubuntu \$12065423.](https://bugs.launchpad.net/ubuntu/+source/containerd-app/\+bug/2065423) È necessario un riavvio per applicare le modifiche al profilo. AppArmor L’ultima versione di Ubuntu 24.04 ha una versione containerd aggiornata nel suo gestore di pacchetti con la correzione (versione containerd 1.7.19 o successive).

### ARM
<a name="_arm"></a>
+ Se si utilizza hardware ARM, è necessario un processore compatibile con ARMv8 .2 con l'estensione di crittografia (ARMv8.2\$1crypto) per eseguire la versione 1.31 e successive del componente aggiuntivo EKS kube-proxy. Tutti i sistemi Raspberry Pi precedenti al Raspberry Pi 5, così come i processori basati su Cortex-A72, non soddisfano questo requisito. Come soluzione alternativa, puoi continuare a utilizzare la versione 1.30 del componente aggiuntivo EKS kube-proxy fino alla fine del supporto esteso a luglio del 2026, consultare il [Calendario delle versioni di Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) o utilizzare un’immagine kube-proxy personalizzata dall’upstream.
+ Il seguente messaggio di errore nel registro kube-proxy indica questa incompatibilità:

```
Fatal glibc error: This version of Amazon Linux requires a newer ARM64 processor compliant with at least ARM architecture 8.2-a with Cryptographic extensions. On EC2 this is Graviton 2 or later.
```

## Creazione di immagini del sistema operativo
<a name="_building_operating_system_images"></a>

Amazon EKS fornisce [modelli di Packer di esempio](https://github.com/aws/eks-hybrid/tree/main/example/packer) che puoi utilizzare per creare immagini del sistema operativo che includono `nodeadm` e lo configurano per l’esecuzione all’avvio dell’host. Questa procedura è consigliata per evitare di trasferire le dipendenze dei nodi ibridi singolarmente su ciascun host e per automatizzare il processo di bootstrap dei nodi ibridi. Puoi utilizzare i modelli Packer di esempio con un’immagine ISO di Ubuntu 22.04, Ubuntu 24.04, RHEL 8 o RHEL 9 e produrre immagini con questi formati: OVA, Qcow2 o raw.

### Prerequisiti
<a name="_prerequisites"></a>

Prima di utilizzare i modelli Packer di esempio, è necessario che sul computer da cui esegui Packer sia installato quanto segue.
+ Packer versione 1.11.0 o successiva. Per istruzioni sull’installazione di Packer, consulta [Install Packer](https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli) nella documentazione di Packer.
+ In fase di compilazione OVAs, VMware vSphere plugin 1.4.0 o versione successiva
+ Se stai creando immagini `Qcow2` o grezze, plug-in QEMU versione 1.x

### Impostazione delle variabili di ambiente
<a name="_set_environment_variables"></a>

Prima di eseguire la build di Packer, imposta le seguenti variabili di ambiente sul computer da cui stai eseguendo Packer.

 **Ambito generale** 

Le seguenti variabili di ambiente devono essere impostate per creare immagini con tutti i sistemi operativi e i formati di output.


| Variabile di ambiente | Tipo | Description | 
| --- | --- | --- | 
|  PKR\$1SSH\$1PASSWORD  |  Stringa  |  Packer utilizza le variabili `ssh_username` e `ssh_password` di SSH nella macchina creata durante il provisioning. Ciò deve corrispondere alle password utilizzate per creare l’utente iniziale all’interno dei file kickstart o di dati utente del rispettivo sistema operativo. L’impostazione predefinita è “builder” o “ubuntu” a seconda del sistema operativo. Quando imposti la password, assicurati di cambiarla all’interno del file `ks.cfg` o `user-data`corrispondente.  | 
|  ISO\$1URL  |  Stringa  |  URL dell’ISO da utilizzare. Può essere un collegamento web da scaricare da un server o un percorso assoluto verso un file locale  | 
|  ISO\$1CHECKSUM  |  Stringa  |  Checksum associato per l’ISO fornito.  | 
|  CREDENTIAL\$1PROVIDER  |  Stringa  |  Provider di credenziali per nodi ibridi. I valori validi sono `ssm` (impostazione predefinita) per le attivazioni ibride SSM e `iam` per IAM Roles Anywhere  | 
|  K8S\$1VERSION  |  Stringa  |  Versione di Kubernetes per nodi ibridi (ad esempio `1.31`). Per le versioni di Kubernetes supportate, consulta la pagina [Amazon EKS supported versions](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).  | 
|  NODEADM\$1ARCH  |  Stringa  |  Architettura per `nodeadm install`. Seleziona `amd` oppure `arm`.  | 

 **RHEL** 

Se utilizzi RHEL, è necessario impostare le seguenti variabili di ambiente.


| Variabile di ambiente | Tipo | Description | 
| --- | --- | --- | 
|  RH\$1USERNAME  |  Stringa  |  nome utente del gestore di sottoscrizioni RHEL  | 
|  RH\$1PASSWORD  |  Stringa  |  password del gestore delle sottoscrizioni RHEL  | 
|  RHEL\$1VERSION  |  Stringa  |  Versione iso di Rhel in uso. I valori validi sono `8` e `9`.  | 

 **Ubuntu** 

Non sono richieste variabili di ambiente specifiche per Ubuntu.

 **vSphere** 

Se si sta creando un VMware vSphere OVA, è necessario impostare le seguenti variabili di ambiente.


| Variabile di ambiente | Tipo | Description | 
| --- | --- | --- | 
|  VSPHERE\$1SERVER  |  Stringa  |  Indirizzo del server vSphere  | 
|  VSPHERE\$1USER  |  Stringa  |  Nome utente vSphere  | 
|  VSPHERE\$1PASSWORD  |  Stringa  |  Password vSphere  | 
|  VSPHERE\$1DATACENTER  |  Stringa  |  Nome del data center vSphere  | 
|  VSPHERE\$1CLUSTER  |  Stringa  |  Nome del cluster vSphere  | 
|  VSPHERE\$1DATASTORE  |  Stringa  |  Nome del datastore vSphere  | 
|  VSPHERE\$1NETWORK  |  Stringa  |  Nome della rete vSphere  | 
|  VSPHERE\$1OUTPUT\$1FOLDER  |  Stringa  |  Cartella di output vSphere per i modelli  | 

 **QEMU** 


| Variabile di ambiente | Tipo | Description | 
| --- | --- | --- | 
|  PACKER\$1OUTPUT\$1FORMAT  |  Stringa  |  Formato di output per il generatore QEMU. I valori validi sono `qcow2` e `raw`.  | 

 **Convalida del modello** 

Prima di eseguire la build, convalida il modello con il seguente comando dopo aver impostato le variabili di ambiente. Sostituisci `template.pkr.hcl` se stai usando un nome diverso per il tuo modello.

```
packer validate template.pkr.hcl
```

### Creazione di immagini
<a name="_build_images"></a>

Crea le tue immagini con i seguenti comandi e usa il flag `-only` per specificare la destinazione e il sistema operativo delle tue immagini. Sostituisci `template.pkr.hcl` se stai usando un nome diverso per il tuo modello.

 **vSphere OVAs** 

**Nota**  
Se utilizzi RHEL con vSphere, devi convertire i file kickstart in un’immagine OEMDRV e passarla come ISO da cui avviare il sistema. Per ulteriori informazioni, consulta il file [Readme di Packer](https://github.com/aws/eks-hybrid/tree/main/example/packer#utilizing-rhel-with-vsphere) nell'archivio EKS Hybrid Nodes. GitHub 

 **OVA Ubuntu 22.04** 

```
packer build -only=general-build.vsphere-iso.ubuntu22 template.pkr.hcl
```

 **OVA Ubuntu 24.04** 

```
packer build -only=general-build.vsphere-iso.ubuntu24 template.pkr.hcl
```

 **OVA RHEL 8** 

```
packer build -only=general-build.vsphere-iso.rhel8 template.pkr.hcl
```

 **OVA RHEL 9** 

```
packer build -only=general-build.vsphere-iso.rhel9 template.pkr.hcl
```

 **QEMU** 

**Nota**  
Se stai creando un’immagine per una CPU host specifica che non corrisponde all’host del tuo generatore, consulta la documentazione [QEMU](https://www.qemu.org/docs/master/system/qemu-cpu-models.html) per cercare il nome che corrisponde alla tua CPU host e usa il flag `-cpu` con il nome della CPU host quando esegui i seguenti comandi.

 **Qcow2/Raw Ubuntu 22.04** 

```
packer build -only=general-build.qemu.ubuntu22 template.pkr.hcl
```

 **Qcow2/Raw Ubuntu 24.04** 

```
packer build -only=general-build.qemu.ubuntu24 template.pkr.hcl
```

 **Qcow2/Raw RHEL 8** 

```
packer build -only=general-build.qemu.rhel8 template.pkr.hcl
```

 **Qcow2/Raw RHEL 9** 

```
packer build -only=general-build.qemu.rhel9 template.pkr.hcl
```

### Trasferimento della configurazione di nodeadm tramite i dati utente
<a name="_pass_nodeadm_configuration_through_user_data"></a>

Puoi trasferire la configurazione per `nodeadm` ai tuoi dati utente tramite cloud-init per configurare e connettere automaticamente i nodi ibridi al cluster EKS all’avvio dell’host. Di seguito è riportato un esempio di come eseguire questa operazione quando si utilizza VMware vSphere come infrastruttura per i nodi ibridi.

1. Installa la `govc` CLI seguendo le istruzioni nel readme di [govc](https://github.com/vmware/govmomi/blob/main/govc/README.md) su. GitHub

1. Dopo aver eseguito la build di Packer nella sezione precedente e aver effettuato il provisioning del modello, puoi clonare il modello per creare più nodi diversi utilizzando quanto segue. Devi clonare il modello per ogni nuova macchina virtuale che stai creando e che verrà utilizzata per i nodi ibridi. Sostituisci le variabili nel comando seguente con i valori per il tuo ambiente. Il `VM_NAME` comando seguente viene usato come tuo `NODE_NAME` quando inserisci i nomi per te tramite il tuo file. VMs `metadata.yaml`

   ```
   govc vm.clone -vm "/PATH/TO/TEMPLATE" -ds="YOUR_DATASTORE" \
       -on=false -template=false -folder=/FOLDER/TO/SAVE/VM "VM_NAME"
   ```

1. Dopo aver clonato il modello per ognuno dei tuoi nuovi VMs, crea un `userdata.yaml` e `metadata.yaml` per il tuo. VMs VMs Puoi condividerli `userdata.yaml` `metadata.yaml` e li compilerai per ogni singola macchina virtuale nei passaggi seguenti. La configurazione di `nodeadm` viene creata e definita nella sezione `write_files` del tuo `userdata.yaml`. L'esempio seguente utilizza le attivazioni ibride AWS SSM come provider di credenziali locali per i nodi ibridi. Per ulteriori informazioni sulla configurazione di `nodeadm`, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).

    **userdata.yaml:** 

   ```
   #cloud-config
   users:
     - name: # username for login. Use 'builder' for RHEL or 'ubuntu' for Ubuntu.
       passwd: # password to login. Default is 'builder' for RHEL.
       groups: [adm, cdrom, dip, plugdev, lxd, sudo]
       lock-passwd: false
       sudo: ALL=(ALL) NOPASSWD:ALL
       shell: /bin/bash
   
   write_files:
     - path: /usr/local/bin/nodeConfig.yaml
       permissions: '0644'
       content: |
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
             cluster:
                 name: # Cluster Name
                 region: # AWS region
             hybrid:
                 ssm:
                     activationCode: # Your ssm activation code
                     activationId: # Your ssm activation id
   
   runcmd:
     - /usr/local/bin/nodeadm init -c file:///usr/local/bin/nodeConfig.yaml >> /var/log/nodeadm-init.log 2>&1
   ```

    **metadata.yaml:** 

   Crea un `metadata.yaml` per il tuo ambiente. Mantieni il formato della variabile `"$NODE_NAME"` nel file poiché questo verrà compilato con valori in un passaggio successivo.

   ```
   instance-id: "$NODE_NAME"
   local-hostname: "$NODE_NAME"
   network:
     version: 2
     ethernets:
       nics:
         match:
           name: ens*
         dhcp4: yes
   ```

1. Aggiungi i file `userdata.yaml` e `metadata.yaml` come stringhe `gzip+base64` con i seguenti comandi. I seguenti comandi devono essere eseguiti per ciascuno dei comandi che si stanno creando. VMs Sostituisci `VM_NAME` con il nome della macchina virtuale che stai aggiornando.

   ```
   export NODE_NAME="VM_NAME"
   export USER_DATA=$(gzip -c9 <userdata.yaml | base64)
   
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata="${USER_DATA}"
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata.encoding=gzip+base64
   
   envsubst '$NODE_NAME' < metadata.yaml > metadata.yaml.tmp
   export METADATA=$(gzip -c9 <metadata.yaml.tmp | base64)
   
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata="${METADATA}"
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata.encoding=gzip+base64
   ```

1. Accendi il tuo nuovo VMs, che dovrebbe connettersi automaticamente al cluster EKS che hai configurato.

   ```
   govc vm.power -on "${NODE_NAME}"
   ```

# Preparazione delle credenziali per i nodi ibridi
<a name="hybrid-nodes-creds"></a>

I nodi ibridi Amazon EKS utilizzano credenziali IAM temporanee fornite da attivazioni ibride AWS SSM o AWS IAM Roles Anywhere per l'autenticazione con il cluster Amazon EKS. È necessario utilizzare attivazioni ibride AWS SSM o AWS IAM Roles Anywhere con l'Amazon EKS Hybrid Nodes CLI (). `nodeadm` Non dovresti usare sia le attivazioni ibride AWS SSM che IAM Roles Anywhere. AWS Ti consigliamo di utilizzare le attivazioni ibride AWS SSM se non disponi di un'infrastruttura a chiave pubblica (PKI) esistente con un'autorità di certificazione (CA) e certificati per i tuoi ambienti locali. Se disponi di PKI e certificati esistenti in locale, usa IAM Roles Anywhere. AWS 

## Ruolo IAM dei nodi ibridi
<a name="hybrid-nodes-role"></a>

Prima di poter connettere i nodi ibridi al cluster Amazon EKS, devi creare un ruolo IAM che verrà utilizzato con le attivazioni ibride AWS SSM o AWS IAM Roles Anywhere per le credenziali dei tuoi nodi ibridi. Dopo la creazione del cluster, utilizzerai questo ruolo con una voce o `aws-auth` ConfigMap una voce di accesso Amazon EKS per mappare il ruolo IAM a Kubernetes Role-Based Access Control (RBAC). Per ulteriori informazioni sull’associazione del ruolo IAM dei nodi ibridi con il RBAC di Kubernetes, consulta [Preparazione dell’accesso al cluster per i nodi ibridi](hybrid-nodes-cluster-prep.md).

Il ruolo IAM dei nodi ibridi deve disporre delle seguenti autorizzazioni.
+ Autorizzazioni per utilizzare l'`eks:DescribeCluster`azione `nodeadm` per raccogliere informazioni sul cluster a cui desideri connettere i nodi ibridi. Se non abiliti l'`eks:DescribeCluster`azione, devi passare l'endpoint dell'API Kubernetes, il cluster CA bundle e il servizio IPv4 CIDR nella configurazione del nodo che passi al comando. `nodeadm init`
+ Autorizzazioni per `nodeadm` utilizzare l'`eks:ListAccessEntries`azione per elencare le voci di accesso sul cluster a cui desideri connettere i nodi ibridi. Se non abiliti l'`eks:ListAccessEntries`azione, devi passare il `--skip cluster-access-validation` flag quando esegui il `nodeadm init` comando.
+ [Autorizzazioni per il kubelet a utilizzare le immagini dei contenitori da Amazon Elastic Container Registry (Amazon ECR) come definito nella policy di Amazon. EC2 ContainerRegistryPullOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryPullOnly.html)
+ Se si utilizza AWS SSM, le autorizzazioni per `nodeadm init` utilizzare le attivazioni ibride AWS SSM come definito nella policy. [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html)
+ Se si utilizza AWS SSM, le autorizzazioni per utilizzare l'`ssm:DeregisterManagedInstance`azione e `ssm:DescribeInstanceInformation` l'azione per annullare la registrazione delle istanze. `nodeadm uninstall`
+ (Facoltativo) Autorizzazioni per consentire al Pod Identity Agent di Amazon EKS di utilizzare l’azione `eks-auth:AssumeRoleForPodIdentity` per recuperare le credenziali per i pod.

## AWS Configura le attivazioni ibride SSM
<a name="hybrid-nodes-ssm"></a>

Prima di configurare le attivazioni ibride AWS SSM, è necessario creare e configurare un ruolo IAM Hybrid Nodes. Per ulteriori informazioni, consulta [Creazione del ruolo IAM dei nodi ibridi](#hybrid-nodes-create-role). Segui le istruzioni in [Creare un'attivazione ibrida per registrare i nodi con Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html) nella AWS Systems Manager User Guide per creare un'attivazione ibrida AWS SSM per i tuoi nodi ibridi. Il codice di attivazione e l’ID che ricevi vengono utilizzati con `nodeadm` quando registri i tuoi host come nodi ibridi con il tuo cluster Amazon EKS. Puoi tornare a questo passaggio in un secondo momento dopo aver creato e preparato i cluster Amazon EKS per i nodi ibridi.

**Importante**  
Systems Manager restituisce immediatamente il codice e l’ID di attivazione alla console o finestra di comando, a seconda di come è stato creata l’attivazione. Copia queste informazioni e archiviale in un luogo sicuro. Se esci dalla console o chiudi la finestra di comando, potresti perdere queste informazioni. Se le smarrisci, devi creare una nuova attivazione.

Per impostazione predefinita, le attivazioni ibride AWS SSM sono attive per 24 ore. In alternativa, puoi specificare una `--expiration-date` quando crei l’attivazione ibrida in formato timestamp, ad esempio `2024-08-01T00:00:00`. Quando utilizzi AWS SSM come provider di credenziali, il nome del nodo per i nodi ibridi non è configurabile e viene generato automaticamente da SSM. AWS È possibile visualizzare e gestire le istanze gestite AWS SSM nella console AWS Systems Manager in Fleet Manager. È possibile registrare fino a 1.000 [nodi standard attivati in modalità ibrida](https://docs.aws.amazon.com/systems-manager/latest/userguide/activations.html) per account per AWS regione senza costi aggiuntivi. Tuttavia, per registrare più di 1.000 nodi ibridi è necessario attivare il piano istanze avanzate. Viene addebitato un costo per l’utilizzo del piano istanze avanzate che non è incluso nel [prezzo di Amazon EKS Hybrid Nodes](https://aws.amazon.com/eks/pricing/). Per ulteriori informazioni, consulta [Prezzi di AWS Systems Manager](https://aws.amazon.com/systems-manager/pricing/).

Vedi l'esempio seguente per come creare un'attivazione ibrida AWS SSM con il ruolo IAM di Hybrid Nodes. Quando utilizzi le attivazioni ibride AWS SSM per le credenziali dei tuoi nodi ibridi, i nomi dei tuoi nodi ibridi avranno il formato `mi-012345678abcdefgh` e le credenziali temporanee fornite da AWS SSM sono valide per 1 ora. Non è possibile modificare il nome del nodo o la durata delle credenziali quando si utilizza SSM come provider di credenziali. AWS Le credenziali temporanee vengono ruotate automaticamente da AWS SSM e la rotazione non influisce sullo stato dei nodi o delle applicazioni.

Ti consigliamo di utilizzare un'attivazione ibrida AWS SSM per cluster EKS per definire l'`ssm:DeregisterManagedInstance`autorizzazione AWS SSM del ruolo IAM di Hybrid Nodes per poter annullare la registrazione solo delle istanze associate all'attivazione ibrida SSM. AWS Nell'esempio in questa pagina, viene utilizzato un tag con l'ARN del cluster EKS, che può essere utilizzato per mappare l'attivazione ibrida AWS SSM al cluster EKS. In alternativa, puoi utilizzare il tag e il metodo preferiti per definire l'ambito delle autorizzazioni AWS SSM in base ai limiti e ai requisiti di autorizzazione. L'`REGISTRATION_LIMIT`opzione nel comando seguente è un numero intero utilizzato per limitare il numero di macchine che possono utilizzare l'attivazione ibrida AWS SSM (ad esempio) `10`

```
aws ssm create-activation \
     --region AWS_REGION \
     --default-instance-name eks-hybrid-nodes \
     --description "Activation for EKS hybrid nodes" \
     --iam-role AmazonEKSHybridNodesRole \
     --tags Key=EKSClusterARN,Value=arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME \
     --registration-limit REGISTRATION_LIMIT
```

Consulta le istruzioni su [Creare un'attivazione ibrida per registrare i nodi con Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html) per ulteriori informazioni sulle impostazioni di configurazione disponibili per le attivazioni ibride AWS SSM.

## Configura AWS IAM Roles Anywhere
<a name="hybrid-nodes-iam-roles-anywhere"></a>

Segui le istruzioni riportate in [Getting started with IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/getting-started.html) nella Guida per l’utente di IAM Roles Anywhere per configurare l’ancora di fiducia e il profilo che utilizzerai per le credenziali IAM temporanee per il tuo ruolo IAM dei nodi ibridi. Quando crei il tuo profilo, puoi crearlo senza aggiungere alcun ruolo. Puoi creare questo profilo, tornare a questi passaggi per creare il tuo ruolo IAM dei nodi ibridi e quindi aggiungere il tuo ruolo al profilo dopo averlo creato. In alternativa, puoi utilizzare i AWS CloudFormation passaggi riportati più avanti in questa pagina per completare la configurazione di IAM Roles Anywhere per i nodi ibridi.

Quando aggiungi il ruolo IAM Hybrid Nodes al tuo profilo, seleziona **Accetta il nome della sessione** di **ruolo personalizzato** nel pannello Nome sessione di ruolo personalizzato nella parte inferiore della pagina **Modifica profilo** nella console AWS IAM Roles Anywhere. Corrisponde al campo [acceptRoleSessionNome](https://docs.aws.amazon.com/rolesanywhere/latest/APIReference/API_CreateProfile.html#rolesanywhere-CreateProfile-request-acceptRoleSessionName) dell'`CreateProfile`API. Ciò consente di fornire un nome di nodo personalizzato per i nodi ibridi nella configurazione a cui si passa durante il processo di bootstrap `nodeadm`. È necessario passare un nome di nodo personalizzato durante il processo `nodeadm init`. Puoi aggiornare il tuo profilo per accettare un nome di sessione di ruolo personalizzato dopo aver creato il tuo profilo.

Puoi configurare la durata di validità delle credenziali con AWS IAM Roles Anywhere tramite il campo [DurationSeconds](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/authentication-create-session#credentials-object) del AWS tuo profilo IAM Roles Anywhere. La durata predefinita è di 1 ora con un massimo di 12 ore. L'`MaxSessionDuration`impostazione sul tuo ruolo IAM Hybrid Nodes deve essere maggiore dell'`durationSeconds`impostazione sul tuo profilo AWS IAM Roles Anywhere. Per ulteriori informazioni`MaxSessionDuration`, consulta la [documentazione UpdateRole dell'API](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_UpdateRole.html).

I certificati e le chiavi per computer generati dalla tua autorità di certificazione (CA) devono essere inseriti nella directory `/etc/iam/pki` di ogni nodo ibrido con i nomi dei file `server.pem` per il certificato e `server.key` per la chiave.

## Creazione del ruolo IAM dei nodi ibridi
<a name="hybrid-nodes-create-role"></a>

Per eseguire i passaggi di questa sezione, il principale IAM che utilizza la AWS console o la AWS CLI deve disporre delle seguenti autorizzazioni.
+  `iam:CreatePolicy` 
+  `iam:CreateRole` 
+  `iam:AttachRolePolicy` 
+ Se si utilizza AWS IAM Roles Anywhere
  +  `rolesanywhere:CreateTrustAnchor` 
  +  `rolesanywhere:CreateProfile` 
  +  `iam:PassRole` 

### AWS CloudFormation
<a name="hybrid-nodes-creds-cloudformation"></a>

Installa e configura la AWS CLI, se non l'hai già fatto. Vedi [Installazione o aggiornamento all'ultima versione della AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

 **Passaggi per le attivazioni AWS ibride SSM** 

Lo CloudFormation stack crea il ruolo IAM di Hybrid Nodes con le autorizzazioni sopra descritte. Il CloudFormation modello non crea l'attivazione ibrida AWS SSM.

1. Scarica il CloudFormation modello AWS SSM per i nodi ibridi:

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ssm-cfn.yaml'
   ```

1. Creare un `cfn-ssm-parameters.json` con le seguenti opzioni:

   1. Sostituisci `ROLE_NAME` con il nome del ruolo IAM dei nodi ibridi. Per impostazione predefinita, il CloudFormation modello utilizza `AmazonEKSHybridNodesRole` come nome del ruolo creato se non si specifica un nome.

   1. `TAG_KEY`Sostituiscilo con la chiave del tag di risorsa AWS SSM che hai usato durante la creazione dell'attivazione ibrida AWS SSM. La combinazione della chiave del tag e del valore del tag viene utilizzata nella condizione di consentire solo `ssm:DeregisterManagedInstance` al ruolo IAM di Hybrid Nodes di annullare la registrazione delle istanze gestite AWS SSM associate all'attivazione ibrida SSM. AWS Nel modello, l'impostazione predefinita è. CloudFormation `TAG_KEY` `EKSClusterARN`

   1. Sostituisci `TAG_VALUE` con il valore del tag di risorsa AWS SSM che hai usato durante la creazione dell'attivazione ibrida AWS SSM. La combinazione della chiave del tag e del valore del tag viene utilizzata nella condizione di consentire solo `ssm:DeregisterManagedInstance` al ruolo IAM di Hybrid Nodes di annullare la registrazione delle istanze gestite AWS SSM associate all'attivazione ibrida SSM. AWS Se utilizzi l’impostazione predefinita `TAG_KEY` di `EKSClusterARN`, passa l’ARN del cluster EKS come `TAG_VALUE`. I cluster EKS hanno il formato. ARNs ` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "SSMDeregisterConditionTagKey": "TAG_KEY",
          "SSMDeregisterConditionTagValue": "TAG_VALUE"
        }
      }
      ```

1. Distribuisci lo CloudFormation stack. `STACK_NAME`Sostituiscilo con il tuo nome per lo stack CloudFormation .

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ssm-cfn.yaml \
       --parameter-overrides file://cfn-ssm-parameters.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

 **Passaggi per AWS IAM Roles Anywhere** 

Lo CloudFormation stack crea il trust anchor di AWS IAM Roles Anywhere con l'autorità di certificazione (CA) che configuri, crea il profilo AWS IAM Roles Anywhere e crea il ruolo IAM di Hybrid Nodes con le autorizzazioni descritte in precedenza.

1. Configurazione di un’autorità di certificazione (CA)

   1. Per utilizzare una risorsa CA AWS privata, apri la console Private [AWS Certificate](https://console.aws.amazon.com/acm-pca/home) Authority. Segui le istruzioni contenute in [AWS Private CA User Guide](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html).

   1. Per utilizzare una CA esterna, segui le istruzioni fornite dalla CA. Fornisci l’ente di certificazione in una fase successiva.

   1. I certificati emessi da fonti pubbliche CAs non possono essere utilizzati come ancoraggi di fiducia.

1. Scarica il CloudFormation modello AWS IAM Roles Anywhere per nodi ibridi

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ira-cfn.yaml'
   ```

1. Creare un `cfn-iamra-parameters.json` con le seguenti opzioni:

   1. Sostituisci `ROLE_NAME` con il nome del ruolo IAM dei nodi ibridi. Per impostazione predefinita, il CloudFormation modello utilizza `AmazonEKSHybridNodesRole` come nome del ruolo che crea se non specifichi un nome.

   1. Sostituisci `CERT_ATTRIBUTE` con l’attributo del certificato per computer che identifica in modo univoco l’host. L’attributo del certificato utilizzato deve corrispondere al nodeName utilizzato per la configurazione `nodeadm` quando si connettono i nodi ibridi al cluster. Per ulteriori informazioni, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md). Per impostazione predefinita, il CloudFormation modello utilizza `${aws:PrincipalTag/x509Subject/CN}` come`CERT_ATTRIBUTE`, che corrisponde al campo CN dei certificati per computer. In alternativa puoi passare `$(aws:PrincipalTag/x509SAN/Name/CN}` come tuo `CERT_ATTRIBUTE`.

   1. Sostituisci `CA_CERT_BODY` con l’ente del certificato della tua CA senza interruzioni di riga. Il `CA_CERT_BODY` deve essere in formato Privacy-Enhanced Mail (PEM). Se disponi di un certificato CA in formato PEM, rimuovi le interruzioni di riga e le righe BEGIN CERTIFICATE e END CERTIFICATE prima di inserire l’ente del certificato CA nel file `cfn-iamra-parameters.json`.

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "CertAttributeTrustPolicy": "CERT_ATTRIBUTE",
          "CABundleCert": "CA_CERT_BODY"
        }
      }
      ```

1. Implementa il modello. CloudFormation `STACK_NAME`Sostituiscilo con il tuo nome per lo CloudFormation stack.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ira-cfn.yaml \
       --parameter-overrides file://cfn-iamra-parameters.json
       --capabilities CAPABILITY_NAMED_IAM
   ```

### AWS CLI
<a name="hybrid-nodes-creds-awscli"></a>

Installa e configura la AWS CLI, se non l'hai già fatto. Vedi [Installazione o aggiornamento all'ultima versione della AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

 **Crea la policy del cluster per descrivere EKS** 

1. Crea un file denominato `eks-describe-cluster-policy.json` con i seguenti contenuti:

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "eks:DescribeCluster"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. Creare la policy con il seguente comando:

   ```
   aws iam create-policy \
       --policy-name EKSDescribeClusterPolicy \
       --policy-document file://eks-describe-cluster-policy.json
   ```

 **Passaggi per le attivazioni AWS ibride SSM** 

1. Crea un file denominato `eks-hybrid-ssm-policy.json` con i seguenti contenuti. La policy concede l’autorizzazione per le azioni `ssm:DescribeInstanceInformation` e `ssm:DeregisterManagedInstance`. La policy limita l'`ssm:DeregisterManagedInstance`autorizzazione alle istanze gestite da AWS SSM associate all'attivazione ibrida AWS SSM in base al tag di risorsa specificato nella politica di attendibilità.

   1. `AWS_REGION`Sostituiscila con la AWS regione per l'attivazione ibrida SSM AWS .

   1. `AWS_ACCOUNT_ID`Sostituiscilo con l'ID AWS del tuo account.

   1. `TAG_KEY`Sostituiscilo con la chiave del tag di risorsa AWS SSM che hai usato durante la creazione dell'attivazione ibrida AWS SSM. La combinazione della chiave del tag e del valore del tag viene utilizzata nella condizione di consentire solo `ssm:DeregisterManagedInstance` al ruolo IAM di Hybrid Nodes di annullare la registrazione delle istanze gestite AWS SSM associate all'attivazione ibrida SSM. AWS Nel modello, l'impostazione predefinita è. CloudFormation `TAG_KEY` `EKSClusterARN`

   1. Sostituisci `TAG_VALUE` con il valore del tag di risorsa AWS SSM che hai usato durante la creazione dell'attivazione ibrida AWS SSM. La combinazione della chiave del tag e del valore del tag viene utilizzata nella condizione di consentire solo `ssm:DeregisterManagedInstance` al ruolo IAM di Hybrid Nodes di annullare la registrazione delle istanze gestite AWS SSM associate all'attivazione ibrida SSM. AWS Se utilizzi l’impostazione predefinita `TAG_KEY` di `EKSClusterARN`, passa l’ARN del cluster EKS come `TAG_VALUE`. I cluster EKS hanno il formato. ARNs ` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "ssm:DescribeInstanceInformation",
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": "ssm:DeregisterManagedInstance",
                  "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
                  "Condition": {
                      "StringEquals": {
                          "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                      }
                  }
              }
          ]
      }
      ```

1. Creare la policy con il seguente comando

   ```
   aws iam create-policy \
       --policy-name EKSHybridSSMPolicy \
       --policy-document file://eks-hybrid-ssm-policy.json
   ```

1. Crea un file denominato `eks-hybrid-ssm-trust.json`. Sostituiscilo `AWS_REGION` con la AWS regione dell'attivazione ibrida AWS SSM e `AWS_ACCOUNT_ID` con l'ID AWS del tuo account.

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Sid":"",
            "Effect":"Allow",
            "Principal":{
               "Service":"ssm.amazonaws.com"
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "StringEquals":{
                  "aws:SourceAccount":"123456789012"
               },
               "ArnEquals":{
                  "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
               }
            }
         }
      ]
   }
   ```

1. Crea il ruolo con il comando seguente.

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-ssm-trust.json
   ```

1. Collega `EKSDescribeClusterPolicy` e `EKSHybridSSMPolicy` che hai creato nei passaggi precedenti. `AWS_ACCOUNT_ID`Sostituiscilo con l'ID AWS del tuo account.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSHybridSSMPolicy
   ```

1. Allega le politiche `AmazonEC2ContainerRegistryPullOnly` e `AmazonSSMManagedInstanceCore` AWS gestisci.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
   ```

 **Passaggi per AWS IAM Roles Anywhere** 

Per utilizzare AWS IAM Roles Anywhere, devi configurare il tuo trust anchor AWS IAM Roles Anywhere prima di creare il ruolo IAM di Hybrid Nodes. Per istruzioni, consulta [Configura AWS IAM Roles Anywhere](#hybrid-nodes-iam-roles-anywhere).

1. Crea un file denominato `eks-hybrid-iamra-trust.json`. Sostituisci `TRUST_ANCHOR ARN` con l’ARN dell’ancora di fiducia che hai creato nei passaggi [Configura AWS IAM Roles Anywhere](#hybrid-nodes-iam-roles-anywhere). La condizione contenuta in questa policy di fiducia limita la capacità di AWS IAM Roles Anywhere di assumere il ruolo IAM di Hybrid Nodes per lo scambio di credenziali IAM temporanee solo quando il nome della sessione di ruolo corrisponde al CN nel certificato x509 installato sui nodi ibridi. In alternativa, puoi utilizzare altri attributi del certificato per identificare in modo univoco il tuo nodo. L’attributo del certificato che usi nella policy di fiducia deve corrispondere a `nodeName` che hai impostato nella configurazione `nodeadm`. Per ulteriori informazioni, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": [
                   "sts:TagSession",
                   "sts:SetSourceIdentity"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           }
       ]
   }
   ```

1. Crea il ruolo con il comando seguente.

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-iamra-trust.json
   ```

1. Collega la `EKSDescribeClusterPolicy` che hai creato nei passaggi precedenti. Sostituiscilo `AWS_ACCOUNT_ID` con l'ID del tuo account. AWS 

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

1. Allega la politica `AmazonEC2ContainerRegistryPullOnly` AWS gestita

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

### Console di gestione AWS
<a name="hybrid-nodes-creds-console"></a>

 **Crea la policy del cluster per descrivere EKS** 

1. Apri la [console Amazon IAM](https://console.aws.amazon.com/iam/home) 

1. Nel pannello di navigazione a sinistra, seleziona **Policy**.

1. Nella pagina **Policy**, scegli **Crea policy**.

1. Nella pagina Specifica le autorizzazioni, in Seleziona un pannello di servizio scegli EKS.

   1. Filtra le azioni **DescribeCluster**e seleziona l'azione **DescribeCluster**Leggi.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Verifica e crea**

   1. Immetti un **Nome policy** per la tua policy, come `EKSDescribeClusterPolicy`.

   1. Scegli **Crea policy**.

 **Passaggi per le attivazioni ibride AWS SSM** 

1. Apri la [console Amazon IAM](https://console.aws.amazon.com/iam/home) 

1. Nel pannello di navigazione a sinistra, seleziona **Policy**.

1. Nella pagina **Policy**, scegli **Crea policy**.

1. Nella pagina **Specifica autorizzazioni**, nella barra di navigazione in alto a destra **Editor della policy**, scegli **JSON**. Incollare il frammento seguente. `AWS_REGION`Sostituiscila con la AWS regione dell'attivazione ibrida AWS SSM e sostituiscila `AWS_ACCOUNT_ID` con l'ID del tuo AWS account. Sostituisci `TAG_KEY` e `TAG_VALUE` con la chiave del tag di risorsa AWS SSM che hai usato durante la creazione dell'attivazione ibrida AWS SSM.

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:DescribeInstanceInformation",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "ssm:DeregisterManagedInstance",
               "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
               "Condition": {
                   "StringEquals": {
                       "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                   }
               }
           }
       ]
   }
   ```

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Verifica e crea**

   1. Immetti un nome **Policy** per la tua policy, come `EKSHybridSSMPolicy`. 

   1. Scegli **Crea policy**.

1. Nel pannello di navigazione a sinistra, seleziona **Ruoli**.

1. Nella pagina **Ruoli**, seleziona **Crea ruolo**.

1. Nella pagina **Seleziona un’entità attendibile**, esegui le operazioni seguenti:

   1. Nel sezione **Tipo di entità attendibile**, scegli **Policy di attendibilità personalizzata**. Incolla quanto segue nell’editor della policy di attendibilità personalizzata. `AWS_REGION`Sostituiscilo con la AWS regione dell'attivazione ibrida AWS SSM e `AWS_ACCOUNT_ID` con l'ID del tuo AWS account.

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement":[
            {
               "Sid":"",
               "Effect":"Allow",
               "Principal":{
                  "Service":"ssm.amazonaws.com"
               },
               "Action":"sts:AssumeRole",
               "Condition":{
                  "StringEquals":{
                     "aws:SourceAccount":"123456789012"
                  },
                  "ArnEquals":{
                     "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
                  }
               }
            }
         ]
      }
      ```

   1. Scegli Next (Successivo).

1. Nella pagina **Aggiungi autorizzazioni**, collega una policy personalizzata o esegui le operazioni seguenti:

   1. Nella casella **Filtra policy**, inserisci `EKSDescribeClusterPolicy` o il nome della policy creata in precedenza. Seleziona la casella di controllo a sinistra il nome della policy nei risultati della ricerca.

   1. Nella casella **Filtra policy**, inserisci `EKSHybridSSMPolicy` o il nome della policy creata in precedenza. Seleziona la casella di controllo a sinistra il nome della policy nei risultati della ricerca.

   1. Nella casella **Filtra policy**, inserisci `AmazonEC2ContainerRegistryPullOnly`. Seleziona la casella di controllo a sinistra di `AmazonEC2ContainerRegistryPullOnly` nei risultati di ricerca.

   1. Nella casella **Filtra policy**, inserisci `AmazonSSMManagedInstanceCore`. Seleziona la casella di controllo a sinistra della `AmazonSSMManagedInstanceCore` nei risultati di ricerca.

   1. Scegli **Successivo**.

1. Nella pagina **Name, review, and create** (Assegna un nome, rivedi e crea), esegui le operazioni seguenti:

   1. Per **Nome ruolo**, inserisci un nome univoco per il ruolo, ad esempio `AmazonEKSHybridNodesRole`.

   1. Per **Description** (Descrizione), sostituisci il testo corrente con un testo descrittivo come `Amazon EKS - Hybrid Nodes role`.

   1. Scegli **Crea ruolo**.

 **Passaggi per AWS IAM Roles Anywhere** 

Per utilizzare AWS IAM Roles Anywhere, devi configurare il tuo trust anchor AWS IAM Roles Anywhere prima di creare il ruolo IAM di Hybrid Nodes. Per istruzioni, consulta [Configura AWS IAM Roles Anywhere](#hybrid-nodes-iam-roles-anywhere).

1. Apri la [console Amazon IAM](https://console.aws.amazon.com/iam/home) 

1. Nel pannello di navigazione a sinistra, seleziona **Ruoli**.

1. Nella pagina **Ruoli**, seleziona **Crea ruolo**.

1. Nella pagina **Seleziona un’entità attendibile**, esegui le operazioni seguenti:

   1. Nel sezione **Tipo di entità attendibile**, scegli **Policy di attendibilità personalizzata**. Incolla quanto segue nell’editor della policy di attendibilità personalizzata. Sostituisci `TRUST_ANCHOR ARN` con l’ARN dell’ancora di fiducia che hai creato nei passaggi [Configura AWS IAM Roles Anywhere](#hybrid-nodes-iam-roles-anywhere). La condizione contenuta in questa policy di fiducia limita la capacità di AWS IAM Roles Anywhere di assumere il ruolo IAM di Hybrid Nodes per lo scambio di credenziali IAM temporanee solo quando il nome della sessione di ruolo corrisponde al CN nel certificato x509 installato sui nodi ibridi. In alternativa, puoi utilizzare altri attributi del certificato per identificare in modo univoco il tuo nodo. L’attributo del certificato che usi nella policy di fiducia deve corrispondere al nodeName che hai impostato nella configurazione bideadm. Per ulteriori informazioni, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": [
                      "sts:TagSession",
                      "sts:SetSourceIdentity"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              },
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              }
          ]
      }
      ```

   1. Scegli Next (Successivo).

1. Nella pagina **Aggiungi autorizzazioni**, collega una policy personalizzata o esegui le operazioni seguenti:

   1. Nella casella **Filtra policy**, inserisci `EKSDescribeClusterPolicy` o il nome della policy creata in precedenza. Seleziona la casella di controllo a sinistra il nome della policy nei risultati della ricerca.

   1. Nella casella **Filtra policy**, inserisci `AmazonEC2ContainerRegistryPullOnly`. Seleziona la casella di controllo a sinistra della `AmazonEC2ContainerRegistryPullOnly` nei risultati di ricerca.

   1. Scegli **Successivo**.

1. Nella pagina **Name, review, and create** (Assegna un nome, rivedi e crea), esegui le operazioni seguenti:

   1. Per **Nome ruolo**, inserisci un nome univoco per il ruolo, ad esempio `AmazonEKSHybridNodesRole`.

   1. Per **Description** (Descrizione), sostituisci il testo corrente con un testo descrittivo come `Amazon EKS - Hybrid Nodes role`.

   1. Scegli **Crea ruolo**.

# Creazione di un cluster Amazon EKS con nodi ibridi
<a name="hybrid-nodes-cluster-create"></a>

Questo argomento offre una panoramica delle opzioni disponibili e descrive gli aspetti da considerare quando crei un cluster Amazon EKS abilitato per i nodi ibridi. EKS Hybrid Nodes ha lo stesso [supporto per le versioni di Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) dei cluster Amazon EKS con nodi cloud, incluso il supporto standard ed esteso.

Se non hai intenzione di utilizzare EKS Hybrid Nodes, consulta la documentazione principale di Amazon EKS create cluster all’indirizzo [Crea un cluster Amazon EKS.](create-cluster.md).

## Prerequisiti
<a name="hybrid-nodes-cluster-create-prep"></a>
+ Il [Configurazione dei prerequisiti per i nodi ibridi](hybrid-nodes-prereqs.md) è completato. Prima di creare un cluster abilitato ai nodi ibridi, è necessario che il nodo locale e, facoltativamente, il pod vengano identificati CIDRs , il VPC e le sottoreti creati in base ai requisiti EKS e ai requisiti dei nodi ibridi e il gruppo di sicurezza con le regole in entrata per il pod locale e facoltativamente. CIDRs Per ulteriori informazioni su questi prerequisiti, consulta [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md).
+ La versione più recente dell'interfaccia a riga di AWS comando (AWS CLI) installata e configurata sul dispositivo. Per verificare la versione attuale, usa `aws --version`. I gestori di pacchetti come yum, apt-get o Homebrew per macOS sono spesso diverse versioni dell'ultima versione della CLI. AWS Per installare la versione più recente, consulta [Installazione o aggiornamento all'ultima versione della AWS CLI e Configurazione delle impostazioni per la CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) [nella Guida per l'utente dell' AWS interfaccia](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) a riga di AWS comando.
+ Un [principale IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) con le autorizzazioni per creare ruoli IAM e allegare policy, nonché creare e descrivere cluster EKS

## Considerazioni
<a name="hybrid-nodes-cluster-create-consider"></a>
+ Il cluster deve utilizzare una modalità di autenticazione del cluster tra `API` e `API_AND_CONFIG_MAP`.
+ Il cluster deve utilizzare IPv4 la famiglia di indirizzi.
+ Il cluster deve utilizzare la connettività degli endpoint del cluster pubblico o privato. Il tuo cluster non può utilizzare la connettività endpoint del cluster «pubblica e privata», poiché l'endpoint del server API Amazon EKS Kubernetes si trasformerà in pubblico IPs per i nodi ibridi in esecuzione al di fuori del tuo VPC.
+ L’autenticazione OIDC è supportata per i cluster EKS con nodi ibridi.
+ È possibile aggiungere, modificare o rimuovere la configurazione dei nodi ibridi dei cluster esistenti. Per ulteriori informazioni, consulta [Abilitazione dei nodi ibridi su un cluster Amazon EKS esistente o modifica della configurazione](hybrid-nodes-cluster-update.md).

## Passaggio 1: creazione di un ruolo IAM del cluster
<a name="hybrid-nodes-cluster-create-iam"></a>

Se disponi già di un ruolo IAM del cluster o intendi creare il tuo cluster con `eksctl` o AWS CloudFormation, puoi saltare questo passaggio. Per impostazione predefinita, `eksctl` il AWS CloudFormation modello crea automaticamente il ruolo IAM del cluster.

1. Per creare un file JSON della policy di attendibilità IAM, esegui il comando seguente.

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Crea il ruolo IAM del cluster Amazon EKS. Se necessario, inserisci come prefazione eks-cluster-role-trust -policy.json il percorso sul computer in cui hai scritto il file nel passaggio precedente. Il comando associa il criterio di attendibilità creato nella Passaggio precedente al ruolo. Per creare un ruolo IAM, l’azione `iam:CreateRole` (autorizzazione) deve essere assegnata al [principale IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) che sta creando il ruolo.

   ```
   aws iam create-role \
       --role-name myAmazonEKSClusterRole \
       --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
   ```

1. Puoi assegnare la policy gestita da Amazon EKS o creare una policy personalizzata. Per conoscere le autorizzazioni minime che devi utilizzare nella policy personalizzata, consulta [Ruolo IAM del nodo Amazon EKS](create-node-role.md). Allega al ruolo la policy gestita da Amazon EKS, denominata `AmazonEKSClusterPolicy`. Per allegare una policy IAM a un [principale IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal), è necessario assegnare al principale che sta allegando la policy una delle azioni IAM (autorizzazioni) seguenti: `iam:AttachUserPolicy` o `iam:AttachRolePolicy`.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws: iam::aws:policy/AmazonEKSClusterPolicy \
       --role-name myAmazonEKSClusterRole
   ```

## Passaggio 2: creazione di cluster abilitato per i nodi ibridi
<a name="hybrid-nodes-cluster-create-cluster"></a>

Puoi creare un cluster utilizzando:
+  [eksctl](#hybrid-nodes-cluster-create-eksctl) 
+  [AWS CloudFormation](#hybrid-nodes-cluster-create-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-create-cli) 
+  [Console di gestione AWS](#hybrid-nodes-cluster-create-console) 

### Crea un cluster abilitato per i nodi ibridi - eksctl
<a name="hybrid-nodes-cluster-create-eksctl"></a>

È necessario installare la versione più recente dello strumento della riga di comando `eksctl`. Per l’installazione o l’aggiornamento di `eksctl`, consulta la sezione [Installation](https://eksctl.io/installation) nella documentazione di `eksctl`.

1. Crea `cluster-config.yaml` per definire un cluster Amazon IPv4 EKS abilitato ai nodi ibridi. Effettua le seguenti sostituzioni in `cluster-config.yaml`. Per un elenco completo delle impostazioni, consulta [eksctl documentation](https://eksctl.io/getting-started/).

   1. Sostituisci `CLUSTER_NAME` con un nome da assegnare al cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può avere una lunghezza superiore a 100 caratteri. Il nome deve essere univoco all'interno della AWS regione e AWS dell'account in cui stai creando il cluster.

   1. Sostituiscilo `AWS_REGION` con la AWS regione in cui desideri creare il cluster.

   1. Sostituisci `K8S_VERSION` con qualsiasi [versione supportata da Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).

   1. Sostituisci `CREDS_PROVIDER` con `ssm` o `ira` in base al provider di credenziali che hai configurato nei passaggi per [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).

   1. Sostituisci `CA_BUNDLE_CERT` se il tuo provider di credenziali è impostato su`ira`, che utilizza AWS IAM Roles Anywhere come provider di credenziali. Il CA\$1BUNDLE\$1CERT è l’ente di certificazione dell’autorità di certificazione (CA) e dipende dalla CA scelta. Il certificato deve essere in formato Privacy-Enhanced Mail (PEM).

   1. Sostituisci `GATEWAY_ID` con l’ID del tuo gateway privato virtuale o gateway di transito da collegare al tuo VPC.

   1. Sostituisci `REMOTE_NODE_CIDRS` con il nodo on-premises CIDR per i tuoi nodi ibridi.

   1. Sostituisci `REMOTE_POD_CIDRS` con il pod CIDR on-premises per i carichi di lavoro in esecuzione su nodi ibridi o rimuovi la riga dalla configurazione se non esegui webhook su nodi ibridi. È necessario configurare `REMOTE_POD_CIDRS` se il CNI non utilizza Network Address Translation (NAT) o il mascheramento per gli indirizzi IP dei pod quando il traffico dei pod lascia gli host on-premises. È necessario eseguire la configurazione `REMOTE_POD_CIDRS` se si eseguono webhook su nodi ibridi; per ulteriori informazioni consulta [Configurazione di webhook per nodi ibridi](hybrid-nodes-webhooks.md).

   1. I blocchi CIDR del nodo e del pod in on-premises devono soddisfare i seguenti requisiti:

      1. Rientrare in uno degli intervalli IPv4 RFC-1918:`10.0.0.0/8`, `172.16.0.0/12``192.168.0.0/16`, o o all'interno dell'intervallo CGNAT definito dalla RFC 6598:. `100.64.0.0/10`

      1. Non si sovrappongano tra loro, né per il tuo cluster o `VPC CIDR` per il tuo servizio Kubernetes CIDR IPv4 

         ```
         apiVersion: eksctl.io/v1alpha5
         kind: ClusterConfig
         
         metadata:
           name: CLUSTER_NAME
           region: AWS_REGION
           version: "K8S_VERSION"
         
         remoteNetworkConfig:
           iam:
             provider: CREDS_PROVIDER # default SSM, can also be set to IRA
             # caBundleCert: CA_BUNDLE_CERT
           vpcGatewayID: GATEWAY_ID
           remoteNodeNetworks:
           - cidrs: ["REMOTE_NODE_CIDRS"]
           remotePodNetworks:
           - cidrs: ["REMOTE_POD_CIDRS"]
         ```

1. Esegui il comando seguente:

   ```
   eksctl create cluster -f cluster-config.yaml
   ```

   Il provisioning del cluster richiede diversi minuti. Durante la creazione del cluster, vengono visualizzate diverse righe di output. L’ultima riga di output è simile alla seguente riga di esempio.

   ```
   [✓]  EKS cluster "CLUSTER_NAME" in "REGION" region is ready
   ```

1. Continuare con [Passaggio 3: aggiornamento di kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

### Crea un cluster ibrido abilitato ai nodi - AWS CloudFormation
<a name="hybrid-nodes-cluster-create-cfn"></a>

Lo CloudFormation stack crea il ruolo IAM del cluster EKS e un cluster EKS con `RemoteNodeNetwork` e `RemotePodNetwork` da te specificato. Modifica il CloudFormation modello Se devi personalizzare le impostazioni per il tuo cluster EKS che non sono esposte nel CloudFormation modello.

1. Scarica il CloudFormation modello.

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-eks-cfn.yaml'
   ```

1. Crea `cfn-eks-parameters.json` e specifica la tua configurazione per ogni valore.

   1.  `CLUSTER_NAME`: il nome del nuovo cluster EKS da creare.

   1.  `CLUSTER_ROLE_NAME`: il nome del nuovo ruolo IAM del cluster EKS da creare. L'impostazione predefinita nel modello è «EKSClusterRuolo».

   1.  `SUBNET1_ID`: l’ID della prima sottorete creata nei passaggi preliminari.

   1.  `SUBNET2_ID`: l’ID della seconda sottorete creata nei passaggi preliminari.

   1.  `SG_ID`: il gruppo di sicurezza creato nei passaggi preliminari.

   1.  `REMOTE_NODE_CIDRS`: il nodo on-premises CIDR per i tuoi nodi ibridi.

   1.  `REMOTE_POD_CIDRS`: il pod CIDR on-premises per i carichi di lavoro in esecuzione su nodi ibridi. È necessario configurare `REMOTE_POD_CIDRS` se il CNI non utilizza Network Address Translation (NAT) o il mascheramento per gli indirizzi IP dei pod quando il traffico dei pod lascia gli host on-premises. È necessario eseguire la configurazione `REMOTE_POD_CIDRS` se si eseguono webhook su nodi ibridi; per ulteriori informazioni consulta [Configurazione di webhook per nodi ibridi](hybrid-nodes-webhooks.md).

   1. I blocchi CIDR del nodo e del pod in on-premises devono soddisfare i seguenti requisiti:

      1. Rientrare in uno degli intervalli IPv4 RFC-1918:`10.0.0.0/8`, `172.16.0.0/12``192.168.0.0/16`, o o all'interno dell'intervallo CGNAT definito da RFC 6598:. `100.64.0.0/10`

      1. Non si sovrappongano tra loro, né per il tuo cluster o `VPC CIDR` per il tuo servizio Kubernetes CIDR. IPv4 

   1.  `CLUSTER_AUTH`: la modalità di autenticazione del cluster per il tuo cluster. I valori validi sono `API` e `API_AND_CONFIG_MAP`. L’impostazione predefinita nel modello è `API_AND_CONFIG_MAP`.

   1.  `CLUSTER_ENDPOINT`: la connettività degli endpoint del cluster per il cluster. I valori validi sono “Public” e “Private”. L’impostazione predefinita nel modello è Private, il che significa che potrai connetterti all’endpoint dell’API Kubernetes solo dall’interno del tuo VPC.

   1.  `K8S_VERSION`: la versione Kubernetes desiderata per il cluster. Consulta [Versioni supportate da Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).

      ```
      {
        "Parameters": {
          "ClusterName": "CLUSTER_NAME",
          "ClusterRoleName": "CLUSTER_ROLE_NAME",
          "SubnetId1": "SUBNET1_ID",
          "SubnetId2": "SUBNET2_ID",
          "SecurityGroupId" "SG_ID",
          "RemoteNodeCIDR": "REMOTE_NODE_CIDRS",
          "RemotePodCIDR": "REMOTE_POD_CIDRS",
          "ClusterAuthMode": "CLUSTER_AUTH",
          "ClusterEndpointConnectivity": "CLUSTER_ENDPOINT",
          "K8sVersion": "K8S_VERSION"
        }
       }
      ```

1.  CloudFormation Implementa lo stack. Sostituiscilo `STACK_NAME` con il tuo nome per CloudFormation lo stack e `AWS_REGION` con la AWS regione in cui verrà creato il cluster.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --region AWS_REGION \
       --template-file hybrid-eks-cfn.yaml \
       --parameter-overrides file://cfn-eks-parameters.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

   Il provisioning del cluster richiede diversi minuti. È possibile controllare lo stato dello stack con il comando seguente. Sostituiscilo `STACK_NAME` con il tuo nome per CloudFormation lo stack e `AWS_REGION` con la AWS regione in cui verrà creato il cluster.

   ```
   aws cloudformation describe-stacks \
       --stack-name STACK_NAME \
       --region AWS_REGION \
       --query 'Stacks[].StackStatus'
   ```

1. Continuare con [Passaggio 3: aggiornamento di kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

### Crea un cluster abilitato ai nodi ibridi - CLI AWS
<a name="hybrid-nodes-cluster-create-cli"></a>

1. Esegui il comando seguente per creare un cluster EKS abilitato per i nodi ibridi. Prima di eseguire il comando, sostituisci le impostazioni seguenti con le tue. Per un elenco completo delle impostazioni, consulta la documentazione [Crea un cluster Amazon EKS.](create-cluster.md).

   1.  `CLUSTER_NAME`: il nome del nuovo cluster EKS da creare.

   1.  `AWS_REGION`: AWS Regione in cui verrà creato il cluster.

   1.  `K8S_VERSION`: la versione Kubernetes desiderata per il cluster. Controlla le versioni supportate da Amazon EKS.

   1.  `ROLE_ARN`: il ruolo del cluster Amazon EKS che hai configurato per il tuo cluster. Per ulteriori informazioni, consulta il ruolo IAM del cluster Amazon EKS.

   1.  `SUBNET1_ID`: l’ID della prima sottorete creata nei passaggi preliminari.

   1.  `SUBNET2_ID`: l’ID della seconda sottorete creata nei passaggi preliminari.

   1.  `SG_ID`: il gruppo di sicurezza creato nei passaggi preliminari.

   1. È possibile utilizzare `API` e `API_AND_CONFIG_MAP` per la modalità di autenticazione dell’accesso al cluster. Nel comando seguente, la modalità di autenticazione dell’accesso al cluster è impostata su `API_AND_CONFIG_MAP`.

   1. È possibile utilizzare i parametri `endpointPublicAccess` e `endpointPrivateAccess` per abilitare o disabilitare l’accesso pubblico e privato all’endpoint del server API Kubernetes del cluster. Nel comando seguente `endpointPublicAccess` è impostato su false e `endpointPrivateAccess` è impostato su true.

   1.  `REMOTE_NODE_CIDRS`: il nodo on-premises CIDR per i tuoi nodi ibridi.

   1.  `REMOTE_POD_CIDRS` (facoltativo): il pod CIDR on-premises per i carichi di lavoro in esecuzione su nodi ibridi.

   1. I blocchi CIDR del nodo e del pod in on-premises devono soddisfare i seguenti requisiti:

      1. Rientrare in uno degli intervalli IPv4 RFC-1918: `10.0.0.0/8` `172.16.0.0/12``192.168.0.0/16`, o o o all'interno dell'intervallo CGNAT definito da RFC 6598:. `100.64.0.0/10`

      1. Non si sovrappongano tra loro, né `VPC CIDR` per il tuo cluster Amazon EKS o il tuo servizio Kubernetes CIDR. IPv4 

         ```
         aws eks create-cluster \
             --name CLUSTER_NAME \
             --region AWS_REGION \
             --kubernetes-version K8S_VERSION \
             --role-arn ROLE_ARN \
             --resources-vpc-config subnetIds=SUBNET1_ID,SUBNET2_ID,securityGroupIds=SG_ID,endpointPrivateAccess=true,endpointPublicAccess=false \
             --access-config authenticationMode=API_AND_CONFIG_MAP \
             --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
         ```

1. Il provisioning del cluster richiede diversi minuti. È possibile eseguire query sullo stato del cluster con il comando seguente. Sostituiscilo `CLUSTER_NAME` con il nome del cluster che stai creando e `AWS_REGION` con la AWS regione in cui il cluster sta creando. Non passare alla fase successiva finché l’output restituito non è `ACTIVE`.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

1. Continuare con [Passaggio 3: aggiornamento di kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

### Crea un cluster abilitato ai nodi ibridi - Console di gestione AWS
<a name="hybrid-nodes-cluster-create-console"></a>

1. Apri la console Amazon EKS in [Amazon EKS console](https://console.aws.amazon.com/eks/home#/clusters).

1. Seleziona Aggiungi cluster e quindi Crea.

1. Nella pagina Configura cluster compila i campi seguenti:

   1.  **Nome**: un nome per il cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole), trattini e trattini bassi. Deve iniziare con un carattere alfanumerico e non può avere una lunghezza superiore a 100 caratteri. Il nome deve essere univoco all'interno della AWS regione e AWS dell'account in cui stai creando il cluster.

   1.  **Ruolo IAM del cluster**: scegli il ruolo IAM del cluster Amazon EKS che hai creato per consentire al piano di controllo Kubernetes di gestire AWS le risorse per tuo conto.

   1.  **Versione Kubernetes** – la versione di Kubernetes da utilizzare per il cluster. È preferibile selezionare la versione più recente, a meno che non occorra una versione precedente.

   1.  **Policy di aggiornamento**: scegli tra esteso o standard.

      1.  **Esteso:** questa opzione supporta la versione Kubernetes per 26 mesi dopo la data di rilascio. Il periodo di supporto esteso ha un costo orario aggiuntivo che inizia dopo la fine del periodo di quello standard. Al termine del supporto esteso, il cluster verrà aggiornato automaticamente alla versione successiva.

      1.  **Standard:** questa opzione supporta la versione Kubernetes per 14 mesi dopo la data di rilascio. Non è previsto alcun costo aggiuntivo Al termine del supporto standard, il cluster verrà aggiornato automaticamente alla versione successiva.

   1.  **Accesso al cluster**: scegli di consentire o negare l’accesso all’amministratore del cluster e seleziona una modalità di autenticazione. Le seguenti modalità di autenticazione sono supportate per i cluster abilitati per i nodi ibridi.

      1.  **API EKS**: il cluster genererà i principali IAM autenticati solo dall'accesso EKS. APIs

      1.  **API EKS e ConfigMap**: Il cluster fornirà i principali IAM autenticati sia dalla voce di accesso EKS che da. APIs `aws-auth` ConfigMap

   1.  **Crittografia dei segreti** (Facoltativo): scegli di abilitare la crittografia dei segreti per i segreti Kubernetes tramite una chiave KMS. Puoi abilitare questa funzionalità anche dopo la creazione del cluster. Assicurati, tuttavia, di acquisire familiarità con le informazioni contenute nella sezione [Crittografia dei segreti Kubernetes con KMS su cluster esistenti](enable-kms.md).

   1.  **Spostamento zonale ARC**: se abilitato, EKS registrerà il cluster con lo spostamento zonale ARC per consentirti di utilizzare quest’ultimo per spostare il traffico delle applicazioni lontano da una zona di disponibilità.

   1.  **Tag**: (facoltativo) aggiunge eventuali tag al cluster. Per ulteriori informazioni, consulta [Organizzazione delle risorse Amazon EKS con tag](eks-using-tags.md).

   1. Quando hai finito con questa pagina, seleziona **Avanti**.

1. Nella pagina **Specifica reti**, seleziona i valori dei campi riportati di seguito:

   1.  **VPC**: scegli un VPC esistente che soddisfi i requisiti di [Visualizzazione di requisiti di rete di Amazon EKS per VPC e sottoreti](network-reqs.md) e [Amazon EKS Hybrid Nodes](hybrid-nodes-prereqs.md). Prima di scegliere un VPC, ti consigliamo di acquisire familiarità con i requisiti e le considerazioni nella sezione Visualizza i requisiti di rete di Amazon EKS per VPC, sottoreti e nodi ibridi. Dopo la creazione del cluster, non potrai più modificare il VPC da utilizzare. Se non VPCs ne sono elencati, devi prima crearne uno. Per ulteriori informazioni consulta [Creazione di un Amazon VPC per il cluster Amazon EKS.](creating-a-vpc.md) e [Amazon EKS Hybrid Nodes networking requirements](hybrid-nodes-prereqs.md).

   1.  **Sottoreti**: per impostazione predefinita, tutte le sottoreti disponibili nel VPC specificato nel campo precedente sono preselezionate. È necessario selezionarne almeno due.

   1.  **Gruppi di sicurezza**: (facoltativo) specifica uno o più gruppi di sicurezza da associare alle interfacce di rete create da Amazon EKS. Almeno uno dei gruppi di sicurezza specificati deve disporre di regole in entrata per il nodo locale e, facoltativamente, per il pod. CIDRs Per ulteriori informazioni, consulta [Amazon EKS Hybrid Nodes networking requirements](hybrid-nodes-networking.md). Indipendentemente dal fatto che tu scelga o meno un gruppo di sicurezza, Amazon EKS ne crea uno nuovo per consentire la comunicazione tra il cluster e il VPC. Amazon EKS associa questo gruppo di sicurezza, e altri gruppi eventualmente scelti dall’utente, alle interfacce di rete create. Per ulteriori informazioni sul gruppo di sicurezza del cluster creato da Amazon EKS, consulta [Visualizzazione dei requisiti relativi al gruppo di sicurezza Amazon EKS per cluster](sec-group-reqs.md). È possibile modificare le regole nel gruppo di sicurezza del cluster creato da Amazon EKS.

   1.  **Scegli la famiglia di indirizzi IP del cluster**: devi scegliere tra cluster abilitati ai nodi IPv4 ibridi.

   1. **(Facoltativo) Scegli **Configura l'intervallo di indirizzi IP del servizio Kubernetes e specifica un intervallo di** servizi. IPv4 **

   1.  **Scegli Configura reti remote per abilitare i nodi ibridi** e specifica il nodo e il pod CIDRs locali per i nodi ibridi.

   1. È necessario configurare i pod CIDR remoti se il CNI non utilizza Network Address Translation (NAT) o il mascheramento per gli indirizzi IP dei pod quando il traffico dei pod lascia gli host on-premises. È necessario configurare il pod CIDR remoto se si eseguono webhook su nodi ibridi.

   1. I blocchi CIDR del nodo e del pod in on-premises devono soddisfare i seguenti requisiti:

      1. Rientrare in uno degli intervalli IPv4 RFC-1918: `10.0.0.0/8` `172.16.0.0/12``192.168.0.0/16`, o o o all'interno dell'intervallo CGNAT definito da RFC 6598:. `100.64.0.0/10`

      1. Non si sovrappongano tra loro, né per il tuo cluster o `VPC CIDR` per il tuo servizio Kubernetes CIDR IPv4 

   1. Per **Cluster endpoint access** (Accesso all’endpoint del cluster), seleziona un’opzione. Puoi modificare questa opzione dopo aver creato il cluster. Per i cluster abilitati per i nodi ibridi, devi scegliere Pubblico o Privato. Prima di selezionare un’opzione non predefinita, assicurati di familiarizzare con le opzioni e le relative implicazioni. Per ulteriori informazioni, consulta [Endpoint del server API del cluster](cluster-endpoint.md).

   1. Quando hai finito con questa pagina, seleziona **Avanti**.

1. (Facoltativo) Nella pagina **Configura** osservabilità, scegli le opzioni Parametri e Registrazione del piano di controllo da attivare. Per impostazione predefinita, i tipi di log sono disattivati.

   1. Per ulteriori informazioni sull’opzione relativa alle metriche di Prometheus, consulta [Monitoraggio delle metriche del cluster con Prometheus](prometheus.md).

   1. Per ulteriori informazioni sulle opzioni Registrazione del controllo EKS, consulta [Invia i registri del piano di controllo ai CloudWatch registri](control-plane-logs.md).

   1. Quando hai finito con questa pagina, seleziona **Avanti**.

1. Nella pagina **Select add-ons** (Seleziona componenti aggiuntivi), scegli i componenti aggiuntivi da aggiungere al tuo cluster.

   1. Puoi scegliere tutti i componenti aggiuntivi **Amazon EKS e i componenti aggiuntivi AWS ** **Marketplace** di cui hai bisogno. I componenti aggiuntivi di Amazon EKS che non sono compatibili con i nodi ibridi sono contrassegnati con la dicitura “Non compatibile con nodi ibridi” e hanno una regola di anti-affinità per impedirne l’esecuzione su nodi ibridi. Per ulteriori informazioni, consulta Configurazione dei componenti aggiuntivi per i nodi ibridi. Se i componenti aggiuntivi del ** AWS Marketplace** che desideri installare non sono elencati, puoi cercare i **componenti aggiuntivi di AWS Marketplace** disponibili inserendo il testo nella casella di ricerca. Puoi eseguire una ricerca anche per **categoria**, **fornitore** o **modello di prezzi** e quindi scegliere i componenti aggiuntivi dai risultati della ricerca.

   1. Alcuni componenti aggiuntivi, come CoreDNS e kube-proxy, sono installati per impostazione predefinita. Disabilitare uno dei componenti aggiuntivi predefiniti potrebbe influire sulla tua capacità di eseguire le applicazioni Kubernetes.

   1. Quando hai finito con questa pagina, seleziona `Next`.

1. Nella pagina **Configura le impostazioni dei componenti aggiuntivi selezionati**, seleziona la versione da installare.

   1. Dopo la creazione del cluster, puoi eseguire in qualsiasi momento l’aggiornamento a una versione successiva. Puoi aggiornare la configurazione di ogni componente aggiuntivo dopo la creazione del cluster. Per ulteriori informazioni sulla configurazione dei componenti aggiuntivi, consulta [Aggiornamento di un componente aggiuntivo di Amazon EKS](updating-an-add-on.md). Per le versioni dei componenti aggiuntivi compatibili con i nodi ibridi, consulta [Configurare componenti aggiuntivi per nodi ibridi](hybrid-nodes-add-ons.md).

   1. Quando hai finito con questa pagina, seleziona Avanti.

1. Nella pagina **Rivedi e crea**, controlla le informazioni che hai inserito o selezionato nelle pagine precedenti. Se devi apportare modifiche, seleziona **Edit** (Modifica). Al termine della configurazione, seleziona **Create** (Crea). Durante il provisioning del cluster, nel campo **Stato** viene visualizzato il messaggio **CREAZIONE**. Il provisioning del cluster richiede diversi minuti.

1. Continuare con [Passaggio 3: aggiornamento di kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

## Passaggio 3: aggiornamento di kubeconfig
<a name="hybrid-nodes-cluster-create-kubeconfig"></a>

Se hai creato il cluster utilizzando `eksctl`, puoi ignorare questo passaggio, poiché è già stato completato da `eksctl`. Abilita `kubectl` per consentire la comunicazione con il cluster aggiungendo un nuovo contesto al file di configurazione `kubectl`. Per ulteriori informazioni su come creare e aggiornare il file, consulta [Connettere kubectl a un cluster EKS creando un file kubeconfig](create-kubeconfig.md).

```
aws eks update-kubeconfig --name CLUSTER_NAME --region AWS_REGION
```

Di seguito viene riportato un output di esempio:

```
Added new context arn:aws: eks:AWS_REGION:111122223333:cluster/CLUSTER_NAME to /home/username/.kube/config
```

Conferma la comunicazione con il cluster eseguendo il comando seguente.

```
kubectl get svc
```

Di seguito viene riportato un output di esempio.

```
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   28h
```

## Passaggio 4: configurazione del cluster
<a name="_step_4_cluster_setup"></a>

Come passaggio successivo, consulta [Preparazione dell’accesso al cluster per i nodi ibridi](hybrid-nodes-cluster-prep.md) per abilitare l’accesso ai nodi ibridi al fine di entrare a far parte del cluster.

# Abilitazione dei nodi ibridi su un cluster Amazon EKS esistente o modifica della configurazione
<a name="hybrid-nodes-cluster-update"></a>

Questo argomento offre una panoramica delle opzioni disponibili e descrive gli aspetti da considerare quando aggiungi, modifichi o rimuovi la configurazione dei nodi ibridi per un cluster Amazon EKS.

Per consentire a un cluster Amazon EKS di utilizzare nodi ibridi, aggiungi gli intervalli CIDR degli indirizzi IP del nodo on-premises e, facoltativamente, la rete pod nella configurazione `RemoteNetworkConfig`. EKS utilizza questo elenco di CIDRs per abilitare la connettività tra il cluster e le reti locali. Per un elenco completo delle opzioni per l'aggiornamento della configurazione del [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)cluster, consulta *Amazon EKS API Reference*.

Puoi eseguire una delle seguenti azioni sulla configurazione della rete dei nodi ibridi EKS in un cluster:
+  [Aggiungi una configurazione di rete remota per abilitare i nodi ibridi EKS in un cluster esistente.](#hybrid-nodes-cluster-enable-existing) 
+  [Aggiungi, modifica o rimuovi le reti di nodi remoti e quelle pod remote in un cluster esistente.](#hybrid-nodes-cluster-update-config) 
+  [Rimuovi tutti gli intervalli CIDR della rete di nodi remoti per disabilitare i nodi ibridi EKS in un cluster esistente.](#hybrid-nodes-cluster-disable) 

## Prerequisiti
<a name="hybrid-nodes-cluster-enable-prep"></a>
+ Prima di abilitare il cluster Amazon EKS per nodi ibridi, assicurati che l’ambiente soddisfi i requisiti descritti in [Configurazione dei prerequisiti per i nodi ibridi](hybrid-nodes-prereqs.md) e specificati nel dettaglio in [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md), [Preparazione del sistema operativo per i nodi ibridi](hybrid-nodes-os.md) e [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).
+ Il cluster deve utilizzare una famiglia di IPv4 indirizzi.
+ Il cluster deve utilizzare una modalità di autenticazione del cluster tra `API` e `API_AND_CONFIG_MAP`. Il processo di modifica della modalità di autenticazione del cluster è descritto in [Cambia la modalità di autenticazione per utilizzare le voci di accesso](setting-up-access-entries.md).
+ Ti consigliamo di utilizzare l’accesso all’endpoint pubblico o privato per l’endpoint del server API Amazon EKS Kubernetes, ma non entrambi. Se scegli «Pubblico e privato», l'endpoint del server API Amazon EKS Kubernetes verrà sempre convertito in pubblico IPs per i nodi ibridi in esecuzione al di fuori del tuo VPC, il che può impedire ai nodi ibridi di entrare a far parte del cluster. Il processo per modificare l’accesso di rete al cluster è descritto in [Endpoint del server API del cluster](cluster-endpoint.md).
+ La versione più recente dell'interfaccia a riga di AWS comando (AWS CLI) installata e configurata sul dispositivo. Per verificare la versione attuale, usa `aws --version`. I gestori di pacchetti come yum, apt-get o Homebrew per macOS sono spesso diverse versioni dell'ultima versione della CLI. AWS Per installare la versione più recente, consulta [Installazione o aggiornamento alla versione più recente della AWS CLI e Configurazione delle impostazioni per la CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) [nella Guida per l'utente dell' AWS interfaccia](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) a riga di AWS comando.
+ Un [principale IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) con l'autorizzazione a chiamare [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)il tuo cluster Amazon EKS.
+ Aggiorna i componenti aggiuntivi alle versioni compatibili con i nodi ibridi. Per le versioni dei componenti aggiuntivi compatibili con i nodi ibridi, consulta [Configurare componenti aggiuntivi per nodi ibridi](hybrid-nodes-add-ons.md).
+ Se esegui componenti aggiuntivi non compatibili con i nodi ibridi, assicurati che il componente aggiuntivo [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)o la [distribuzione](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) abbiano la seguente regola di affinità per impedire la distribuzione su nodi ibridi. Aggiungi la seguente regola di affinità se non è già presente.

  ```
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
  ```

## Considerazioni
<a name="hybrid-nodes-cluster-enable-consider"></a>

L’oggetto `remoteNetworkConfig` JSON ha il seguente comportamento durante un aggiornamento:
+ Qualsiasi parte esistente della configurazione che non specifichi rimane invariata. Se non specificate nessuno né `remoteNodeNetworks` né `remotePodNetworks`, quella parte rimarrà la stessa.
+ Se si stanno modificando `remotePodNetworks` gli elenchi `remoteNodeNetworks` o di CIDRs, è necessario specificare l'elenco completo CIDRs che si desidera inserire nella configurazione finale. Quando specifichi una modifica all’elenco `remoteNodeNetworks` o all’elenco `remotePodNetworks` CIDR, EKS sostituisce l’elenco originale durante l’aggiornamento.
+ I blocchi CIDR del nodo e del pod in on-premises devono soddisfare i seguenti requisiti:

  1. Rientrare in uno degli intervalli IPv4 RFC-1918:10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16 o rientrare nell'intervallo CGNAT definito da RFC 6598: `100.64.0.0/10` 

  1. Non si sovrappongano tra loro, né tutti i CIDRs VPC per il cluster Amazon EKS o il servizio IPv4 Kubernetes CIDR.

## Abilitazione dei nodi ibridi su un cluster esistente
<a name="hybrid-nodes-cluster-enable-existing"></a>

È possibile abilitare i nodi ibridi EKS in un cluster esistente utilizzando:
+  [AWS CloudFormation](#hybrid-nodes-cluster-enable-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-enable-cli) 
+  [Console di gestione AWS](#hybrid-nodes-cluster-enable-console) 

### Abilita i nodi ibridi EKS in un cluster esistente - AWS CloudFormation
<a name="hybrid-nodes-cluster-enable-cfn"></a>

1. Per abilitare i nodi ibridi EKS nel tuo cluster, aggiungi `RemoteNodeNetwork` e (opzionale) `RemotePodNetwork` al tuo CloudFormation modello e aggiorna lo stack. Tieni presente che `RemoteNodeNetwork` è un elenco con un massimo di un elemento `Cidrs` e che `Cidrs` è un elenco di più intervalli IP CIDR.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [RemoteNodeCIDR]
     RemotePodNetworks:
       - Cidrs: [RemotePodCIDR]
   ```

1. Continua su [Preparazione dell’accesso al cluster per i nodi ibridi](hybrid-nodes-cluster-prep.md).

### Abilitare i nodi ibridi EKS in un cluster esistente - AWS CLI
<a name="hybrid-nodes-cluster-enable-cli"></a>

1. Esegui il comando seguente per abilitare `RemoteNetworkConfig` per i nodi ibridi EKS per il cluster EKS. Prima di eseguire il comando, sostituisci le impostazioni seguenti con le tue. Per un elenco completo delle impostazioni, consulta [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)*Amazon EKS API Reference*.

   1.  `CLUSTER_NAME`: nome del cluster EKS da aggiornare

   1.  `AWS_REGION`: AWS Regione in cui è in esecuzione il cluster EKS.

   1.  `REMOTE_NODE_CIDRS`: il nodo on-premises CIDR per i tuoi nodi ibridi.

   1.  `REMOTE_POD_CIDRS` (facoltativo): il pod CIDR on-premises per i carichi di lavoro in esecuzione su nodi ibridi.

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
      ```

1. L’aggiornamento del cluster richiede diversi minuti. È possibile eseguire query sullo stato del cluster con il comando seguente. Sostituisci `CLUSTER_NAME` con il nome del cluster che stai modificando e `AWS_REGION` con la AWS regione in cui è in esecuzione il cluster. Non passare alla fase successiva finché l’output restituito non è `ACTIVE`.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

1. Continua su [Preparazione dell’accesso al cluster per i nodi ibridi](hybrid-nodes-cluster-prep.md).

### Abilita i nodi ibridi EKS in un cluster esistente - Console di gestione AWS
<a name="hybrid-nodes-cluster-enable-console"></a>

1. Apri la console Amazon EKS in [Amazon EKS console](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegliere il nome del cluster per visualizzare le informazioni sul cluster.

1. Scegliere la scheda **Reti**, quindi **Gestione**.

1. Nel menu a discesa, scegli **Reti remote**.

1.  **Scegli Configura reti remote per abilitare i nodi ibridi** e specifica il nodo e il pod locali CIDRs per i nodi ibridi.

1. Scegliere **Salva le modifiche** per terminare. Attendi che lo stato del cluster ritorni su **Attivo**.

1. Continua su [Preparazione dell’accesso al cluster per i nodi ibridi](hybrid-nodes-cluster-prep.md).

## Aggiornamento della configurazione dei nodi ibridi in un cluster esistente
<a name="hybrid-nodes-cluster-update-config"></a>

È possibile effettuare modifiche `remoteNetworkConfig` in un cluster ibrido esistente utilizzando uno dei seguenti metodi:
+  [AWS CloudFormation](#hybrid-nodes-cluster-update-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-update-cli) 
+  [Console di gestione AWS](#hybrid-nodes-cluster-update-console) 

### Aggiorna la configurazione ibrida in un cluster esistente - AWS CloudFormation
<a name="hybrid-nodes-cluster-update-cfn"></a>

1. Aggiorna il CloudFormation modello con i nuovi valori CIDR di rete.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [NEW_REMOTE_NODE_CIDRS]
     RemotePodNetworks:
       - Cidrs: [NEW_REMOTE_POD_CIDRS]
   ```
**Nota**  
Quando aggiorni gli elenchi `RemoteNodeNetworks` `RemotePodNetworks` CIDR, includi tutti CIDRs (nuovi ed esistenti). EKS sostituisce l’intero elenco durante gli aggiornamenti. L’omissione di questi campi dalla richiesta di aggiornamento mantiene le configurazioni esistenti.

1. Aggiorna CloudFormation lo stack con il modello modificato e attendi il completamento dell'aggiornamento dello stack.

### Aggiornamento della configurazione ibrida in un cluster esistente - AWS CLI
<a name="hybrid-nodes-cluster-update-cli"></a>

1. Per modificare la rete remota CIDRs, esegui il comando seguente. Sostituisci i valori le tue impostazioni:

   ```
   aws eks update-cluster-config
   --name CLUSTER_NAME
   --region AWS_REGION
   --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["NEW_REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["NEW_REMOTE_POD_CIDRS"]}]}'
   ```
**Nota**  
Quando aggiorni gli elenchi `remoteNodeNetworks` `remotePodNetworks` CIDR, includi tutti CIDRs (nuovi ed esistenti). EKS sostituisce l’intero elenco durante gli aggiornamenti. L’omissione di questi campi dalla richiesta di aggiornamento mantiene le configurazioni esistenti.

1. Attendi che lo stato del cluster ritorni ad ATTIVO prima di procedere.

### Aggiorna la configurazione ibrida in un cluster esistente - Console di gestione AWS
<a name="hybrid-nodes-cluster-update-console"></a>

1. Apri la console Amazon EKS in [Amazon EKS console](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegliere il nome del cluster per visualizzare le informazioni sul cluster.

1. Scegliere la scheda **Reti**, quindi **Gestione**.

1. Nel menu a discesa, scegli **Reti remote**.

1. Aggiorna il CIDRs file sottostante `Remote node networks` e `Remote pod networks - Optional` secondo necessità.

1. Scegli **Salva modifiche** e attendi che lo stato del cluster ritorni **Attivo**.

## Disabilitazione dei nodi ibridi in un cluster esistente
<a name="hybrid-nodes-cluster-disable"></a>

È possibile disabilitare i nodi ibridi EKS in un cluster esistente utilizzando:
+  [AWS CloudFormation](#hybrid-nodes-cluster-disable-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-disable-cli) 
+  [Console di gestione AWS](#hybrid-nodes-cluster-disable-console) 

### Disabilita i nodi ibridi EKS in un cluster esistente - AWS CloudFormation
<a name="hybrid-nodes-cluster-disable-cfn"></a>

1. Per disabilitare i nodi ibridi EKS nel cluster, imposta `RemoteNodeNetworks` e `RemotePodNetworks` svuota gli array nel CloudFormation modello e aggiorna lo stack.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks: []
     RemotePodNetworks: []
   ```

### Disabilita i nodi ibridi EKS in un cluster esistente - AWS CLI
<a name="hybrid-nodes-cluster-disable-cli"></a>

1. Esegui i seguenti comandi per rimuovere `RemoteNetworkConfig` dal cluster EKS. Prima di eseguire il comando, sostituisci le impostazioni seguenti con le tue. Per un elenco completo delle impostazioni, consulta [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)*Amazon EKS API Reference*.

   1.  `CLUSTER_NAME`: nome del cluster EKS da aggiornare

   1.  `AWS_REGION`: AWS Regione in cui è in esecuzione il cluster EKS.

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[],"remotePodNetworks":[]}'
      ```

1. L’aggiornamento del cluster richiede diversi minuti. È possibile eseguire query sullo stato del cluster con il comando seguente. Sostituisci `CLUSTER_NAME` con il nome del cluster che stai modificando e `AWS_REGION` con la AWS regione in cui è in esecuzione il cluster. Non passare alla fase successiva finché l’output restituito non è `ACTIVE`.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

### Disabilita i nodi ibridi EKS in un cluster esistente - Console di gestione AWS
<a name="hybrid-nodes-cluster-disable-console"></a>

1. Apri la console Amazon EKS in [Amazon EKS console](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegliere il nome del cluster per visualizzare le informazioni sul cluster.

1. Scegliere la scheda **Reti**, quindi **Gestione**.

1. Nel menu a discesa, scegli **Reti remote**.

1. Scegli **Configura reti remote per abilitare i nodi ibridi** e rimuovere tutti i nodi CIDRs sottostanti `Remote node networks` e`Remote pod networks - Optional`.

1. Scegliere **Salva le modifiche** per terminare. Attendi che lo stato del cluster ritorni su **Attivo**.

# Preparazione dell’accesso al cluster per i nodi ibridi
<a name="hybrid-nodes-cluster-prep"></a>

Prima di connettere i nodi ibridi al cluster Amazon EKS, devi abilitare le autorizzazioni del ruolo IAM per i nodi ibridi con Kubernetes per entrare a far parte del cluster. Per ulteriori informazioni su come creare il ruolo IAM per i nodi ibridi, consulta [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md). Amazon EKS supporta due modi per associare i principali IAM a Kubernetes Role-Based Access Control (RBAC), alle voci di accesso Amazon EKS e a. `aws-auth` ConfigMap Per ulteriori informazioni sulla gestione dell’accesso di Amazon EKS, consulta[Concedi agli utenti e ai ruoli IAM l'accesso a Kubernetes APIs](grant-k8s-access.md) .

Utilizza le procedure seguenti per associare il ruolo IAM dei nodi ibridi alle autorizzazioni Kubernetes. Per utilizzare le voci di accesso di Amazon EKS, il cluster deve essere stato creato con le modalità di autenticazione `API` o `API_AND_CONFIG_MAP`. Per utilizzare `aws-auth` ConfigMap, il cluster deve essere stato creato con la modalità di autenticazione. `API_AND_CONFIG_MAP` La modalità di autenticazione `CONFIG_MAP`-only non è supportata per i cluster Amazon EKS abilitati per i nodi ibridi.

## Utilizzo delle voci di accesso di Amazon EKS per il ruolo IAM dei nodi ibridi
<a name="_using_amazon_eks_access_entries_for_hybrid_nodes_iam_role"></a>

Esiste un tipo di accesso Amazon EKS per i nodi ibridi denominato HYBRID\$1LINUX che può essere utilizzato con un ruolo IAM. Con questo tipo di accesso, il nome utente viene impostato automaticamente su system:node: \$1\$1SessionName\$1\$1. Per ulteriori informazioni sulla creazione delle voci di accesso, consulta [Creare voci di accesso](creating-access-entries.md).

### AWS CLI
<a name="shared_aws_cli"></a>

1. È necessario che sul dispositivo sia installata e configurata la versione più recente della AWS CLI. Per verificare la versione attuale, usa `aws --version`. I gestori di pacchetti come yum, apt-get o Homebrew per macOS sono spesso diverse versioni dell'ultima versione della CLI. AWS Per installare la versione più recente, consulta Installazione e configurazione rapida con aws configure nella Guida per l'utente dell' AWS interfaccia a riga di comando.

1. Creare la tua voce di accesso con il comando seguente. Sostituisci CLUSTER\$1NAME con il nome del tuo cluster e HYBRID\$1NODES\$1ROLE\$1ARN con l’ARN del ruolo che hai creato nei passaggi per [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).

   ```
   aws eks create-access-entry --cluster-name CLUSTER_NAME \
       --principal-arn HYBRID_NODES_ROLE_ARN \
       --type HYBRID_LINUX
   ```

### Console di gestione AWS
<a name="hybrid-nodes-cluster-prep-console"></a>

1. Apri la console Amazon EKS in [Amazon EKS console](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegli il nome del cluster ibrido abilitato per i nodi.

1. Scegliere la scheda **Accesso**.

1. Seleziona **Crea voce di accesso**.

1. Per **principale IAM**, seleziona il ruolo IAM dei nodi ibridi che hai creato nei passaggi per [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).

1. Per **Tipo**, seleziona **Hybrid Linux**.

1. (Facoltativo) Per **Tag**, assegna etichette alla voce di accesso. Ad esempio, per facilitare la ricerca di tutte le risorse con lo stesso tag.

1. Scegli **Vai alla revisione e alla creazione**. Non è possibile aggiungere policy alla voce di accesso Hybrid Linux o modificarne l’ambito di accesso.

1. Verifica la configurazione per la tua voce di accesso. Se noti qualcosa di errato, scegli **Precedente** per tornare indietro e correggere l’errore. Se la configurazione è corretta, scegli **Crea**.

## Utilizzo di aws-auth ConfigMap per il ruolo IAM di Hybrid Nodes
<a name="_using_aws_auth_configmap_for_hybrid_nodes_iam_role"></a>

Nei passaggi seguenti, creerai o aggiornerai `aws-auth` ConfigMap con l'ARN il ruolo IAM dei nodi ibridi che hai creato nei passaggi per. [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md)

1. Verifica se ne hai uno esistente `aws-auth` ConfigMap per il tuo cluster. Considera che se stai usando un file `kubeconfig` specifico, devi usare il flag `--kubeconfig`.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Se ti viene mostrato un `aws-auth` ConfigMap, aggiornalo secondo necessità.

   1. Apri il file ConfigMap per modificarlo.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Aggiungi una nuova voce `mapRoles`, se necessario. Sostituisci `HYBRID_NODES_ROLE_ARN` con l’ARN del ruolo IAM dei nodi ibridi. Nota, `{{SessionName}}` è il formato di modello corretto da salvare in ConfigMap. Non sostituirlo con altri valori.

      ```
      data:
        mapRoles: |
        - groups:
          - system:bootstrappers
          - system:nodes
          rolearn: HYBRID_NODES_ROLE_ARN
          username: system:node:{{SessionName}}
      ```

   1. Salva il file ed esci dall’editor di testo.

1. Se non ne esiste uno `aws-auth` ConfigMap per il tuo cluster, crealo con il seguente comando. Sostituisci `HYBRID_NODES_ROLE_ARN` con l’ARN del ruolo IAM dei nodi ibridi. Nota che `{{SessionName}}` è il formato di modello corretto da salvare in ConfigMap. Non sostituirlo con altri valori.

   ```
   kubectl apply -f=/dev/stdin <<-EOF
   apiVersion: v1
   kind: ConfigMap
   metadata:
     name: aws-auth
     namespace: kube-system
   data:
     mapRoles: |
     - groups:
       - system:bootstrappers
       - system:nodes
       rolearn: HYBRID_NODES_ROLE_ARN
       username: system:node:{{SessionName}}
   EOF
   ```

# Esegui carichi di lavoro on-premises su nodi ibridi
<a name="hybrid-nodes-tutorial"></a>

In un cluster EKS con nodi ibridi abilitati, puoi eseguire applicazioni on-premises ed edge sulla tua infrastruttura con gli stessi cluster, le stesse funzionalità e gli stessi strumenti Amazon EKS che usi nel cloud AWS.

Le seguenti sezioni contengono istruzioni dettagliate per l’utilizzo di nodi ibridi.

**Topics**
+ [Connessione di nodi ibridi](hybrid-nodes-join.md)
+ [Connessione dei nodi ibridi con Bottlerocket](hybrid-nodes-bottlerocket.md)
+ [Aggiornamento dei nodi ibridi](hybrid-nodes-upgrade.md)
+ [Patch per i nodi ibridi](hybrid-nodes-security.md)
+ [Elimina i nodi ibridi](hybrid-nodes-remove.md)

# Connessione di nodi ibridi
<a name="hybrid-nodes-join"></a>

**Nota**  
I seguenti passaggi si applicano ai nodi ibridi che eseguono sistemi operativi compatibili ad eccezione di Bottlerocket. Per i passaggi per connettere un nodo ibrido che esegue Bottlerocket, consultare [Connessione dei nodi ibridi con Bottlerocket](hybrid-nodes-bottlerocket.md).

In questo argomento viene descritto come connettere nodi ibridi a un cluster Amazon EKS. Dopo che i nodi ibridi si sono uniti al cluster, verranno visualizzati con lo stato Not Ready nella console Amazon EKS e in strumenti compatibili con Kubernetes come kubectl. Dopo aver completato i passaggi in questa pagina, procedi su [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md) per preparare i nodi ibridi per l’esecuzione delle applicazioni.

## Prerequisiti
<a name="_prerequisites"></a>

Prima di connettere i nodi ibridi al cluster Amazon EKS, assicurati di aver completato tutti i passaggi relativi ai prerequisiti.
+ Disponi di una connettività di rete dal proprio ambiente on-premises alla Regione AWS che ospita il cluster Amazon EKS. Per ulteriori informazioni, consulta [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md).
+ Si dispone di un sistema operativo compatibile per i nodi ibridi installato sugli host on-premises. Per ulteriori informazioni, consulta [Preparazione del sistema operativo per i nodi ibridi](hybrid-nodes-os.md).
+ Hai creato il ruolo IAM Nodi ibridi e configurato il provider di credenziali on-premises (attivazioni ibride di Systems Manager di AWS o IAM Roles Anywhere di AWS). Per ulteriori informazioni, consulta [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).
+ Hai creato il cluster Amazon EKS abilitato per i nodi ibridi. Per ulteriori informazioni, consulta [Creazione di un cluster Amazon EKS con nodi ibridi](hybrid-nodes-cluster-create.md).
+ Hai associato il ruolo IAM Nodi ibridi alle autorizzazioni con il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes. Per ulteriori informazioni, consulta [Preparazione dell’accesso al cluster per i nodi ibridi](hybrid-nodes-cluster-prep.md).

## Passaggio 1: installazione della CLI per nodi ibridi (`nodeadm`) su ogni host on-premises
<a name="_step_1_install_the_hybrid_nodes_cli_nodeadm_on_each_on_premises_host"></a>

Se si include la CLI Amazon EKS Hybrid Nodes (`nodeadm`) nelle immagini predefinite del sistema operativo, è possibile saltare questo passaggio. Per maggiori informazioni sulla versione per nodi ibridi del `nodeadm`, consultare [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).

La versione di `nodeadm` per nodi ibridi è ospitata in Amazon S3 e gestita da Amazon CloudFront. Per installare `nodeadm` su ciascun host on-premises, puoi eseguire il seguente comando dagli host on-premises.

 **Per host x86\$164:** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
```

 **Per host ARM** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
```

Aggiungi l’autorizzazione per i file eseguibili al file binario scaricato su ciascun host.

```
chmod +x nodeadm
```

## Passaggio 2: installazione delle dipendenze dei nodi ibridi con `nodeadm`
<a name="_step_2_install_the_hybrid_nodes_dependencies_with_nodeadm"></a>

Se si stanno installando le dipendenze dei nodi ibridi in immagini del sistema operativo predefinite, è possibile ignorare questo passaggio. Il comando `nodeadm install` può essere utilizzato per installare tutte le dipendenze richieste per i nodi ibridi. Le dipendenze dei nodi ibridi includono containerd, kubelet, kubectl e i componenti SSM di AWS o IAM Roles Anywhere di AWS. Consultare [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md) per ulteriori informazioni sui componenti e le posizioni dei file installati da `nodeadm install`. Consultare la sezione [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md) dedicata ai nodi ibridi per ulteriori informazioni sui domini che devono essere consentiti nel firewall on-premises per il processo `nodeadm install`.

Eseguire il comando seguente per installare le dipendenze dei nodi ibridi sull’host on-premises. Il comando seguente deve essere eseguito con un utente con accesso sudo/root sull’host.

**Importante**  
La CLI per nodi ibridi (`nodeadm`) deve essere eseguita con un utente con accesso sudo/root sull’host.
+ Sostituire `K8S_VERSION` con la versione secondaria Kubernetes del cluster Amazon EKS, ad esempio `1.31`. Consultare [Amazon EKS supported versions](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) per un elenco delle versioni Kubernetes supportate.
+ Sostituire `CREDS_PROVIDER` con il provider di credenziali on-premises che si sta utilizzando. I valori validi sono `ssm` per SSM di AWS e `iam-ra` per IAM Roles Anywhere di AWS.

```
nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER
```

## Passaggio 3: connessione dei nodi ibridi al cluster
<a name="_step_3_connect_hybrid_nodes_to_your_cluster"></a>

Prima di connettere i nodi ibridi al cluster, assicurati di aver consentito l’accesso richiesto nel firewall on-premises e nel gruppo di sicurezza del cluster per il piano di controllo di Amazon EKS da/verso la comunicazione tra nodi ibridi. La maggior parte dei problemi in questa Passaggio riguarda la configurazione del firewall, la configurazione del gruppo di sicurezza o la configurazione del ruolo IAM dei nodi ibridi.

**Importante**  
La CLI per nodi ibridi (`nodeadm`) deve essere eseguita con un utente con accesso sudo/root sull’host.

1. Crea un file `nodeConfig.yaml` su ogni host con i valori per la tua implementazione. Per una descrizione completa delle impostazioni di configurazione disponibili, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md). Se il ruolo IAM dei nodi ibridi non dispone dell’autorizzazione per l’azione `eks:DescribeCluster`, devi passare l’endpoint dell’API Kubernetes, il cluster CA bundle e il servizio Kubernetes IPv4 CIDR nella sezione cluster del tuo `nodeConfig.yaml`.

   1. Utilizza il `nodeConfig.yaml` di esempio seguente se utilizzi attivazioni ibride SSM di AWS per il tuo provider di credenziali on-premises.

      1. Sostituisci `CLUSTER_NAME` con il nome del cluster.

      1. Sostituisci `AWS_REGION` con la Regione AWS in cui si trova il cluster. Ad esempio, `us-west-2`.

      1. Sostituisci `ACTIVATION_CODE` con il codice di attivazione che hai ricevuto durante la creazione dell’attivazione ibrida SSM di AWS. Per ulteriori informazioni, consulta [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).

      1. Sostituisci `ACTIVATION_ID` con l’ID di attivazione che hai ricevuto durante la creazione dell’attivazione ibrida SSM di AWS. È possibile recuperare queste informazioni dalla console Systems Manager di AWS o dal comando `aws ssm describe-activations` della AWS CLI.

         ```
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
           cluster:
             name: CLUSTER_NAME
             region: AWS_REGION
           hybrid:
             ssm:
               activationCode: ACTIVATION_CODE
               activationId: ACTIVATION_ID
         ```

   1. Utilizza il `nodeConfig.yaml` di esempio seguente se utilizzi IAM Roles Anywhere di AWS per il tuo provider di credenziali on-premises.

      1. Sostituisci `CLUSTER_NAME` con il nome del cluster.

      1. Sostituisci `AWS_REGION` con la Regione AWS in cui si trova il cluster. Ad esempio, `us-west-2`.

      1. Sostituisci `NODE_NAME` con il nome del ruolo del nodo. Il nome del nodo deve corrispondere al CN del certificato sull’host se hai configurato la policy di attendibilità del ruolo IAM di Hybrid Nodes con la condizione della risorsa `"sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}"`. Il `nodeName` che usi non deve superare i 64 caratteri.

      1. Sostituisci `TRUST_ANCHOR_ARN` con l’ARN dell’ancora di fiducia che hai configurato nei passaggi per Preparare le credenziali per i nodi ibridi.

      1. Sostituisci `PROFILE_ARN` con l’ARN dell’ancora di fiducia che hai configurato nei passaggi per [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).

      1. Sostituisci `ROLE_ARN` con l’ARN del ruolo IAM dei nodi ibridi.

      1. Sostituisci `CERTIFICATE_PATH` con il percorso su disco del certificato del tuo nodo. Se non lo specifichi, il valore predefinito è `/etc/iam/pki/server.pem`.

      1. Sostituisci `KEY_PATH` con il percorso su disco della chiave privata del certificato. Se non lo specifichi, il valore predefinito è `/etc/iam/pki/server.key`.

         ```
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
           cluster:
             name: CLUSTER_NAME
             region: AWS_REGION
           hybrid:
             iamRolesAnywhere:
               nodeName: NODE_NAME
               trustAnchorArn: TRUST_ANCHOR_ARN
               profileArn: PROFILE_ARN
               roleArn: ROLE_ARN
               certificatePath: CERTIFICATE_PATH
               privateKeyPath: KEY_PATH
         ```

1. Esegui il comando `nodeadm init` con il tuo `nodeConfig.yaml` per connettere i nodi ibridi al cluster Amazon EKS.

   ```
   nodeadm init -c file://nodeConfig.yaml
   ```

Se il comando precedente viene effettuato correttamente, il nodo ibrido si unisce al cluster Amazon EKS. Puoi verificarlo nella console Amazon EKS accedendo alla scheda Calcolo del tuo cluster ([assicurati che il principale IAM disponga delle autorizzazioni per la visualizzazione](view-kubernetes-resources.md#view-kubernetes-resources-permissions)) o con `kubectl get nodes`.

**Importante**  
I nodi avranno lo stato `Not Ready` previsto, dovuto alla mancanza di una CNI in esecuzione sui nodi ibridi. Se i tuoi nodi non si sono uniti al cluster, consulta [Risoluzione dei problemi relativi ai nodi ibridi](hybrid-nodes-troubleshooting.md).

## Passaggio 4: configurazione di una CNI per i nodi ibridi
<a name="_step_4_configure_a_cni_for_hybrid_nodes"></a>

Per preparare i nodi ibridi all’esecuzione delle applicazioni, continua con i passaggi su [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

# Connessione dei nodi ibridi con Bottlerocket
<a name="hybrid-nodes-bottlerocket"></a>

Questo argomento descrive come connettere i nodi ibridi che eseguono Bottlerocket a un cluster Amazon EKS. [Bottlerocket](https://aws.amazon.com/bottlerocket/) è una distribuzione Linux open source sponsorizzata e supportata da. AWS Bottlerocket è progettato appositamente per ospitare carichi di lavoro in container. Con Bottlerocket, puoi migliorare la disponibilità delle implementazioni containerizzate e ridurre i costi operativi automatizzando gli aggiornamenti dell’infrastruttura dei container. Bottlerocket include solo il software essenziale per eseguire i container, che migliora l’utilizzo delle risorse, riduce le minacce alla sicurezza e riduce i costi di gestione.

Solo VMware le varianti della versione Bottlerocket v1.37.0 e successive sono supportate con EKS Hybrid Nodes. VMware le varianti di Bottlerocket sono disponibili per le versioni Kubernetes v1.28 e successive. Le immagini del sistema operativo per queste varianti includono kubelet, containerd aws-iam-authenticator e altri prerequisiti software per EKS Hybrid Nodes. È possibile configurare questi componenti utilizzando un file di [impostazioni](https://github.com/bottlerocket-os/bottlerocket#settings) Bottlerocket che include dati utente codificati in base64 per i contenitori bootstrap e admin di Bottlerocket. La configurazione di queste impostazioni consente a Bottlerocket di utilizzare il provider di credenziali dei nodi ibridi per autenticare i nodi ibridi nel cluster. Dopo che i nodi ibridi si sono uniti al cluster, verranno visualizzati con lo stato `Not Ready` nella console Amazon EKS e in strumenti compatibili con Kubernetes come `kubectl`. Dopo aver completato i passaggi indicati in questa pagina, procedi a preparare i nodi ibridi [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md) per l’esecuzione delle applicazioni.

## Prerequisiti
<a name="_prerequisites"></a>

Prima di connettere i nodi ibridi al cluster Amazon EKS, assicurati di aver completato tutti i passaggi relativi ai prerequisiti.
+ Hai una connettività di rete dal tuo ambiente locale alla AWS regione che ospita il tuo cluster Amazon EKS. Per ulteriori informazioni, consulta [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md).
+ Hai creato il tuo ruolo IAM Hybrid Nodes e configurato il tuo provider di credenziali locale (AWS Systems Manager hybrid activations o AWS IAM Roles Anywhere). Per ulteriori informazioni, consulta [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).
+ Hai creato il cluster Amazon EKS abilitato per i nodi ibridi. Per ulteriori informazioni, consulta [Creazione di un cluster Amazon EKS con nodi ibridi](hybrid-nodes-cluster-create.md).
+ Hai associato il ruolo IAM Nodi ibridi alle autorizzazioni con il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes. Per ulteriori informazioni, consulta [Preparazione dell’accesso al cluster per i nodi ibridi](hybrid-nodes-cluster-prep.md).

## Passaggio 1: creazione del file TOML delle impostazioni Bottlerocket
<a name="_step_1_create_the_bottlerocket_settings_toml_file"></a>

Per configurare Bottlerocket per i nodi ibridi, è necessario creare un file `settings.toml` con la configurazione necessaria. Il contenuto del file TOML sarà diverso in base al provider di credenziali utilizzato (SSM o IAM Roles Anywhere). Questo file verrà passato come dati utente durante il provisioning dell’istanza Bottlerocket.

**Nota**  
I file TOML forniti di seguito rappresentano solo le impostazioni minime richieste per inizializzare una VMWare macchina Bottlerocket come nodo su un cluster EKS. Bottlerocket offre un'ampia gamma di impostazioni per soddisfare diversi casi d'uso, quindi per ulteriori opzioni di configurazione oltre all'inizializzazione del nodo ibrido, consulta la [documentazione di Bottlerocket](https://bottlerocket.dev/en) per l'elenco completo di tutte le impostazioni documentate per la versione Bottlerocket che stai utilizzando (ad esempio, [ecco](https://bottlerocket.dev/en/os/1.51.x/api/settings-index) tutte le impostazioni disponibili per Bottlerocket 1.51.x).

### SSM
<a name="_ssm"></a>

Se utilizzi AWS Systems Manager come provider di credenziali, crea un `settings.toml` file con il seguente contenuto:

```
[settings.kubernetes]
cluster-name = "<cluster-name>"
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
hostname-override = "<hostname>"
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
authentication-mode = "aws"
cloud-provider = ""
server-tls-bootstrap = true

[settings.network]
hostname = "<hostname>"

[settings.aws]
region = "<region>"

[settings.kubernetes.credential-providers.ecr-credential-provider]
enabled = true
cache-duration = "12h"
image-patterns = [
    "*.dkr.ecr.*.amazonaws.com",
    "*.dkr.ecr.*.amazonaws.com.rproxy.goskope.com.cn",
    "*.dkr.ecr.*.amazonaws.eu",
    "*.dkr.ecr-fips.*.amazonaws.com",
    "*.dkr.ecr-fips.*.amazonaws.eu",
    "public.ecr.aws"
]

[settings.kubernetes.node-labels]
"eks.amazonaws.com/compute-type" = "hybrid"
"eks.amazonaws.com/hybrid-credential-provider" = "ssm"

[settings.host-containers.admin]
enabled = true
user-data = "<base64-encoded-admin-container-userdata>"

[settings.bootstrap-containers.eks-hybrid-setup]
mode = "always"
user-data = "<base64-encoded-bootstrap-container-userdata>"

[settings.host-containers.control]
enabled = true
```

Sostituire i segnaposto con i seguenti valori:
+  `<cluster-name>`: il nome del cluster Amazon EKS.
+  `<api-server-endpoint>`: l’endpoint del server API del cluster.
+  `<cluster-certificate-authority>`: il bundle CA con codifica base64 del cluster.
+  `<region>`: La AWS regione che ospita il cluster, ad esempio «us-east-1".
+  `<hostname>`: il nome host dell’istanza Bottlerocket, che verrà configurato anche come nome del nodo. Questo può essere un valore univoco a tua scelta, ma deve rispettare le [convenzioni di denominazione degli oggetti Kubernetes](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). Inoltre, il nome host che usi non può superare i 64 caratteri. NOTA: quando si utilizza il provider SSM, il nome host e il nome del nodo verranno sostituiti dall’ID dell’istanza gestita (ad esempio, `mi-*` ID) dopo la registrazione dell’istanza con SSM.
+  `<base64-encoded-admin-container-userdata>`: il contenuto con codifica base64 della configurazione del container di amministrazione Bottlerocket. L’abilitazione del container di amministrazione consente di connettersi all’istanza Bottlerocket con SSH per l’esplorazione e il debug del sistema. Sebbene questa non sia un’impostazione obbligatoria, consigliamo di abilitarla per facilitare la risoluzione dei problemi. Consulta [Bottlerocket admin container documentation](https://github.com/bottlerocket-os/bottlerocket-admin-container#authenticating-with-the-admin-container) per ulteriori informazioni sull’autenticazione con il container di amministrazione. Il container di amministrazione accetta l’input dell’utente e della chiave SSH in formato JSON, ad esempio

```
{
  "user": "<ssh-user>",
  "ssh": {
    "authorized-keys": [
      "<ssh-authorized-key>"
    ]
  }
}
```
+  `<base64-encoded-bootstrap-container-userdata>`: il contenuto con codifica base64 della configurazione del container del bootstrap Bottlerocket. Consulta [Bottlerocket bootstrap container documentation](https://github.com/bottlerocket-os/bottlerocket-bootstrap-container) per ulteriori informazioni sulla sua configurazione. Il contenitore bootstrap è responsabile della registrazione dell'istanza come istanza gestita AWS SSM e dell'aggiunta come nodo Kubernetes sul tuo cluster Amazon EKS. I dati utente passati nel container bootstrap assumono la forma di un’invocazione di comando che accetta come input il codice di attivazione ibrido SSM e l’ID creati in precedenza:

```
eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region>
```

### IAM Roles Anywhere
<a name="_iam_roles_anywhere"></a>

Se utilizzi AWS IAM Roles Anywhere come provider di credenziali, crea un file con il seguente contenuto: `settings.toml`

```
[settings.kubernetes]
cluster-name = "<cluster-name>"
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
hostname-override = "<hostname>"
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
authentication-mode = "aws"
cloud-provider = ""
server-tls-bootstrap = true

[settings.network]
hostname = "<hostname>"

[settings.aws]
region = "<region>"
config = "<base64-encoded-aws-config-file>"

[settings.kubernetes.credential-providers.ecr-credential-provider]
enabled = true
cache-duration = "12h"
image-patterns = [
    "*.dkr.ecr.*.amazonaws.com",
    "*.dkr.ecr.*.amazonaws.com.rproxy.goskope.com.cn",
    "*.dkr.ecr.*.amazonaws.eu",
    "*.dkr.ecr-fips.*.amazonaws.com",
    "*.dkr.ecr-fips.*.amazonaws.eu",
    "public.ecr.aws"
]

[settings.kubernetes.node-labels]
"eks.amazonaws.com/compute-type" = "hybrid"
"eks.amazonaws.com/hybrid-credential-provider" = "iam-ra"

[settings.host-containers.admin]
enabled = true
user-data = "<base64-encoded-admin-container-userdata>"

[settings.bootstrap-containers.eks-hybrid-setup]
mode = "always"
user-data = "<base64-encoded-bootstrap-container-userdata>"
```

Sostituire i segnaposto con i seguenti valori:
+  `<cluster-name>`: il nome del cluster Amazon EKS.
+  `<api-server-endpoint>`: l’endpoint del server API del cluster.
+  `<cluster-certificate-authority>`: il bundle CA con codifica base64 del cluster.
+  `<region>`: La AWS regione che ospita il cluster, ad esempio «us-east-1"
+  `<hostname>`: il nome host dell’istanza Bottlerocket, che verrà configurato anche come nome del nodo. Questo può essere un valore univoco a tua scelta, ma deve rispettare le [convenzioni di denominazione degli oggetti Kubernetes](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). Inoltre, il nome host che usi non può superare i 64 caratteri. NOTA: quando si utilizza il provider IAM-RA, il nome del nodo deve corrispondere al CN del certificato sull’host se è stata configurata la policy di attendibilità del ruolo IAM dei nodi ibridi con la condizione della risorsa `"sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}"`.
+  `<base64-encoded-aws-config-file>`: I contenuti codificati in base64 del file di configurazione. AWS Il contenuto del file dovrebbe essere il seguente:

```
[default]
credential_process = aws_signing_helper credential-process --certificate /root/.aws/node.crt --private-key /root/.aws/node.key --profile-arn <profile-arn> --role-arn <role-arn> --trust-anchor-arn <trust-anchor-arn> --role-session-name <role-session-name>
```
+  `<base64-encoded-admin-container-userdata>`: il contenuto con codifica base64 della configurazione del container di amministrazione Bottlerocket. L’abilitazione del container di amministrazione consente di connettersi all’istanza Bottlerocket con SSH per l’esplorazione e il debug del sistema. Sebbene questa non sia un’impostazione obbligatoria, consigliamo di abilitarla per facilitare la risoluzione dei problemi. Consulta [Bottlerocket admin container documentation](https://github.com/bottlerocket-os/bottlerocket-admin-container#authenticating-with-the-admin-container) per ulteriori informazioni sull’autenticazione con il container di amministrazione. Il container di amministrazione accetta l’input dell’utente e della chiave SSH in formato JSON, ad esempio

```
{
  "user": "<ssh-user>",
  "ssh": {
    "authorized-keys": [
      "<ssh-authorized-key>"
    ]
  }
}
```
+  `<base64-encoded-bootstrap-container-userdata>`: il contenuto con codifica base64 della configurazione del container del bootstrap Bottlerocket. Consulta [Bottlerocket bootstrap container documentation](https://github.com/bottlerocket-os/bottlerocket-bootstrap-container) per ulteriori informazioni sulla sua configurazione. Il container bootstrap è responsabile della creazione del certificato host IAM Roles Anywhere e dei file delle chiavi private del certificato sull’istanza. Questi verranno quindi utilizzati da `aws_signing_helper` per ottenere credenziali temporanee per l’autenticazione con il cluster Amazon EKS. I dati utente passati nel container bootstrap assumono la forma di un’invocazione di comando che accetta come input i contenuti del certificato la chiave privata creati in precedenza:

```
eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key>
```

## Passaggio 2: fornitura dei dati utente alla macchina virtuale Bottlerocket vSphere
<a name="_step_2_provision_the_bottlerocket_vsphere_vm_with_user_data"></a>

Dopo aver creato il file TOML, passalo come dati utente durante la creazione della macchina virtuale vSphere. Tieni presente che i dati utente devono essere configurati prima che la macchina virtuale venga accesa per la prima volta. Pertanto, sarà necessario fornirli al momento della creazione dell’istanza o, se si desidera creare la macchina virtuale in anticipo; quest’ultima deve essere nello stato PoweredOff fino a quando non si configurano i relativi dati utente. Ad esempio, se utilizzi la `govc` CLI:

### Creazione della macchina virtuale per la prima volta
<a name="_creating_vm_for_the_first_time"></a>

```
govc vm.create \
  -on=true \
  -c=2 \
  -m=4096 \
  -net.adapter=<network-adapter> \
  -net=<network-name> \
  -e guestinfo.userdata.encoding="base64" \
  -e guestinfo.userdata="$(base64 -w0 settings.toml)" \
  -template=<template-name> \
  <vm-name>
```

### Aggiornamento dei dati utente per una macchina virtuale esistente
<a name="_updating_user_data_for_an_existing_vm"></a>

```
govc vm.create \
    -on=false \
    -c=2 \
    -m=4096 \
    -net.adapter=<network-adapter> \
    -net=<network-name> \
    -template=<template-name> \
    <vm-name>

govc vm.change
    -vm <vm-name> \
    -e guestinfo.userdata="$(base64 -w0 settings.toml)" \
    -e guestinfo.userdata.encoding="base64"

govc vm.power -on <vm-name>
```

Nelle sezioni precedenti, l’opzione `-e guestinfo.userdata.encoding="base64"` specifica che i dati utente sono codificati con Base64. L’opzione `-e guestinfo.userdata` passa i contenuti codificati con Base64 del file `settings.toml` come dati utente all’istanza Bottlerocket. Sostituisci i segnaposto con i tuoi valori specifici, come il modello OVA Bottlerocket e i dettagli di rete.

## Passaggio 3: verifica della connessione del nodo ibrido
<a name="_step_3_verify_the_hybrid_node_connection"></a>

Dopo l’avvio, l’istanza Bottlerocket tenterà di entrare a far parte del tuo cluster Amazon EKS. Puoi verificare la connessione nella console Amazon EKS accedendo alla scheda Calcolo per il tuo cluster o eseguendo il seguente comando:

```
kubectl get nodes
```

**Importante**  
I nodi avranno lo stato `Not Ready` previsto, dovuto alla mancanza di una CNI in esecuzione sui nodi ibridi. Se i tuoi nodi non si sono uniti al cluster, consulta [Risoluzione dei problemi relativi ai nodi ibridi](hybrid-nodes-troubleshooting.md).

## Passaggio 4: configurazione di una CNI per i nodi ibridi
<a name="_step_4_configure_a_cni_for_hybrid_nodes"></a>

Per preparare i nodi ibridi all’esecuzione delle applicazioni, continua con i passaggi su [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

# Aggiornamento dei nodi ibridi per il tuo cluster
<a name="hybrid-nodes-upgrade"></a>

Le linee guida per l’aggiornamento dei nodi ibridi sono simili ai nodi Amazon EKS autogestiti eseguiti in Amazon EC2. Ti consigliamo di creare nuovi nodi ibridi nella versione di Kubernetes di destinazione, eseguire la migrazione con facilità delle applicazioni esistenti sui nodi ibridi sulla nuova versione di Kubernetes e rimuovere questi ultimi sulla vecchia versione di Kubernetes dal tuo cluster. Assicurati di consultare le [Best practice di Amazon EKS](https://docs.aws.amazon.com/eks/latest/best-practices/cluster-upgrades.html) per gli aggiornamenti prima di iniziare un aggiornamento. Amazon EKS Hybrid Nodes ha lo stesso [Kubernetes version support](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) per i cluster Amazon EKS con nodi cloud, incluso il supporto standard ed esteso.

Amazon EKS Hybrid Nodes segue la stessa [policy di disallineamento delle versioni](https://kubernetes.io/releases/version-skew-policy/#supported-version-skew) per i nodi di Kubernetes upstream. Amazon EKS Hybrid Nodes non può avere una versione più recente del piano di controllo di Amazon EKS e i nodi ibridi possono contenere fino a tre versioni secondarie di Kubernetes precedenti a quella secondaria del piano di controllo Amazon EKS.

Se non disponi di capacità di riserva per creare nuovi nodi ibridi sulla versione Kubernetes di destinazione per una strategia di conversione della migrazione, puoi in alternativa utilizzare la CLI di Amazon EKS Hybrid Nodes (`nodeadm`) per aggiornare la versione Kubernetes dei tuoi nodi ibridi sul posto.

**Importante**  
Se stai aggiornando i tuoi nodi ibridi sul posto con `nodeadm`, è previsto un tempo di inattività per il nodo durante la procedura, in cui la versione precedente dei componenti di Kubernetes viene chiusa e i componenti della nuova versione vengono installati e avviati.

## Prerequisiti
<a name="_prerequisites"></a>

Prima di effettuare la connessione, assicurati di avere soddisfatto tutti i prerequisiti.
+ La versione Kubernetes di destinazione per l’aggiornamento dei nodi ibridi deve essere uguale o inferiore a quella del piano di controllo di Amazon EKS.
+ Se stai seguendo una strategia di conversione della migrazione e dell’aggiornamento, i nuovi nodi ibridi che stai installando sulla versione Kubernetes di destinazione devono soddisfare i requisiti [Configurazione dei prerequisiti per i nodi ibridi](hybrid-nodes-prereqs.md). Ciò include la presenza di indirizzi IP all’interno del CIDR della rete di nodi remoti che hai trasferito durante la creazione del cluster Amazon EKS.
+ Sia per la conversione della migrazione che per gli aggiornamenti sul posto, i nodi ibridi devono avere accesso ai [domini richiesti](hybrid-nodes-networking.md#hybrid-nodes-networking-on-prem) per sfruttare le nuove versioni delle dipendenze dei nodi ibridi.
+ Devi avere kubectl installato sul computer o sull’istanza locale che stai utilizzando per interagire con l’endpoint dell’API Amazon EKS Kubernetes.
+ La versione del tuo CNI deve supportare la versione di Kubernetes verso cui stai effettuando l’aggiornamento. In caso contrario, aggiorna la versione del CNI prima di aggiornare i nodi ibridi. Per ulteriori informazioni, consulta [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

## Aggiornamenti conversione migrazione (blu-verde)
<a name="hybrid-nodes-upgrade-cutover"></a>

 *Gli aggiornamenti della conversione della migrazione* si riferiscono al processo di creazione di nuovi nodi ibridi su nuovi host con la versione di Kubernetes di destinazione, con la migrazione graduale delle applicazioni esistenti ai nuovi nodi ibridi sulla versione Kubernetes di destinazione e la rimozione dei nodi ibridi sulla vecchia versione di Kubernetes dal cluster. Questa strategia è anche chiamata migrazione blu-verde.

1. Connetti i tuoi nuovi host come nodi ibridi seguendo i passaggi di [Connessione di nodi ibridi](hybrid-nodes-join.md). Quando esegui il comando `nodeadm install`, utilizza la versione di Kubernetes di destinazione.

1. Abilita la comunicazione tra i nuovi nodi ibridi nella versione Kubernetes di destinazione e quelli nella vecchia versione di Kubernetes. Ciò consente ai pod di comunicare tra loro durante la migrazione del carico di lavoro verso i nodi ibridi nella versione Kubernetes di destinazione.

1. Verifica che i nodi ibridi sulla versione di Kubernetes di destinazione si uniscano correttamente al cluster e mostrino lo stato Pronto.

1. Utilizza il comando seguente per contrassegnare come non programmabile ciascuno dei nodi che desideri rimuovere. In questo modo i nuovi pod non vengono pianificati né riprogrammati sui nodi che stai sostituendo. Per ulteriori informazioni, consulta [cordonazione di kubelet](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_cordon/) nella documentazione di Kubernetes. Sostituisci `NODE_NAME` con il nome dei nodi ibridi nella vecchia versione di Kubernetes.

   ```
   kubectl cordon NODE_NAME
   ```

   Puoi individuare e isolare tutti i nodi di una determinata versione di Kubernetes (in questo caso `1.28`) con il seguente frammento di codice.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Cordoning $node"
       kubectl cordon $node
   done
   ```

1. Se l’implementazione attuale è in esecuzione per un numero di volte inferiore a due repliche CoreDNS, aumenta orizzontalmente l’implementazione a due repliche. Consigliamo di eseguire almeno due repliche CoreDNS su nodi ibridi per garantire la resilienza durante le normali operazioni.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. Svuota ciascuno dei nodi della vecchia versione di Kubernetes che desideri rimuovere dal cluster con il comando seguente. Per ulteriori informazioni su come svuotare i nodi, consulta [Safely Drain a Node](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) nella documentazione di Kubernetes. Sostituisci `NODE_NAME` con il nome dei nodi ibridi nella vecchia versione di Kubernetes.

   ```
   kubectl drain NODE_NAME --ignore-daemonsets --delete-emptydir-data
   ```

   Puoi individuare e svuotare tutti i nodi di una determinata versione di Kubernetes (in questo caso, `1.28`) con il seguente frammento di codice.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Draining $node"
       kubectl drain $node --ignore-daemonsets --delete-emptydir-data
   done
   ```

1. Puoi utilizzare `nodeadm` per arrestare e rimuovere gli artefatti dei nodi ibridi dall’host. Devi eseguire `nodeadm` con un utente con privilegi root/sudo. Per impostazione predefinita, `nodeadm uninstall` non proseguirà se sul nodo rimangono dei pod. Per ulteriori informazioni, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).

   ```
   nodeadm uninstall
   ```

1. Una volta interrotti e disinstallati gli artefatti dei nodi ibridi, rimuovi la risorsa del nodo dal cluster.

   ```
   kubectl delete node node-name
   ```

   Puoi individuare ed eliminare tutti i nodi di una determinata versione di Kubernetes (in questo caso `1.28`) con il seguente frammento di codice.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Deleting $node"
       kubectl delete node $node
   done
   ```

1. A seconda del CNI scelto, potrebbero rimanere degli artefatti sui nodi ibridi dopo aver eseguito i passaggi precedenti. Per ulteriori informazioni, consulta [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

## Aggiornamenti sul posto
<a name="hybrid-nodes-upgrade-inplace"></a>

La procedura di aggiornamento sul posto si riferisce all’utilizzo di `nodeadm upgrade` per l’aggiornamento della versione di Kubernetes per nodi ibridi senza utilizzare nuovi host fisici o virtuali e alla conversione della strategia di migrazione. Il processo `nodeadm upgrade` chiude i componenti Kubernetes precedenti esistenti in esecuzione sul nodo ibrido, disinstalla i componenti Kubernetes precedenti esistenti, installa i nuovi componenti Kubernetes di destinazione e avvia i nuovi componenti Kubernetes di destinazione. Si consiglia vivamente di aggiornare un nodo alla volta per ridurre al minimo l’impatto sulle applicazioni in esecuzione sui nodi ibridi. La durata di questo processo dipende dalla larghezza di banda e dalla latenza della rete.

1. Usa il comando seguente per contrassegnare come non programmabile il nodo che stai aggiornando. In questo modo i nuovi pod non vengono pianificati né riprogrammati sul nodo che stai sostituendo. Per ulteriori informazioni, consulta [cordonazione di kubelet](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_cordon/) nella documentazione di Kubernetes. Sostituisci `NODE_NAME` con il nome del nodo ibrido che stai aggiornando

   ```
   kubectl cordon NODE_NAME
   ```

1. Svuota il nodo da aggiornare con il comando seguente. Per ulteriori informazioni su come svuotare i nodi, consulta [Safely Drain a Node](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) nella documentazione di Kubernetes. Sostituisci `NODE_NAME` con il nome del nodo ibrido che stai aggiornando.

   ```
   kubectl drain NODE_NAME --ignore-daemonsets --delete-emptydir-data
   ```

1. Esegui `nodeadm upgrade` sul nodo ibrido che stai aggiornando. Devi eseguire `nodeadm` con un utente con privilegi root/sudo. Il nome del nodo viene preservato durante l’aggiornamento per i provider di credenziali SSM di AWS e IAM Roles Anywhere di AWS. Durante il processo di aggiornamento non puoi modificare i provider di credenziali. Consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md) per i valori di configurazione per `nodeConfig.yaml`. Sostituisci `K8S_VERSION` con la versione di Kubernetes di destinazione verso cui esegui l’aggiornamento.

   ```
   nodeadm upgrade K8S_VERSION -c file://nodeConfig.yaml
   ```

1. Per consentire la pianificazione dei pod sul nodo dopo l’aggiornamento, digita quanto segue. Sostituisci `NODE_NAME` con il nome del nodo.

   ```
   kubectl uncordon NODE_NAME
   ```

1. Osserva lo stato dei nodi ibridi e attendi fino a quando i nodi si chiudono e si riavviano sulla nuova versione di Kubernetes con lo stato Pronto.

   ```
   kubectl get nodes -o wide -w
   ```

# Aggiornamenti di sicurezza delle patch per i nodi ibridi
<a name="hybrid-nodes-security"></a>

Questo argomento descrive la procedura per eseguire l’applicazione sul posto delle patch degli aggiornamenti di sicurezza per pacchetti e dipendenze specifici in esecuzione sui nodi ibridi. Come best practice, ti consigliamo di aggiornare regolarmente i nodi ibridi per ricevere CVE e patch di sicurezza.

Per i passaggi per aggiornare la versione di Kubernetes, consulta [Aggiornamento dei nodi ibridi per il tuo cluster](hybrid-nodes-upgrade.md).

Un esempio di software che potrebbe richiedere l’applicazione di patch di sicurezza è `containerd`.

## `Containerd`
<a name="_containerd"></a>

 `containerd` è il runtime standard del container Kubernetes e la dipendenza principale per EKS Hybrid Nodes. Viene utilizzato per gestire il ciclo di vita dei container, inclusa l’estrazione delle immagini e la gestione dell’esecuzione dei container. Su un nodo ibrido, puoi installare `containerd` tramite la [CLI nodeadm](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-nodeadm.html) o manualmente. A seconda del sistema operativo del nodo, `nodeadm` installerà `containerd` dal pacchetto distribuito dal sistema operativo o dal pacchetto Docker.

Una volta pubblicato un CVE in `containerd`, hai le seguenti opzioni per eseguire l’aggiornamento alla versione con patch di `containerd` sui tuoi nodi ibridi.

## Passaggio 1: controlla se la patch è stata pubblicata sui gestori di pacchetti
<a name="_step_1_check_if_the_patch_published_to_package_managers"></a>

Puoi verificare se la patch CVE `containerd` è stata pubblicata su ogni rispettivo gestore di pacchetti del sistema operativo facendo riferimento ai corrispondenti bollettini sulla sicurezza:
+  [Amazon Linux 2023](https://alas.aws.amazon.com/alas2023.html) 
+  [RHEL](https://access.redhat.com/security/security-updates/security-advisories) 
+  [Ubuntu 20.04](https://ubuntu.com/security/notices?order=newest&release=focal) 
+  [Ubuntu 22.04](https://ubuntu.com/security/notices?order=newest&release=jammy) 
+  [Ubuntu 24.04](https://ubuntu.com/security/notices?order=newest&release=noble) 

Se utilizzi il repository Docker come fonte di `containerd`, puoi controllare gli [annunci di sicurezza del Docker](https://docs.docker.com/security/security-announcements/) per identificare la disponibilità della versione con patch nel repository di Docker.

## Passaggio 2: scegli il metodo per installare la patch
<a name="_step_2_choose_the_method_to_install_the_patch"></a>

Esistono tre metodi per applicare le patch e installare gli aggiornamenti di sicurezza sui nodi. Il metodo che puoi utilizzare dipende dal fatto che la patch sia disponibile o meno nel sistema operativo nel gestore di pacchetti:

1. Per installare le patch con `nodeadm upgrade` pubblicate nei gestori di pacchetti, consulta [Step 2 a](#hybrid-nodes-security-nodeadm).

1. Per installare direttamente le patch con i gestori di pacchetti, consulta [Step 2 b](#hybrid-nodes-security-package).

1. Per installare patch personalizzate che non sono pubblicate nei gestori di pacchetti. Nota che ci sono considerazioni speciali per le patch personalizzate per `containerd`, [Step 2 c](#hybrid-nodes-security-manual).

## Passaggio 2 a: applicazione delle patch con `nodeadm upgrade`
<a name="hybrid-nodes-security-nodeadm"></a>

Dopo aver confermato che la patch CVE `containerd` è stata pubblicata nel sistema operativo o nei repository di Docker (Apt o RPM), puoi utilizzare il comando `nodeadm upgrade` per eseguire l’aggiornamento alla versione più recente di `containerd`. Poiché non si tratta di un aggiornamento della versione di Kubernetes, devi passare alla versione corrente di Kubernetes al comando `nodeadm` upgrade.

```
nodeadm upgrade K8S_VERSION --config-source file:///root/nodeConfig.yaml
```

## Passaggio 2 b: applicazione di patch con i gestori di pacchetti del sistema operativo
<a name="hybrid-nodes-security-package"></a>

In alternativa puoi eseguire l’aggiornamento anche tramite il rispettivo gestore di pacchetti e utilizzarlo per aggiornare il pacchetto `containerd` come segue.

 **Amazon Linux 2023** 

```
sudo yum update -y
sudo yum install -y containerd
```

 **RHEL** 

```
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo yum update -y
sudo yum install -y containerd
```

 **Ubuntu** 

```
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update -y
sudo apt install -y --only-upgrade containerd.io
```

## Passaggio 2 c: patch CVE `Containerd` non pubblicata nei gestori di pacchetti
<a name="hybrid-nodes-security-manual"></a>

Se la `containerd` versione con patch è disponibile solo con altri mezzi anziché nel gestore di pacchetti, ad esempio nelle versioni di GitHub, puoi installare `containerd` dal sito ufficiale di GitHub.

1. Se il computer è già entrato a far parte del cluster come nodo ibrido, devi eseguire il comando `nodeadm uninstall`.

1. Installa i binari ufficiali `containerd`. Puoi utilizzare le [fasi di installazione ufficiali](https://github.com/containerd/containerd/blob/main/docs/getting-started.md#option-1-from-the-official-binaries) su GitHub.

1. Esegui il comando `nodeadm install` con l’argomento `--containerd-source` impostato su `none`, che salterà l’installazione di `containerd` fino a `nodeadm`. Puoi utilizzare il valore di `none` nella sorgente `containerd` per qualsiasi sistema operativo in esecuzione sul nodo.

   ```
   nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --containerd-source none
   ```

# Rimuovi i nodi ibridi
<a name="hybrid-nodes-remove"></a>

In questa sezione viene descritto come eliminare i nodi ibridi dal cluster Amazon EKS. Devi eliminare i nodi ibridi utilizzando strumenti compatibili con Kubernetes di propria scelta, come [kubectl](https://kubernetes.io/docs/reference/kubectl/). I costi per i nodi ibridi si interrompono quando l’oggetto nodo viene rimosso dal cluster Amazon EKS. Per ulteriori informazioni sui prezzi dei nodi ibridi, consulta i [Prezzi di Amazon EKS](https://aws.amazon.com/eks/pricing/).

**Importante**  
La rimozione dei nodi interrompe i carichi di lavoro in esecuzione sul nodo. Prima di eliminare i nodi ibridi, ti consigliamo innanzitutto di svuotare il nodo per spostare i pod su un altro nodo attivo. Per ulteriori informazioni su come svuotare i nodi, consulta [Safely Drain a Node](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) nella documentazione Kubernetes.

Esegui i seguenti passaggi di kubectl dal computer o dall’istanza locale che usi per interagire con l’endpoint API Kubernetes del cluster Amazon EKS. Se stai usando un file `kubeconfig` specifico, usa il flag `--kubeconfig`.

## Passaggio 1: elenca i nodi
<a name="_step_1_list_your_nodes"></a>

```
kubectl get nodes
```

## Passaggio 2: svuota il nodo
<a name="_step_2_drain_your_node"></a>

Consulta [kubectl drain](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_drain/) nella documentazione di Kubernetes per maggiori informazioni sul comando `kubectl drain`.

```
kubectl drain --ignore-daemonsets <node-name>
```

## Passaggio 3: arrestare e disinstallare gli artefatti dei nodi ibridi
<a name="_step_3_stop_and_uninstall_hybrid_nodes_artifacts"></a>

Puoi utilizzare il CLI Amazon EKS Hybrid Nodes (`nodeadm`) per arrestare e rimuovere gli artefatti dei nodi ibridi dall’host. Devi eseguire `nodeadm` con un utente che abbia privilegi root/sudo. Per impostazione predefinita, `nodeadm uninstall` non proseguirà se sul nodo rimangono dei pod. Se utilizzi AWS Systems Manager (SSM) come provider di credenziali, il comando `nodeadm uninstall` annulla la registrazione dell’host come istanza gestita AWS SSM. Per ulteriori informazioni, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).

```
nodeadm uninstall
```

## Passaggio 4: eliminare il nodo dal cluster
<a name="_step_4_delete_your_node_from_the_cluster"></a>

Una volta interrotti e disinstallati gli artefatti dei nodi ibridi, rimuovi la risorsa del nodo dal cluster.

```
kubectl delete node <node-name>
```

## Passaggio 5: verifica la presenza di artefatti rimanenti
<a name="_step_5_check_for_remaining_artifacts"></a>

A seconda del CNI scelto, potrebbero rimanere degli artefatti sui nodi ibridi dopo aver eseguito i passaggi precedenti. Per ulteriori informazioni, consulta [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

# Configurazione di reti di applicazioni, componenti aggiuntivi e webhook per nodi ibridi
<a name="hybrid-nodes-configure"></a>

Dopo aver creato un cluster EKS per nodi ibridi, configura funzionalità aggiuntive per le reti di applicazioni (CNI, BGP, ingresso, bilanciamento del carico, policy di rete), i componenti aggiuntivi, i webhook e le impostazioni proxy. Per l’elenco completo dei componenti aggiuntivi EKS e della community compatibili con i nodi ibridi, consulta [Configurare componenti aggiuntivi per nodi ibridi](hybrid-nodes-add-ons.md).

 **Approfondimenti del cluster EKS** EKS include il rilevamento approfondito delle configurazioni errate nella configurazione dei nodi ibridi che potrebbero compromettere la funzionalità del cluster o dei carichi di lavoro. Per ulteriori informazioni sugli approfondimenti del cluster, consulta [Prepararsi agli aggiornamenti delle versioni di Kubernetes e risolvere i problemi di configurazione errata con gli approfondimenti sui cluster](cluster-insights.md).

Di seguito sono elencate le funzionalità e i componenti aggiuntivi comuni puoi utilizzare con i nodi ibridi:
+  **Container Networking Interface (CNI)**: AWS supporta [Cilium](https://docs.cilium.io/en/stable/index.html) come la CNI per i nodi ibridi. Per ulteriori informazioni, consulta [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md). Tieni presente che la CNI di AWS VPC non può essere utilizzata con nodi ibridi.
+  **CoredNS e `kube-proxy`**: CoreDNS e `kube-proxy` vengono installati automaticamente quando i nodi ibridi si uniscono al cluster EKS. Questi componenti aggiuntivi possono essere gestiti come componenti aggiuntivi EKS dopo la creazione del cluster.
+  **Ingresso e bilanciamento del carico**: puoi utilizzare AWS Load Balancer Controller e Application Load Balancer (ALB) o Network Load Balancer (NLB) con il tipo di destinazione `ip` per i carichi di lavoro in esecuzione su nodi ibridi. AWS supporta le funzionalità integrate di bilanciamento del carico ingresso, gateway e del servizio Kubernetes di Cilium per i carichi di lavoro in esecuzione su nodi ibridi. Per ulteriori informazioni, consultare [Configurazione dell’ingresso Kubernetes per nodi ibridi](hybrid-nodes-ingress.md) e [Configurazione dei servizi di tipo LoadBalancer per nodi ibridi](hybrid-nodes-load-balancing.md).
+  **Metriche**: puoi utilizzare gli scraper senza agenti del servizio gestito da Amazon per Prometheus (AMP), AWS Distro per Open Telemetry (ADOT) e l’agente di Amazon CloudWatch Observability con nodi ibridi. Per utilizzare gli scraper senza agenti AMP per le metriche dei pod sui nodi ibridi, i pod devono essere accessibili dal VPC utilizzato per il cluster EKS.
+  **Log**: puoi abilitare la registrazione del piano di controllo (control-plane) EKS per i cluster abilitati ai nodi ibridi. Puoi utilizzare i componenti aggiuntivi ADOT e l’agente di Amazon CloudWatch Observability di EKS per la registrazione ibrida di nodi e pod.
+  **Pod Identity e IRSA**: puoi utilizzare Pod Identity EKS e ruoli IAM per gli account del servizio (IRSA) con applicazioni in esecuzione su nodi ibridi per consentire l’accesso granulare ai pod in esecuzione su nodi ibridi con altri servizi AWS.
+  **Webhook**: se utilizzi webhook, consulta [Configurazione di webhook per nodi ibridi](hybrid-nodes-webhooks.md) per le considerazioni e i passaggi per eseguire i webhook sui nodi cloud, se non riesci a rendere instradabili le reti di pod on-premises.
+  **Proxy**: se utilizzi un server proxy nell’ambiente on-premises per il traffico in uscita dal data center o dall’ambiente edge, puoi configurare i nodi e il cluster ibridi per usare il server proxy. Per ulteriori informazioni, consulta [Configurare il proxy per i nodi ibridi](hybrid-nodes-proxy.md).

**Topics**
+ [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md)
+ [Configurare componenti aggiuntivi per nodi ibridi](hybrid-nodes-add-ons.md)
+ [Configurazione di webhook per nodi ibridi](hybrid-nodes-webhooks.md)
+ [Configurare il proxy per i nodi ibridi](hybrid-nodes-proxy.md)
+ [Configurazione di Cilium BGP per nodi ibridi](hybrid-nodes-cilium-bgp.md)
+ [Configurazione dell’ingresso Kubernetes per nodi ibridi](hybrid-nodes-ingress.md)
+ [Configurazione dei servizi di tipo LoadBalancer per nodi ibridi](hybrid-nodes-load-balancing.md)
+ [Configurazione delle policy di rete Kubernetes per i nodi ibridi](hybrid-nodes-network-policies.md)

# Configurazione della CNI per nodi ibridi
<a name="hybrid-nodes-cni"></a>

Cilium è la Container Networking Interface (CNI) AWS supportata per Amazon EKS Hybrid Nodes. Devi installare una CNI affinché i nodi ibridi siano pronti a servire i carichi di lavoro. I nodi ibridi vengono visualizzati con lo stato `Not Ready` fino all’esecuzione di una CNI. Puoi gestire la CNI con strumenti a tua scelta come Helm. Le istruzioni in questa pagina riguardano la gestione del ciclo di vita di Cilium (installazione, aggiornamento, eliminazione). Consulta [Panoramica dell’ingresso di Cilium e del gateway di Cilium](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium), [Tipo servizio LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) e [Configurazione delle policy di rete Kubernetes per i nodi ibridi](hybrid-nodes-network-policies.md) per scoprire come configurare Cilium per l’ingresso, il bilanciamento del carico e le policy di rete.

Cilium non è supportato da AWS quando viene eseguito su nodi in Cloud. AWS La CNI di Amazon VPC non è compatibile con i nodi ibridi e la CNI del VPC è configurata con la non-affinità per l’etichetta `eks.amazonaws.com/compute-type: hybrid`.

La documentazione di Calico precedentemente contenuta in questa pagina è stata spostata in [EKS Hybrid Examples Repository](https://github.com/aws-samples/eks-hybrid-examples).

## Compatibilità delle versioni
<a name="hybrid-nodes-cilium-version-compatibility"></a>

Le versioni `v1.17.x` di Cilium `v1.18.x` sono supportate per EKS Hybrid Nodes per ogni versione di Kubernetes supportata in Amazon EKS.

**Nota**  
 Requisiti del kernel **Cilium v1.18.3: a causa dei requisiti del kernel** (kernel Linux >= 5.10), Cilium v1.18.3 non è supportato su:
+ Ubuntu 20.04
+ Red Hat Enterprise Linux (RHEL) 8

[Per i requisiti di sistema, consulta i](https://docs.cilium.io/en/stable/operations/system_requirements/) requisiti di sistema di Cilium.

Consulta il [supporto delle versioni Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) per individuare quali sono le versioni supportate da Amazon EKS. EKS Hybrid Nodes ha lo stesso supporto per le versioni di Kubernetes dei cluster Amazon EKS con nodi cloud.

## Funzionalità supportate
<a name="hybrid-nodes-cilium-support"></a>

 AWS [mantiene versioni di Cilium for EKS Hybrid Nodes basate sul progetto open source Cilium.](https://github.com/cilium/cilium) Per ricevere supporto da AWS Cilium, è necessario utilizzare le build Cilium AWS mantenute e le versioni di Cilium supportate.

 AWS fornisce supporto tecnico per le configurazioni predefinite delle seguenti funzionalità di Cilium da utilizzare con EKS Hybrid Nodes. Se si prevede di utilizzare funzionalità che non rientrano nell'ambito del AWS supporto, si consiglia di ottenere un supporto commerciale alternativo per Cilium o di disporre dell'esperienza interna necessaria per risolvere i problemi e contribuire alle correzioni del progetto Cilium.


| Funzionalità di Cilium | Supportato da AWS  | 
| --- | --- | 
|  Conformità della rete Kubernetes  |  Sì  | 
|  Connettività del cluster principale  |  Sì  | 
|  Famiglia di IP  |  IPv4  | 
|  Gestione del ciclo di vita  |  Helm  | 
|  Modalità di rete  |  Incapsulamento VXLAN  | 
|  Gestione indirizzi IP (IPAM)  |  Ambito del cluster IPAM (Gestione degli indirizzi IP) di Cilium  | 
|  Policy di rete  |  Policy di rete Kubernetes  | 
|  Border Gateway Protocol (BGP)  |  Piano di controllo (control-plane) BGP di Cilium  | 
|  Ingresso Kubernetes  |  Ingresso di Cilium, gateway di Cilium  | 
|  Allocazione LoadBalancer IP del servizio  |  IPAM del bilanciatore del carico di Cilium  | 
|  Pubblicità LoadBalancer dell'indirizzo IP del servizio  |  Piano di controllo (control-plane) BGP di Cilium  | 
|  sostituzione kube-proxy  |  Sì  | 

## Considerazioni su Cilium
<a name="hybrid-nodes-cilium-considerations"></a>
+  **Repository Helm**[: AWS ospita il grafico Cilium Helm nell'Amazon Elastic Container Registry Public (Amazon ECR Public) presso Amazon EKS Cilium/Cilium.](https://gallery.ecr.aws/eks/cilium/cilium) Le versioni disponibili includono:
  + Cilium v1.17.9: `oci://public.ecr.aws/eks/cilium/cilium:1.17.9-0` 
  + Cilium v1.18.3: `oci://public.ecr.aws/eks/cilium/cilium:1.18.3-0` 

    I comandi in questo argomento utilizzano questo repository. Tieni presente che alcuni comandi `helm repo` non sono validi per i repository Helm in Amazon ECR Public, quindi non puoi fare riferimento a questo repository da un nome di repository Helm locale. Invece, utilizza l’URI completo nella maggior parte dei comandi.
+ Per impostazione predefinita, Cilium è configurato per l’esecuzione in modalità sovrapposizione/tunnel con VXLAN come [metodo di incapsulamento](https://docs.cilium.io/en/stable/network/concepts/routing/#encapsulation). Questa modalità ha il minor numero di requisiti sulla rete fisica sottostante.
+ Per impostazione predefinita, Cilium [maschera](https://docs.cilium.io/en/stable/network/concepts/masquerading/) l’indirizzo IP di origine di tutto il traffico dei pod in uscita dal cluster all’indirizzo IP del nodo. Se disabiliti il mascheramento, il tuo pod CIDRs deve essere instradabile sulla tua rete locale.
+ Se esegui webhook su nodi ibridi, il pod CIDRs deve essere instradabile sulla rete locale. Se i pod non CIDRs sono instradabili sulla rete locale, si consiglia di eseguire webhook sui nodi cloud dello stesso cluster. Per ulteriori informazioni, consulta [Configurazione di webhook per nodi ibridi](hybrid-nodes-webhooks.md) e [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md).
+  AWS consiglia di utilizzare la funzionalità BGP integrata di Cilium per rendere il pod instradabile sulla rete locale. CIDRs Per ulteriori informazioni su come configurare il BGP di Cilium con nodi ibridi, consulta [Configurazione di Cilium BGP per nodi ibridi](hybrid-nodes-cilium-bgp.md).
+ La gestione degli indirizzi IP (IPAM) predefinita in Cilium si chiama [Cluster Scope](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/), in cui l'operatore Cilium alloca gli indirizzi IP per ogni nodo in base al pod configurato dall'utente. CIDRs

## Installazione di Cilium su nodi ibridi
<a name="hybrid-nodes-cilium-install"></a>

### Procedura
<a name="_procedure"></a>

1. Crea un file YAML denominato `cilium-values.yaml`. L’esempio seguente configura Cilium per l’esecuzione solo su nodi ibridi impostando l’affinità per l’etichetta `eks.amazonaws.com/compute-type: hybrid` per l’agente e l’operatore di Cilium.
   + *Configura `clusterPoolIpv4PodCIDRList` con lo stesso pod che CIDRs hai configurato per le reti di pod remoti del tuo cluster EKS.* Ad esempio, `10.100.0.0/24`. L’operatore di Cilium alloca le porzioni di indirizzi IP dall’interno dello spazio IP `clusterPoolIpv4PodCIDRList` configurato. Il CIDR del pod non deve sovrapporsi al nodo CIDR on-premises, al CIDR del VPC o del servizio Kubernetes.
   + Configura `clusterPoolIpv4MaskSize` in base ai pod richiesti per nodo. Ad esempio, `25` per una dimensione dei segmenti di /25 di 128 pod per nodo.
   + Non modificare `clusterPoolIpv4PodCIDRList` o `clusterPoolIpv4MaskSize` dopo aver implementato Cilium sul cluster, consulta [Expanding the cluster pool](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool) per ulteriori informazioni.
   + Se esegui Cilium in modalità sostitutiva kube-proxy, imposta `kubeProxyReplacement: "true"` nei valori Helm e assicurati di non avere un’implementazione kube-proxy esistente in esecuzione sugli stessi nodi di Cilium.
   + L’esempio seguente disabilita il proxy Envoy Layer 7 (L7) utilizzato da Cilium per le policy di rete e l’ingresso L7. Per ulteriori informazioni, consultare [Configurazione delle policy di rete Kubernetes per i nodi ibridi](hybrid-nodes-network-policies.md) e [Panoramica dell’ingresso di Cilium e del gateway di Cilium](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium).
   + L’esempio seguente configura `loadBalancer.serviceTopology`: `true` affinché la distribuzione del traffico del servizio funzioni correttamente se configurata per i tuoi servizi. Per ulteriori informazioni, consulta [Configurazione della distribuzione del traffico del servizio](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).
   + Per un elenco completo dei valori Helm per Cilium, consulta [Helm reference](https://docs.cilium.io/en/stable/helm-reference/) nella documentazione di Cilium.

     ```
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
     ipam:
       mode: cluster-pool
       operator:
         clusterPoolIPv4MaskSize: 25
         clusterPoolIPv4PodCIDRList:
         - POD_CIDR
     loadBalancer:
       serviceTopology: true
     operator:
       affinity:
         nodeAffinity:
           requiredDuringSchedulingIgnoredDuringExecution:
             nodeSelectorTerms:
             - matchExpressions:
               - key: eks.amazonaws.com/compute-type
                 operator: In
                 values:
                   - hybrid
       unmanagedPodWatcher:
         restart: false
     loadBalancer:
       serviceTopology: true
     envoy:
       enabled: false
     kubeProxyReplacement: "false"
     ```

1. Installa Cilium nel cluster.
   + Sostituisci `CILIUM_VERSION` con una versione Cilium (ad esempio `1.17.9-0` o`1.18.3-0`). Consigliamo di utilizzare la versione della patch più recente per la versione secondaria di Cilium.
   + Assicurati che i tuoi nodi soddisfino i requisiti del kernel per la versione che scegli. Cilium v1.18.3 richiede un kernel Linux >= 5.10.
   + Se stai utilizzando un file kubeconfig specifico, usa il flag `--kubeconfig` con il comando di installazione Helm.

     ```
     helm install cilium oci://public.ecr.aws/eks/cilium/cilium \
         --version CILIUM_VERSION \
         --namespace kube-system \
         --values cilium-values.yaml
     ```

1. Conferma che l’installazione di Cilium sia stata eseguita correttamente con i comandi seguenti. Dovresti visualizzare l’implementazione `cilium-operator` e `cilium-agent` in esecuzione su ciascuno dei tuoi nodi ibridi. Inoltre, i nodi ibridi dovrebbero avere lo stato `Ready`. Per informazioni su come configurare Cilium BGP per pubblicizzare il pod sulla rete locale, procedi a. CIDRs [Configurazione di Cilium BGP per nodi ibridi](hybrid-nodes-cilium-bgp.md)

   ```
   kubectl get pods -n kube-system
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   cilium-jjjn8                      1/1     Running   0          11m
   cilium-operator-d4f4d7fcb-sc5xn   1/1     Running   0          11m
   ```

   ```
   kubectl get nodes
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION
   mi-04a2cf999b7112233   Ready    <none>   19m   v1.31.0-eks-a737599
   ```

## Aggiornamento di Cilium su nodi ibridi
<a name="hybrid-nodes-cilium-upgrade"></a>

Prima di aggiornare l’implementazione di Cilium, consulta attentamente la [documentazione sull’aggiornamento di Cilium](https://docs.cilium.io/en/v1.17/operations/upgrade/) e le note sull’aggiornamento per comprendere le modifiche nella versione di Cilium di destinazione.

1. Assicurati di aver installato la CLI `helm` nel tuo ambiente a riga di comando. Per istruzioni sull’installazione, consulta la [documentazione di Helm](https://helm.sh/docs/intro/quickstart/).

1. Esegui il controllo preflight dell’aggiornamento di Cilium. Sostituisci `CILIUM_VERSION` con la versione di Cilium di destinazione. Ti consigliamo di eseguire la versione della patch più recente per la versione secondaria di Cilium. Puoi trovare la versione della patch più recente per una determinata versione minore di Cilium nella [sezione Stable Releases](https://github.com/cilium/cilium#stable-releases) della documentazione di Cilium.

   ```
   helm install cilium-preflight oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace=kube-system \
     --set preflight.enabled=true \
     --set agent=false \
     --set operator.enabled=false
   ```

1. Dopo aver applicato `cilium-preflight.yaml`, assicurati che il numero di pod `READY` sia lo stesso numero di pod di Cilium in esecuzione.

   ```
   kubectl get ds -n kube-system | sed -n '1p;/cilium/p'
   ```

   ```
   NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
   cilium                    2         2         2       2            2           <none>          1h20m
   cilium-pre-flight-check   2         2         2       2            2           <none>          7m15s
   ```

1. Una volta che il numero di pod READY è uguale, assicurati che anche l’implementazione preflight di Cilium sia contrassegnata come READY 1/1. Se viene visualizzato READY 0/1, consulta la sezione di [CNP Validation](https://docs.cilium.io/en/v1.17/operations/upgrade/#cnp-validation) e risolvi i problemi relativi all’implementazione prima di continuare con l’aggiornamento.

   ```
   kubectl get deployment -n kube-system cilium-pre-flight-check -w
   ```

   ```
   NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
   cilium-pre-flight-check   1/1     1            0           12s
   ```

1. Elimina il preflight

   ```
   helm uninstall cilium-preflight --namespace kube-system
   ```

1. Prima di eseguire il comando `helm upgrade`, conserva i valori dell’implementazione in `existing-cilium-values.yaml` o utilizza le opzioni `--set` della riga di comando per le impostazioni quando esegui il comando di aggiornamento. L'operazione di aggiornamento sovrascrive Cilium ConfigMap, quindi è fondamentale che i valori di configurazione vengano trasmessi durante l'aggiornamento.

   ```
   helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml
   ```

1. Durante le normali operazioni del cluster, tutti i componenti Cilium devono eseguire la stessa versione. I passaggi seguenti descrivono come aggiornare tutti i componenti da una versione stabile a una successiva. Quando esegui l’aggiornamento da una versione secondaria a un’altra, consigliamo di aggiornare prima alla versione della patch più recente per la versione secondaria esistente di Cilium. Per ridurre al minimo le interruzioni, imposta l’opzione `upgradeCompatibility` sulla versione iniziale di Cilium installata in questo cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace kube-system \
     --set upgradeCompatibility=1.X \
     -f existing-cilium-values.yaml
   ```

1. (Facoltativo) Se devi eseguire il rollback dell’aggiornamento a causa di problemi, esegui i comandi seguenti.

   ```
   helm history cilium --namespace kube-system
   helm rollback cilium [REVISION] --namespace kube-system
   ```

## Eliminazione di Cilium dai nodi ibridi
<a name="hybrid-nodes-cilium-delete"></a>

1. Esegui il comando seguente per disinstallare tutti i componenti Cilium dal tuo cluster. Nota, la disinstallazione della CNI potrebbe influire sulla salute di nodi e pod e non dovrebbe essere eseguita sui cluster di produzione.

   ```
   helm uninstall cilium --namespace kube-system
   ```

   [Le interfacce e le rotte configurate da Cilium non vengono rimosse per impostazione predefinita quando il CNI viene rimosso dal cluster, consulta il GitHub problema per ulteriori informazioni.](https://github.com/cilium/cilium/issues/34289)

1. Per ripulire i file e le risorse di configurazione su disco, se si utilizzano le directory di configurazione standard, è possibile rimuovere i file come mostrato dallo [`cni-uninstall.sh`script](https://github.com/cilium/cilium/blob/main/plugins/cilium-cni/cni-uninstall.sh) nel repository Cilium su. GitHub

1. Per rimuovere Cilium Custom Resource Definitions (CRDs) dal tuo cluster, puoi eseguire i seguenti comandi.

   ```
   kubectl get crds -oname | grep "cilium" | xargs kubectl delete
   ```

# Configurare componenti aggiuntivi per nodi ibridi
<a name="hybrid-nodes-add-ons"></a>

Questa pagina descrive le considerazioni sull'esecuzione di componenti aggiuntivi e AWS componenti aggiuntivi della community su Amazon EKS Hybrid Nodes. Per ulteriori informazioni sui componenti aggiuntivi di Amazon EKS e sui processi per la creazione, l’aggiornamento e la rimozione di componenti aggiuntivi dal cluster, consulta [Componenti aggiuntivi Amazon EKS](eks-add-ons.md). Salvo diversa indicazione in questa pagina, i processi per la creazione, l'aggiornamento e la rimozione dei componenti aggiuntivi Amazon EKS sono gli stessi per i cluster Amazon EKS con nodi ibridi e per i cluster Amazon EKS con nodi in esecuzione nel cloud. AWS Solo i componenti aggiuntivi inclusi in questa pagina sono stati convalidati per la compatibilità con Amazon EKS Hybrid Nodes.

I seguenti AWS componenti aggiuntivi sono compatibili con Amazon EKS Hybrid Nodes.


|  AWS componente aggiuntivo | Versioni dei componenti aggiuntivi compatibili | 
| --- | --- | 
|  kube-proxy  |  v1.25.14-eksbuild.2 e versioni successive  | 
|  CoreDNS  |  v1.9.3-eksbuild.7 e versioni successive  | 
|   AWS Distro per OpenTelemetry (ADOT)  |  v0.102.1-eksbuild.2 e versioni successive  | 
|  CloudWatch Agente di osservabilità  |  v2.2.1-eksbuild.1 e versioni successive  | 
|  EKS Pod Identity Agent  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/hybrid-nodes-add-ons.html)  | 
|  Agente di monitoraggio del nodo  |  v1.2.0-eksbuild.1 e versioni successive  | 
|  Controller di snapshot CSI  |  v8.1.0-eksbuild.1 e versioni successive  | 
|   AWS Connettore CA privato per Kubernetes  |  v1.6.0-eksbuild.1 e versioni successive  | 
|  Driver Amazon FSx CSI  |  v1.7.0-eksbuild.1 e versioni successive  | 
|   AWS Fornitore di driver CSI Secrets Store  |  v2.1.1-eksbuild.1 e versioni successive  | 

I seguenti componenti aggiuntivi della community sono compatibili con Amazon EKS Hybrid Nodes. Per ulteriori informazioni sui componenti aggiuntivi della community, consulta[Componenti aggiuntivi della community](community-addons.md).


| Componente aggiuntivo | Versioni dei componenti aggiuntivi compatibili | 
| --- | --- | 
|  Kubernetes Metrics Server  |  v0.7.2-eksbuild.1 e versioni successive  | 
|  cert-manager  |  v1.17.2-eksbuild.1 e versioni successive  | 
|  Prometheus Node Exporter  |  v1.9.1-eksbuild.2 e versioni successive  | 
|  kube-state-metrics  |  v2.15.0-eksbuild.4 e versioni successive  | 
|  DNS esterno  |  v0.19.0-eksbuild.1 e versioni successive  | 

Oltre ai componenti aggiuntivi Amazon EKS indicati nelle tabelle precedenti, il [Collettore Amazon Managed Service for Prometheus](prometheus.md) e il [AWS Load Balancer Controller](aws-load-balancer-controller.md) per l’[ingresso delle applicazioni](alb-ingress.md) (HTTP) e il [bilanciamento del carico](network-load-balancing.md) (TCP/UDP) sono compatibili con i nodi ibridi.

Esistono AWS componenti aggiuntivi e componenti aggiuntivi della community che non sono compatibili con Amazon EKS Hybrid Nodes. Le versioni più recenti di questi componenti aggiuntivi prevedono una regola di antiaffinità per l’etichetta predefinita `eks.amazonaws.com/compute-type: hybrid` applicata ai nodi ibridi. Ciò impedisce loro di funzionare su nodi ibridi quando vengono distribuiti nei cluster. Se disponi di cluster con nodi ibridi e nodi in esecuzione nel AWS cloud, puoi distribuire questi componenti aggiuntivi nel cluster su nodi in esecuzione nel cloud. AWS Amazon VPC CNI non è compatibile con i nodi ibridi e Cilium e Calico sono supportati come Container Networking Interfaces (CNIs) per i nodi ibridi Amazon EKS. Per ulteriori informazioni, consulta [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

## AWS componenti aggiuntivi
<a name="hybrid-nodes-add-ons-aws-add-ons"></a>

Le sezioni seguenti descrivono le differenze tra l'esecuzione di AWS componenti aggiuntivi compatibili su nodi ibridi rispetto ad altri tipi di elaborazione Amazon EKS.

## kube-proxy e CoreDNS
<a name="hybrid-nodes-add-ons-core"></a>

EKS installa kube-proxy e CoredNS come componenti aggiuntivi autogestiti per impostazione predefinita quando crei un cluster EKS con l'API e, anche dalla CLI. AWS AWS SDKs AWS É possibile sovrascrivere questi componenti aggiuntivi con i componenti aggiuntivi Amazon EKS dopo la creazione del cluster. Fai riferimento alla documentazione EKS per i dettagli su [Gestisci `kube-proxy` nei cluster Amazon EKS](managing-kube-proxy.md) e [Gestisci CoredNS per DNS nei cluster Amazon EKS](managing-coredns.md). Se stai eseguendo un cluster in modalità mista con nodi ibridi e nodi nel AWS cloud, AWS consiglia di avere almeno una replica CoreDNS sui nodi ibridi e almeno una replica CoredNS sui nodi nel cloud. AWS Per i passaggi di configurazione, consulta la sezione [Configurazione delle repliche CoreDNS](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-coredns).

## CloudWatch Agente di osservabilità
<a name="hybrid-nodes-add-ons-cw"></a>

[L'operatore dell'agente CloudWatch Observability utilizza i webhook.](https://kubernetes.io/docs/reference/access-authn-authz/webhook/) Se esegui l’operatore su nodi ibridi, il tuo pod CIDR on-premises deve essere instradabile sulla rete on-premises e devi configurare il cluster EKS con la tua rete di pod remota. Per ulteriori informazioni, consulta [Configure webhooks for hybrid nodes](hybrid-nodes-webhooks.md).

Le metriche a livello di nodo non sono disponibili per i nodi ibridi perché [CloudWatch Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) dipende dalla disponibilità di [Instance Metadata Service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) (IMDS) per le metriche a livello di nodo. Per i nodi ibridi sono disponibili metriche a livello di cluster, carico di lavoro, pod e container.

Dopo aver installato il componente aggiuntivo seguendo i passaggi descritti in [Installa l' CloudWatch agente con Amazon CloudWatch Observability, il](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html) manifesto del componente aggiuntivo deve essere aggiornato prima che l'agente possa essere eseguito correttamente sui nodi ibridi. Modifica la risorsa `amazoncloudwatchagents` sul cluster per aggiungere la variabile di ambiente `RUN_WITH_IRSA` come mostrato di seguito.

```
kubectl edit amazoncloudwatchagents -n amazon-cloudwatch cloudwatch-agent
```

```
apiVersion: v1
items:
- apiVersion: cloudwatch.aws.amazon.com/v1alpha1
  kind: AmazonCloudWatchAgent
  metadata:
    ...
    name: cloudwatch-agent
    namespace: amazon-cloudwatch
    ...
  spec:
    ...
    env:
    - name: RUN_WITH_IRSA # <-- Add this
      value: "True" # <-- Add this
    - name: K8S_NODE_NAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
          ...
```

## Raccoglitore gestito di Amazon Managed Prometheus per nodi ibridi
<a name="hybrid-nodes-add-ons-amp"></a>

Un servizio gestito da Amazon per Prometheus (AMP) è costituito da uno scraper che rileva e raccoglie i parametri da un cluster Amazon EKS. AMP gestisce lo scraper per te, eliminando la necessità di gestire personalmente istanze, agenti o scraper.

Puoi utilizzare i raccoglitori gestiti AMP senza alcuna configurazione aggiuntiva specifica per i nodi ibridi. Tuttavia, gli endpoint metrici per le applicazioni sui nodi ibridi devono essere raggiungibili dal VPC, compresi i percorsi dal VPC alla rete pod remota CIDRs e le porte aperte nel firewall locale. Inoltre, il cluster deve disporre di un [accesso privato agli endpoint del cluster](cluster-endpoint.md).

Segui i passaggi descritti in [Utilizzo di un raccoglitore AWS gestito nella Guida](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html) per l'utente di Amazon Managed Service for Prometheus.

## AWS Distro per (ADOT) OpenTelemetry
<a name="hybrid-nodes-add-ons-adot"></a>

Puoi utilizzare il componente aggiuntivo AWS Distro for OpenTelemetry (ADOT) per raccogliere metriche, log e dati di tracciamento dalle tue applicazioni in esecuzione su nodi ibridi. ADOT utilizza i [webhook](https://kubernetes.io/docs/reference/access-authn-authz/webhook/) di ammissione per mutare e convalidare le richieste delle risorse personalizzate del raccoglitore. Se esegui l’operatore ADOT su nodi ibridi, il tuo pod CIDR on-premises deve essere instradabile sulla rete on-premises e devi configurare il cluster EKS con la tua rete di pod remota. Per ulteriori informazioni, consulta [Configure webhooks for hybrid nodes](hybrid-nodes-webhooks.md).

*Segui la procedura descritta in [Guida introduttiva a AWS Distro per OpenTelemetry utilizzare i componenti aggiuntivi EKS nella Distro per la](https://aws-otel.github.io/docs/getting-started/adot-eks-add-on) documentazione. AWS OpenTelemetry*

## AWS Controller Load Balancer
<a name="hybrid-nodes-add-ons-lbc"></a>

È possibile utilizzare [AWS Load Balancer Controller](aws-load-balancer-controller.md) e Application Load Balancer (ALB) o Network Load Balancer (NLB) con il `ip` tipo di destinazione per i carichi di lavoro sui nodi ibridi. Le destinazioni IP utilizzate con ALB o NLB devono essere instradabili da. AWS[Il controller AWS Load Balancer utilizza anche i webhook.](https://kubernetes.io/docs/reference/access-authn-authz/webhook/) Se esegui l'operatore AWS Load Balancer Controller su nodi ibridi, il tuo pod CIDR locale deve essere instradabile sulla tua rete locale e devi configurare il tuo cluster EKS con la tua rete di pod remoti. Per ulteriori informazioni, consulta [Configure webhooks for hybrid nodes](hybrid-nodes-webhooks.md).

Per installare il AWS Load Balancer Controller, segui i passaggi indicati in [AWS Application Load Balancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-alb) o. [Network Load Balancer di AWS](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-nlb)

Per l’accesso con ALB, è necessario specificare le annotazioni riportate di seguito. Per ulteriori informazioni, consulta [Instradare il traffico di applicazioni e HTTP con Application Load Balancer](alb-ingress.md).

```
alb.ingress.kubernetes.io/target-type: ip
```

Per il bilanciamento del carico con NLB, è necessario specificare le annotazioni riportate di seguito. Per ulteriori informazioni, consulta [Esecuzione del routing del traffico TCP e UDP con Network Load Balancer](network-load-balancing.md).

```
service.beta.kubernetes.io/aws-load-balancer-type: "external"
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
```

## EKS Pod Identity Agent
<a name="hybrid-nodes-add-ons-pod-id"></a>

**Nota**  
Per implementare correttamente il componente aggiuntivo EKS Pod Identity Agent su nodi ibridi che eseguono Bottlerocket, assicurati che la versione di Bottlerocket sia almeno la v1.39.0. Il Pod Identity Agent non è supportato nelle versioni precedenti di Bottlerocket in ambienti con nodi ibridi.

L'originale Amazon EKS Pod Identity Agent DaemonSet si basa sulla disponibilità di EC2 IMDS sul nodo per ottenere le credenziali richieste. AWS Poiché IMDS non è disponibile sui nodi ibridi, a partire dalla versione 1.3.3-eksbuild.1, il componente aggiuntivo Pod Identity Agent implementa facoltativamente un componente che monta le credenziali richieste. DaemonSet I nodi ibridi che eseguono Bottlerocket richiedono un metodo diverso per montare le credenziali e, a partire dalla versione 1.3.7-eksbuild.2, il componente aggiuntivo Pod Identity Agent ne implementa facoltativamente uno che si rivolge specificamente ai nodi ibridi Bottlerocket. DaemonSet Le sezioni DaemonSets seguenti descrivono il processo per abilitare l'opzione.

### Ubuntu/RHEL/AL2023
<a name="_ubunturhelal2023"></a>

1. Per utilizzare l'agente Pod Identity sui nodi ibridi Ubuntu/RHEL/Al 2023, `enableCredentialsFile: true` impostalo nella sezione ibrida di `nodeadm` config come mostrato di seguito:

   ```
   apiVersion: node.eks.aws/v1alpha1
   kind: NodeConfig
   spec:
       hybrid:
           enableCredentialsFile: true # <-- Add this
   ```

   Questo configurerà `nodeadm` per creare un file di credenziali da configurare sul nodo sotto `/eks-hybrid/.aws/credentials`, che verrà utilizzato dai pod `eks-pod-identity-agent`. Questo file di credenziali conterrà AWS credenziali temporanee che verranno aggiornate periodicamente.

1. Dopo aver aggiornato la configurazione `nodeadm` su *ogni* nodo, esegui il seguente comando `nodeadm init` con il tuo `nodeConfig.yaml` per unire i nodi ibridi al cluster Amazon EKS. Se i tuoi nodi si sono uniti al cluster in precedenza, esegui comunque di nuovo il comando `nodeadm init`.

   ```
   nodeadm init -c file://nodeConfig.yaml
   ```

1. Installa `eks-pod-identity-agent` con il supporto per i nodi ibridi abilitato, utilizzando la AWS CLI o. Console di gestione AWS

   1.  AWS CLI: dalla macchina che stai utilizzando per amministrare il cluster, esegui il seguente comando per l'installazione `eks-pod-identity-agent` con il supporto per i nodi ibridi abilitato. Sostituisci `my-cluster` con il nome del cluster.

      ```
      aws eks create-addon \
          --cluster-name my-cluster \
          --addon-name eks-pod-identity-agent \
          --configuration-values '{"daemonsets":{"hybrid":{"create": true}}}'
      ```

   1.  Console di gestione AWS: Se stai installando il componente aggiuntivo Pod Identity Agent tramite la AWS console, aggiungi quanto segue alla configurazione opzionale per distribuire i DaemonSet nodi ibridi destinati.

      ```
      {"daemonsets":{"hybrid":{"create": true}}}
      ```

### Bottlerocket
<a name="_bottlerocket"></a>

1. Per utilizzare l’agente Pod Identity sui nodi ibridi Bottlerocket, aggiungi il flag `--enable-credentials-file=true` al comando utilizzato per i dati utente del contenitore bootstrap Bottlerocket, come descritto in [Connessione dei nodi ibridi con Bottlerocket](hybrid-nodes-bottlerocket.md).

   1. Se stai usando il provider di credenziali SSM, il tuo comando dovrebbe avere il seguente aspetto:

      ```
      eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region> --enable-credentials-file=true
      ```

   1. Se stai usando il provider di credenziali IAM Roles Anywhere, il tuo comando dovrebbe avere il seguente aspetto:

      ```
      eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key> --enable-credentials-file=true
      ```

      Questo configurerà lo script di bootstrap per creare un file di credenziali sul nodo sotto `/var/eks-hybrid/.aws/credentials`, che verrà utilizzato dai pod `eks-pod-identity-agent`. Questo file di credenziali conterrà AWS credenziali temporanee che verranno aggiornate periodicamente.

1. Installa `eks-pod-identity-agent` con il supporto per i nodi ibridi Bottlerocket abilitato, utilizzando la CLI AWS o. Console di gestione AWS

   1.  AWS CLI: dalla macchina che stai utilizzando per amministrare il cluster, esegui il seguente comando per l'installazione `eks-pod-identity-agent` con il supporto per i nodi ibridi Bottlerocket abilitato. Sostituisci `my-cluster` con il nome del cluster.

      ```
      aws eks create-addon \
          --cluster-name my-cluster \
          --addon-name eks-pod-identity-agent \
          --configuration-values '{"daemonsets":{"hybrid-bottlerocket":{"create": true}}}'
      ```

   1.  Console di gestione AWS: Se stai installando il componente aggiuntivo Pod Identity Agent tramite la AWS console, aggiungi quanto segue alla configurazione opzionale per distribuire i nodi ibridi Bottlerocket destinati. DaemonSet 

      ```
      {"daemonsets":{"hybrid-bottlerocket":{"create": true}}}
      ```

## Controller di snapshot CSI
<a name="hybrid-nodes-add-ons-csi-snapshotter"></a>

A partire dalla versione`v8.1.0-eksbuild.2`, il [componente aggiuntivo del controller snapshot CSI](csi-snapshot-controller.md) applica una regola di antiaffinità morbida per i nodi ibridi, preferendo che il controller `deployment` venga eseguito su EC2 nella stessa regione del piano di controllo di Amazon AWS EKS. La collocazione congiunta `deployment` nella stessa AWS regione del piano di controllo di Amazon EKS migliora la latenza.

## Componenti aggiuntivi della community
<a name="hybrid-nodes-add-ons-community"></a>

Le sezioni seguenti descrivono le differenze tra l’esecuzione di componenti aggiuntivi della community compatibili su nodi ibridi rispetto ad altri tipi di elaborazione Amazon EKS.

## Kubernetes Metrics Server
<a name="hybrid-nodes-add-ons-metrics-server"></a>

Il piano di controllo deve raggiungere l’IP del pod di Metrics Server (o l’IP del nodo se hostNetwork è abilitato). Pertanto, a meno che non esegui Metrics Server in modalità hostNetwork, devi configurare una rete di pod remota durante la creazione del cluster Amazon EKS e devi rendere instradabili gli indirizzi IP del pod. L’implementazione del Border Gateway Protocol (BGP) con il CNI è un modo comune per rendere instradabili gli indirizzi IP dei pod.

## cert-manager
<a name="hybrid-nodes-add-ons-cert-manager"></a>

 `cert-manager` utilizza i [webhook](https://kubernetes.io/docs/reference/access-authn-authz/webhook/). Se esegui `cert-manager` su nodi ibridi, il tuo pod CIDR on-premises deve essere instradabile sulla rete on-premises e devi configurare il cluster EKS con la tua rete di pod remota. Per ulteriori informazioni, consulta [Configure webhooks for hybrid nodes](hybrid-nodes-webhooks.md).

# Configurazione di webhook per nodi ibridi
<a name="hybrid-nodes-webhooks"></a>

Questa pagina descrive in dettaglio le considerazioni sull’esecuzione di webhook con nodi ibridi. I webhook vengono utilizzati nelle applicazioni Kubernetes e nei progetti open source, come il Controller del bilanciatore del carico di AWS e l’agente osservabilità di CloudWatch, per eseguire funzionalità di mutazione e convalida in fase di runtime.

 **Reti di pod instradabili** 

Se riesci a rendere il CIDR del tuo pod on-premises instradabile sulla tua rete on-premises, puoi eseguire webhook su nodi ibridi. Esistono diverse tecniche che puoi utilizzare per rendere il CIDR del pod on-premises instradabile sulla tua rete on-premises, tra cui Border Gateway Protocol (BGP), route statiche o altre soluzioni di instradamento personalizzate. Il BGP è la soluzione consigliata in quanto è più scalabile e facile da gestire rispetto alle soluzioni alternative che richiedono una configurazione del percorso personalizzata o manuale. AWS supporta le funzionalità BGP di Cilium e Calico per la pubblicità dei CIDR dei pod, consulta [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md) e [CIDR dei pod remoti instradabili](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs) per ulteriori informazioni.

 **Reti di pod non instradabili** 

Se *non* riesci a rendere il CIDR del tuo pod on-premises instradabile sulla tua rete on-premises e devi eseguire i webhook, ti consigliamo di eseguire tutti i webhook sui nodi cloud nello stesso cluster EKS dei nodi ibridi.

## Considerazioni per i cluster in modalità mista
<a name="hybrid-nodes-considerations-mixed-mode"></a>

 *I cluster in modalità mista* sono definiti come cluster EKS con nodi ibridi e nodi in esecuzione nel cloud AWS. Quando esegui un cluster in modalità mista, considera i seguenti consigli:
+ Esegui la CNI del VPC sui nodi nel cloud AWS e Cilium o Calico sui nodi ibridi. Cilium e Calico non sono supportati da AWS quando vengono eseguiti su nodi in nel cloud AWS.
+ Configura i webhook per l’esecuzione su nodi nel cloud AWS. Consulta [Configurazione dei webhook per i componenti aggiuntivi](#hybrid-nodes-webhooks-add-ons) su come configurare i webhook per e i componenti aggiuntivi di AWS e della community.
+ Se le tue applicazioni richiedono pod in esecuzione su nodi nel cloud AWS per comunicare direttamente con pod in esecuzione su nodi ibridi (“comunicazione est-ovest”) e utilizzi la CNI del VPC sui nodi nel cloud AWS e Cilium o Calico sui nodi ibridi, il CIDR del tuo pod on-premises deve essere instradabile sulla tua rete on-premises.
+ Esegui almeno una replica di CoreDNS sui nodi nel cloud AWS e almeno una replica di CoreDNS sui nodi ibridi.
+ Configura la distribuzione del traffico del servizio per mantenerlo locale rispetto alla zona da cui proviene. Per ulteriori informazioni sulla Distribuzione del traffico del servizio, consulta [Configurazione della distribuzione del traffico del servizio](#hybrid-nodes-mixed-service-traffic-distribution).
+ Se utilizzi Application Load Balancer (ALB) o Network Load Balancer (NLB) di AWS per il traffico del carico di lavoro in esecuzione su nodi ibridi, è necessario che sia possibile instradare le destinazioni IP utilizzate con ALB o NLB da AWS.
+ Il componente aggiuntivo Metrics Server richiede la connettività dal piano di controllo EKS all’indirizzo IP del pod Metrics Server. Se esegui il componente aggiuntivo Metrics Server su nodi ibridi, il CIDR del pod on-premises deve essere instradabile sulla rete on-premises.
+ Per raccogliere metriche per i nodi ibridi utilizzando il Servizio gestito da Amazon per Prometheus (AMP), il CIDR del pod on-premises deve essere instradabile sulla rete on-premises. In alternativa, puoi utilizzare il collettore gestito AMP per le metriche e le risorse del piano di controllo EKS in esecuzione nel cloud AWS e il componente aggiuntivo Distro for OpenTelemetry (ADOT) di AWS per raccogliere metriche per i nodi ibridi.

## Configurazione di cluster in modalità mista
<a name="hybrid-nodes-mixed-mode"></a>

Per visualizzare i webhook in fase di mutazione e convalida in esecuzione sul cluster, puoi visualizzare il tipo di risorsa **Estensioni** nel pannello **Risorse** della console EKS per il cluster oppure utilizzare i seguenti comandi. EKS riporta anche le metriche dei webhook nella dashboard di osservabilità del cluster, consulta [Monitora il tuo cluster con la dashboard di osservabilità](observability-dashboard.md) per ulteriori informazioni.

```
kubectl get mutatingwebhookconfigurations
```

```
kubectl get validatingwebhookconfigurations
```

### Configurazione della distribuzione del traffico del servizio
<a name="hybrid-nodes-mixed-service-traffic-distribution"></a>

Quando esegui cluster in modalità mista, ti consigliamo di utilizzare la [https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution](https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution) per mantenere il traffico del servizio locale rispetto alla zona da cui proviene. La Distribuzione del traffico del servizio (disponibile per le versioni 1.31 e successive di Kubernetes in EKS) è la soluzione consigliata rispetto al [Topology Aware Routing](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/) perché è più prevedibile. Con la Distribuzione del traffico del servizio, gli endpoint integri della zona riceveranno tutto il traffico di quella zona. Con il Topology Aware Routing, ciascun servizio deve soddisfare diverse condizioni in quella zona per applicare il routing personalizzato, altrimenti indirizza il traffico in modo uniforme verso tutti gli endpoint.

Se utilizzi Cilium come CNI, devi eseguire la CNI con il set `enable-service-topology` su `true` per abilitare la distribuzione del traffico del servizio. Puoi trasferire questa configurazione con il flag di installazione Helm `--set loadBalancer.serviceTopology=true` oppure puoi aggiornare un’installazione esistente con il comando CLI `cilium config set enable-service-topology true` di Cilium. L’agente Cilium in esecuzione su ciascun nodo deve essere riavviato dopo aver aggiornato la configurazione per un’installazione esistente.

Nella sezione seguente è riportato un esempio di come configurare la distribuzione del traffico del servizio per il servizio CoreDNS, ti consigliamo di abilitare la stessa opzione per tutti i servizi del cluster per evitare traffico indesiderato tra gli ambienti.

### Configurazione delle repliche CoreDNS
<a name="hybrid-nodes-mixed-coredns"></a>

Se stai eseguendo un cluster in modalità mista con nodi ibridi e nodi nel cloud AWS, ti consigliamo di avere almeno una replica CoreDNS sui nodi ibridi e almeno una sui tuoi nodi nel cloud AWS. Per evitare problemi di latenza e di rete in una configurazione di cluster in modalità mista, puoi configurare il servizio CoreDNS in modo da preferire la replica CoreDNS più vicina con la [Distribuzione del traffico del servizio](https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution).

 La *Distribuzione del traffico del servizio* (disponibile per le versioni 1.31 e successive di Kubernetes in EKS) è la soluzione consigliata rispetto al [Topology Aware Routing](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/) perché è più prevedibile. Nella Distribuzione del traffico del servizio, gli endpoint integri della zona riceveranno tutto il traffico di quella zona. Nel Topology Aware Routing, ciascun servizio deve soddisfare diverse condizioni in quella zona per applicare il routing personalizzato, altrimenti indirizza il traffico in modo uniforme verso tutti gli endpoint. I seguenti passaggi configurano la Distribuzione del traffico del servizio.

Se utilizzi Cilium come CNI, devi eseguire la CNI con il set `enable-service-topology` su `true` per abilitare la Distribuzione del traffico del servizio. Puoi trasferire questa configurazione con il flag di installazione Helm `--set loadBalancer.serviceTopology=true` oppure puoi aggiornare un’installazione esistente con il comando CLI `cilium config set enable-service-topology true` di Cilium. L’agente Cilium in esecuzione su ciascun nodo deve essere riavviato dopo aver aggiornato la configurazione per un’installazione esistente.

1. Aggiungi un’etichetta di zona topologica per ciascuno dei tuoi nodi ibridi, ad esempio `topology.kubernetes.io/zone: onprem`. In alternativa, puoi impostare l’etichetta nella fase `nodeadm init`, specificando l’etichetta nella configurazione di `nodeadm`. Consultare [Configurazione del nodo per personalizzare kubelet (Facoltativo)](hybrid-nodes-nodeadm.md#hybrid-nodes-nodeadm-kubelet). Attenzione, ai nodi in esecuzione nel cloud AWS viene applicata automaticamente un’etichetta di zona topologica che corrisponde alla zona di disponibilità (AZ) del nodo.

   ```
   kubectl label node hybrid-node-name topology.kubernetes.io/zone=zone
   ```

1. Aggiungi `podAntiAffinity` all’implementazione di CoreDNS con la chiave della zona di topologia. In alternativa, puoi configurare l’implementazione di CoreDNS durante l’installazione con i componenti aggiuntivi EKS.

   ```
   kubectl edit deployment coredns -n kube-system
   ```

   ```
   spec:
     template:
       spec:
         affinity:
          ...
           podAntiAffinity:
             preferredDuringSchedulingIgnoredDuringExecution:
             - podAffinityTerm:
                 labelSelector:
                   matchExpressions:
                   - key: k8s-app
                     operator: In
                     values:
                     - kube-dns
                 topologyKey: kubernetes.io/hostname
               weight: 100
             - podAffinityTerm:
                 labelSelector:
                   matchExpressions:
                   - key: k8s-app
                     operator: In
                     values:
                     - kube-dns
                 topologyKey: topology.kubernetes.io/zone
               weight: 50
         ...
   ```

1. Aggiungi l’impostazione `trafficDistribution: PreferClose` alla configurazione del servizio `kube-dns` per abilitare la Distribuzione del traffico del servizio.

   ```
   kubectl patch svc kube-dns -n kube-system --type=merge -p '{
     "spec": {
       "trafficDistribution": "PreferClose"
     }
   }'
   ```

1. Puoi confermare che la Distribuzione del traffico del servizio è abilitata visualizzando le slice degli endpoint per il servizio `kube-dns`. Le sezioni degli endpoint devono mostrare gli `hints` per le etichette delle zone topologiche, a conferma che la Distribuzione del traffico del servizio è abilitata. Se non vedi l’`hints` per ciascun indirizzo degli endpoint, la Distribuzione del traffico del servizio non è abilitato.

   ```
   kubectl get endpointslice -A | grep "kube-dns"
   ```

   ```
   kubectl get endpointslice [.replaceable]`kube-dns-<id>`  -n kube-system -o yaml
   ```

   ```
   addressType: IPv4
   apiVersion: discovery.k8s.io/v1
   endpoints:
   - addresses:
     - <your-hybrid-node-pod-ip>
     hints:
       forZones:
       - name: onprem
     nodeName: <your-hybrid-node-name>
     zone: onprem
   - addresses:
     - <your-cloud-node-pod-ip>
     hints:
       forZones:
       - name: us-west-2a
     nodeName: <your-cloud-node-name>
     zone: us-west-2a
   ```

### Configurazione dei webhook per i componenti aggiuntivi
<a name="hybrid-nodes-webhooks-add-ons"></a>

I seguenti componenti aggiuntivi utilizzano i webhook e sono supportati per l’uso con nodi ibridi.
+  Controller del bilanciatore del carico AWS
+ Agente osservabilità di CloudWatch
+  Distro for OpenTelemetry (ADOT) di AWS
+  `cert-manager` 

Consulta le seguenti sezioni per configurare i webhook utilizzati da questi componenti aggiuntivi per l’esecuzione su nodi nel cloud AWS.

#### Controller del bilanciatore del carico AWS
<a name="hybrid-nodes-mixed-lbc"></a>

Per utilizzare il Controller del bilanciatore del carico di AWS in una configurazione di cluster in modalità mista, devi eseguire il controller sui nodi nel cloud AWS. A tale scopo, aggiungi quanto segue alla configurazione dei valori di Helm o specifica i valori utilizzando la configurazione aggiuntiva EKS.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
```

#### Agente osservabilità di CloudWatch
<a name="hybrid-nodes-mixed-cwagent"></a>

Il componente aggiuntivo Agente osservabilità di CloudWatch dispone di un operatore Kubernetes che utilizza webhook. Per eseguire l’operatore sui nodi nel cloud AWS in una configurazione di cluster in modalità mista, modifica la configurazione dell’operatore Agente osservabilità di CloudWatch. Non puoi configurare l’affinità dell’operatore durante l’installazione con i componenti aggiuntivi Helm ed EKS (consulta [problema containers-roadmap \$12431](https://github.com/aws/containers-roadmap/issues/2431)).

```
kubectl edit -n amazon-cloudwatch deployment amazon-cloudwatch-observability-controller-manager
```

```
spec:
  ...
  template:
    ...
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: eks.amazonaws.com/compute-type
                operator: NotIn
                values:
                - hybrid
```

#### Distro for OpenTelemetry (ADOT) di AWS
<a name="hybrid-nodes-mixed-adot"></a>

Il componente aggiuntivo Distro for OpenTelemetry (ADOT) di AWS dispone di un operatore Kubernetes che utilizza i webhook. Per eseguire l’operatore sui nodi nel cloud AWS in una configurazione di cluster in modalità mista, aggiungi quanto segue alla configurazione dei valori di Helm o specifica i valori utilizzando la configurazione aggiuntiva EKS.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
```

Se il CIDR del pod non è instradabile sulla rete on-premises, il collettore ADOT deve essere eseguito su nodi ibridi per acquisire le metriche dai nodi ibridi e dai carichi di lavoro in esecuzione su di essi. A tale scopo, modifica la Definizione di risorse personalizzate (CRD).

```
kubectl -n opentelemetry-operator-system edit opentelemetrycollectors.opentelemetry.io adot-col-prom-metrics
```

```
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: In
            values:
            - hybrid
```

Puoi configurare il collettore ADOT per acquisire solo le metriche dai nodi ibridi e dalle risorse in esecuzione sui nodi ibridi aggiungendo il seguente `relabel_configs` a ciascun `scrape_configs` nella configurazione CRD del collettore ADOT.

```
relabel_configs:
  - action: keep
    regex: hybrid
    source_labels:
    - __meta_kubernetes_node_label_eks_amazonaws_com_compute_type
```

Il componente aggiuntivo ADOT presenta un requisito preliminare per installare `cert-manager` per i certificati TLS utilizzati dal webhook dell’operatore ADOT. `cert-manager` esegue anche webhook e puoi configurarlo per l’esecuzione su nodi nel cloud AWS con la seguente configurazione dei valori Helm.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
webhook:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
cainjector:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
startupapicheck:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
```

#### `cert-manager`
<a name="hybrid-nodes-mixed-cert-manager"></a>

Il componente aggiuntivo `cert-manager` esegue i webhook e puoi configurarlo per l’esecuzione su nodi nel cloud AWS con la seguente configurazione dei valori Helm.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
webhook:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
cainjector:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
startupapicheck:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
```

# Configurare il proxy per i nodi ibridi
<a name="hybrid-nodes-proxy"></a>

Se utilizzi un server proxy nell’ambiente on-premises per il traffico in uscita dal data center o dall’ambiente periferico, devi configurare separatamente i nodi e il cluster per usare il server proxy.

Cluster  
Sul cluster, devi configurare `kube-proxy` per utilizzare il server proxy. Devi configurare `kube-proxy` dopo aver creato il cluster Amazon EKS.

Nodi  
Sui tuoi nodi, devi configurare il sistema operativo, `containerd`, `kubelet` e l’agente Amazon SSM per utilizzare il tuo server proxy. Puoi apportare queste modifiche durante il processo di creazione delle immagini del sistema operativo o prima di eseguire `nodeadm init` su ciascun nodo ibrido.

## Configurazione a livello di nodo
<a name="_node_level_configuration"></a>

Devi applicare le seguenti configurazioni nelle immagini del sistema operativo o prima di eseguire `nodeadm init` su ciascun nodo ibrido.

### Configurazione del proxy `containerd`
<a name="_containerd_proxy_configuration"></a>

 `containerd` è il runtime di gestione dei container predefinito per Kubernetes. Se utilizzi un proxy per l’accesso a Internet, devi configurare `containerd` in modo che possa estrarre le immagini dei container richieste da Kubernetes e Amazon EKS.

Crea un file su ogni nodo ibrido chiamato `http-proxy.conf` nella directory `/etc/systemd/system/containerd.service.d` con i seguenti contenuti. Sostituisci `proxy-domain` e `port` con i valori per il tuo ambiente.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### Configurazione di `containerd` a partire dai dati dell’utente
<a name="_containerd_configuration_from_user_data"></a>

La directory `containerd.service.d` dovrà essere creata per questo file. Dovrai ricaricare systemd per recuperare il file di configurazione senza dover riavviare il sistema. In AL2023, il servizio sarà probabilmente già in esecuzione al momento dell’esecuzione dello script, quindi sarà necessario riavviarlo.

```
mkdir -p /etc/systemd/system/containerd.service.d
echo '[Service]' > /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart containerd
```

### Configurazione del proxy `kubelet`
<a name="_kubelet_proxy_configuration"></a>

 `kubelet` è l’agente del nodo Kubernetes che viene eseguito su ogni nodo Kubernetes ed è responsabile della gestione del nodo e dei pod in esecuzione su di esso. Se utilizzi un proxy nel tuo ambiente on-premises, devi configurare `kubelet` in modo che possa comunicare con gli endpoint pubblici o privati del cluster Amazon EKS.

Crea un file su ogni nodo ibrido chiamato `http-proxy.conf` nella directory `/etc/systemd/system/kubelet.service.d/` col seguente contenuto. Sostituisci `proxy-domain` e `port` con i valori per il tuo ambiente.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### Configurazione di `kubelet` a partire dai dati dell’utente
<a name="_kubelet_configuration_from_user_data"></a>

La directory `kubelet.service.d` deve essere creata per questo file. Dovrai ricaricare systemd per recuperare il file di configurazione senza dover riavviare il sistema. In AL2023, il servizio sarà probabilmente già in esecuzione al momento dell’esecuzione dello script, quindi sarà necessario riavviarlo.

```
mkdir -p /etc/systemd/system/kubelet.service.d
echo '[Service]' > /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart kubelet
```

### Configurazione del proxy `ssm`
<a name="_ssm_proxy_configuration"></a>

 `ssm` è uno dei provider di credenziali che possono essere utilizzati per inizializzare un nodo ibrido. `ssm` è responsabile dell’autenticazione con AWS e della generazione di credenziali temporanee utilizzate da `kubelet`. Se utilizzi un proxy nel tuo ambiente on-premises e usi `ssm` come fornitore di credenziali sul nodo, devi configurare `ssm` in modo che possa comunicare con gli endpoint del servizio Amazon SSM.

Crea un file su ogni nodo ibrido chiamato `http-proxy.conf` nel percorso seguente, a seconda del sistema operativo
+ Ubuntu: `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf` 
+ Amazon Linux 2023 e Red Hat Enterprise Linux: `/etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf` 

Popola il file con i seguenti contenuti. Sostituisci `proxy-domain` e `port` con i valori per il tuo ambiente.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### Configurazione di `ssm` a partire dai dati dell’utente
<a name="_ssm_configuration_from_user_data"></a>

La directory `ssm` del file di servizio systemd deve essere creata per questo file. Il percorso della directory dipende dal sistema operativo utilizzato nel nodo.
+ Ubuntu: `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d` 
+ Amazon Linux 2023 e Red Hat Enterprise Linux: `/etc/systemd/system/amazon-ssm-agent.service.d` 

Sostituisci il nome del servizio systemd nel comando riavvio riportato di seguito a seconda del sistema operativo utilizzato nel nodo
+ Ubuntu: `snap.amazon-ssm-agent.amazon-ssm-agent` 
+ Amazon Linux 2023 e Red Hat Enterprise Linux: `amazon-ssm-agent` 

```
mkdir -p systemd-service-file-directory
echo '[Service]' > [.replaceable]#systemd-service-file-directory/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://[.replaceable]#proxy-domain:port"' >> systemd-service-file-directory/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://[.replaceable]#proxy-domain:port"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf
systemctl daemon-reload
systemctl restart [.replaceable]#systemd-service-name
```

### Configurazione del proxy del sistema operativo
<a name="_operating_system_proxy_configuration"></a>

Se utilizzi un proxy per l’accesso a Internet, devi configurare il sistema operativo in modo da poter estrarre le dipendenze dei nodi ibridi dal gestore di pacchetti dei sistemi operativi.

 **Ubuntu** 

1. Configura `snap` per utilizzare il proxy con i seguenti comandi:

   ```
   sudo snap set system proxy.https=http://proxy-domain:port
   sudo snap set system proxy.http=http://proxy-domain:port
   ```

1. Per abilitare il proxy per `apt`, crea un file chiamato `apt.conf` nella directory `/etc/apt/`. Sostituisci proxy-domain e port con i valori per il tuo ambiente.

   ```
   Acquire::http::Proxy "http://proxy-domain:port";
   Acquire::https::Proxy "http://proxy-domain:port";
   ```

 **Amazon Linux 2023** 

1. Configura `dnf` per l’utilizzo del proxy. Crea un file `/etc/dnf/dnf.conf` con i valori proxy-domain e port per il tuo ambiente.

   ```
   proxy=http://proxy-domain:port
   ```

 **Red Hat Enterprise Linux** 

1. Configura `yum` per l’utilizzo del proxy. Crea un file `/etc/yum.conf` con i valori proxy-domain e port per il tuo ambiente.

   ```
   proxy=http://proxy-domain:port
   ```

### Configurazione del proxy di IAM Roles Anywhere
<a name="_iam_roles_anywhere_proxy_configuration"></a>

Il servizio del fornitore di credenziali IAM Roles Anywhere è responsabile dell’aggiornamento delle credenziali quando si utilizza IAM Roles Anywhere con il flag `enableCredentialsFile` (consulta [EKS Pod Identity Agent](hybrid-nodes-add-ons.md#hybrid-nodes-add-ons-pod-id)). Se utilizzi un proxy nel tuo ambiente on-premises, devi configurare il servizio in modo che possa comunicare con gli endpoint di IAM Roles Anywhere.

Crea un file denominato `http-proxy.conf` nella directory `/etc/systemd/system/aws_signing_helper_update.service.d/` con i seguenti contenuti. Sostituisci `proxy-domain` e `port` con i valori per il tuo ambiente.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

## Configurazione a livello di cluster
<a name="_cluster_wide_configuration"></a>

Le configurazioni in questa sezione devono essere applicate dopo aver creato il cluster Amazon EKS e prima di eseguire `nodeadm init` su ogni nodo ibrido.

### Configurazione di un proxy kube-proxy
<a name="_kube_proxy_proxy_configuration"></a>

Amazon EKS installa automaticamente `kube-proxy` su ogni nodo ibrido come DaemonSet quando i nodi entrano a far parte del cluster. `kube-proxy` abilita il routing tra servizi supportati da pod su cluster Amazon EKS. Per configurare ogni host, `kube-proxy` necessita della risoluzione DNS per l’endpoint del cluster Amazon EKS.

1. Modifica il DaemonSet `kube-proxy` mediante il comando seguente

   ```
   kubectl -n kube-system edit ds kube-proxy
   ```

   Verrà aperta la definizione del DaemonSet `kube-proxy` sull’editor configurato.

1. Aggiungi le variabili di ambiente per `HTTP_PROXY` e `HTTPS_PROXY`. Nota che la variabile di ambiente `NODE_NAME` dovrebbe già esistere nella configurazione. Sostituisci `proxy-domain` e `port` con valori per il tuo ambiente.

   ```
   containers:
     - command:
       - kube-proxy
       - --v=2
       - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME)
       env:
       - name: HTTP_PROXY
         value: http://proxy-domain:port
       - name: HTTPS_PROXY
         value: http://proxy-domain:port
       - name: NODE_NAME
         valueFrom:
           fieldRef:
             apiVersion: v1
             fieldPath: spec.nodeName
   ```

# Configurazione di Cilium BGP per nodi ibridi
<a name="hybrid-nodes-cilium-bgp"></a>

Questo argomento descrive come configurare il Border Gateway Protocol (BGP) di Cilium per Amazon EKS Hybrid Nodes. La funzionalità BGP di Cilium si chiama [Cilium BGP Control Plane](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane/) e può essere utilizzata per pubblicizzare indirizzi di pod e servizi sulla rete on-premises. Per metodi alternativi per rendere i pod CIDR instradabili sulla on-premises, consulta [CIDR dei pod remoti instradabili](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).

## Configurazione del BGP di Cilium
<a name="hybrid-nodes-cilium-bgp-configure"></a>

### Prerequisiti
<a name="_prerequisites"></a>
+ Cilium è installato seguendo le istruzioni contenute in [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

### Procedura
<a name="_procedure"></a>

1. Per utilizzare BGP con Cilium per pubblicizzare pod o indirizzi di servizi sulla rete on-premises, è necessario installare Cilium con `bgpControlPlane.enabled: true`. Se stai abilitando BGP per un’implementazione Cilium esistente, devi riavviare l’operatore Cilium per applicare la configurazione BGP se BGP non era stato precedentemente abilitato. È possibile impostare i valori di Helm `operator.rollOutPods` per `true` al fine di riavviare l’operatore Cilium come parte del processo di installazione/aggiornamento di Helm.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --set bgpControlPlane.enabled=true
   ```

1. Conferma che l’operatore e gli agenti Cilium sono stati riavviati e sono in esecuzione.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

1. Crea un file chiamato `cilium-bgp-cluster.yaml` con una definizione `CiliumBGPClusterConfig`. Potrebbe essere necessario ottenere le seguenti informazioni dall’amministratore di rete.
   + Configura `localASN` con l’ASN per i nodi che eseguono Cilium.
   + Configura `peerASN` con l’ASN per il router on-premises.
   + Configura `peerAddress` con l’IP del router on-premises con cui verrà eseguito il peering di ogni nodo su cui è in esecuzione Cilium.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPClusterConfig
     metadata:
       name: cilium-bgp
     spec:
       nodeSelector:
         matchExpressions:
         - key: eks.amazonaws.com/compute-type
           operator: In
           values:
           - hybrid
       bgpInstances:
       - name: "rack0"
         localASN: NODES_ASN
         peers:
         - name: "onprem-router"
           peerASN: ONPREM_ROUTER_ASN
           peerAddress: ONPREM_ROUTER_IP
           peerConfigRef:
             name: "cilium-peer"
     ```

1. Applica la configurazione del cluster Cilium BGP al cluster.

   ```
   kubectl apply -f cilium-bgp-cluster.yaml
   ```

1. Crea un file denominato `cilium-bgp-peer.yaml` con la risorsa `CiliumBGPPeerConfig` che definisce una configurazione peer BGP. Più peer possono condividere la stessa configurazione e fornire un riferimento alla risorsa comune `CiliumBGPPeerConfig`. Consulta [BGP Peer configuration](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-v2/#bgp-peer-configuration) nella documentazione di Cilium per un elenco completo delle opzioni di configurazione.

   I valori per le seguenti impostazioni peer Cilium devono corrispondere a quelli del router on-premises con cui si esegue il peering.
   + Configura `holdTimeSeconds` che determina per quanto tempo un peer BGP attende un messaggio keepalive o update prima di dichiarare la sessione inattiva. Il valore predefinito è 90 secondi.
   + Configura `keepAliveTimeSeconds` che determina se un peer BGP è ancora raggiungibile e la sessione BGP è attiva. Il valore predefinito è 30 secondi.
   + Configura `restartTimeSeconds` che determina l’ora in cui il piano di controllo BGP di Cilium dovrebbe ristabilire la sessione BGP dopo un riavvio. Il valore predefinito è 120 secondi.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPPeerConfig
     metadata:
       name: cilium-peer
     spec:
       timers:
         holdTimeSeconds: 90
         keepAliveTimeSeconds: 30
       gracefulRestart:
         enabled: true
         restartTimeSeconds: 120
       families:
         - afi: ipv4
           safi: unicast
           advertisements:
             matchLabels:
               advertise: "bgp"
     ```

1. Applica la configurazione del peer Cilium BGP al cluster.

   ```
   kubectl apply -f cilium-bgp-peer.yaml
   ```

1. Crea un file denominato `cilium-bgp-advertisement-pods.yaml` con una risorsa `CiliumBGPAdvertisement` per pubblicizzare i pod CIDR sulla rete on-premises.
   + La risorsa `CiliumBGPAdvertisement` viene utilizzata per definire i tipi di pubblicità e gli attributi ad essi associati. L’esempio seguente configura Cilium per pubblicizzare solo i pod CIDR. Vedi gli esempi in [Tipo servizio LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) e [Bilanciamento del carico Cilium all’interno del cluster](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-cilium) per ulteriori informazioni sulla configurazione di Cilium per pubblicizzare gli indirizzi dei servizi.
   + Ogni nodo ibrido che esegue l’agente Cilium esegue il peering con il router upstream abilitato per BGP. Ogni nodo pubblicizza la gamma di pod CIDR che possiede quando `advertisementType` di Cilium è impostato su `PodCIDR` come nell’esempio seguente. Per ulteriori informazioni, consulta [BGP Advertisements configuration](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane-v2/#bgp-advertisements) nella documentazione di Cilium.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPAdvertisement
     metadata:
       name: bgp-advertisement-pods
       labels:
         advertise: bgp
     spec:
       advertisements:
         - advertisementType: "PodCIDR"
     ```

1. Applica la configurazione degli annunci pubblicitari BGP di Cilium al cluster.

   ```
   kubectl apply -f cilium-bgp-advertisement-pods.yaml
   ```

1. È possibile confermare che il peering BGP ha funzionato con la [CLI di Cilium](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli) utilizzando il comando `cilium bgp peers`. Dovresti vedere i valori corretti nell’output per il tuo ambiente e lo stato della sessione come `established`. Per ulteriori informazioni sulla risoluzione dei problemi, consulta [Troubleshooting and Operations Guide](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane/#troubleshooting-and-operation-guide) nella documentazione di Cilium.

   Negli esempi seguenti, ci sono cinque nodi ibridi che eseguono l’agente Cilium e ogni nodo pubblicizza la gamma Pod CIDR di sua proprietà.

   ```
   cilium bgp peers
   ```

   ```
   Node                   Local AS    Peer AS               Peer Address        Session State   Uptime     Family         Received   Advertised
   mi-026d6a261e355fba7   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m58s   ipv4/unicast   1          2
   mi-082f73826a163626e   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h19m12s   ipv4/unicast   1          2
   mi-09183e8a3d755abf6   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m47s   ipv4/unicast   1          2
   mi-0d78d815980ed202d   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h19m12s   ipv4/unicast   1          2
   mi-0daa253999fe92daa   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m58s   ipv4/unicast   1          2
   ```

   ```
   cilium bgp routes
   ```

   ```
   Node                   VRouter       Prefix           NextHop   Age         Attrs
   mi-026d6a261e355fba7   NODES_ASN     10.86.2.0/26     0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-082f73826a163626e   NODES_ASN     10.86.2.192/26   0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-09183e8a3d755abf6   NODES_ASN     10.86.2.64/26    0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0d78d815980ed202d   NODES_ASN     10.86.2.128/26   0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0daa253999fe92daa   NODES_ASN     10.86.3.0/26     0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   ```

# Configurazione dell’ingresso Kubernetes per nodi ibridi
<a name="hybrid-nodes-ingress"></a>

Questo argomento descrive come configurare l’ingresso Kubernetes per i carichi di lavoro in esecuzione su Amazon EKS Hybrid Nodes. L’[ingresso Kubernetes](https://kubernetes.io/docs/concepts/services-networking/ingress/) espone i percorsi HTTP e HTTPS dall’esterno del cluster ai servizi all’interno del cluster. Per utilizzare le risorse dell’ingresso, è necessario un controller dell’ingresso Kubernetes per configurare l’infrastruttura di rete e i componenti che servono il traffico di rete.

 AWS supporta AWS Application Load Balancer (ALB) e Cilium per l’ingresso Kubernetes per carichi di lavoro in esecuzione su nodi ibridi EKS. La decisione di utilizzare ALB o Cilium per l’ingresso si basa sulla fonte del traffico delle applicazioni. Se il traffico dell’applicazione proviene da una Regione AWS, AWS consiglia di utilizzare ALB AWS e il controller del bilanciatore del carico AWS. Se il traffico delle applicazioni proviene dall’ambiente on-premises o edge, AWS consiglia di utilizzare le funzionalità dell’ingresso integrate di Cilium, che possono essere utilizzate con o senza l’infrastruttura di bilanciatore del carico nell’ambiente.

![\[Ingresso di nodi ibridi EKS\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-ingress.png)


## AWS Application Load Balancer
<a name="hybrid-nodes-ingress-alb"></a>

Puoi utilizzare il [Controller del bilanciatore del carico AWS](aws-load-balancer-controller.md) e Application Load Balancer (ALB) con il tipo di destinazione `ip` per i carichi di lavoro in esecuzione su nodi ibridi. Quando si utilizza il tipo di destinazione `ip`, ALB inoltra il traffico direttamente ai pod, aggirando il percorso di rete del livello di servizio. Affinché ALB raggiunga le destinazioni IP del pod sui nodi ibridi, il CIDR del pod on-premises deve essere instradabile sulla rete locale. Inoltre, il controller del bilanciatore del carico AWS utilizza webhook e richiede una comunicazione diretta dal piano di controllo EKS. Per ulteriori informazioni, consulta [Configurazione di webhook per nodi ibridi](hybrid-nodes-webhooks.md).

### Considerazioni
<a name="_considerations"></a>
+ Per ulteriori informazioni su AWS Application Load Balancer e il controller del bilanciatore del carico AWS, consulta [Instradare il traffico di applicazioni e HTTP con Application Load Balancer](alb-ingress.md) e [Installa il AWS Load Balancer Controller con Helm](lbc-helm.md).
+ Consulta [Best Practices for Load Balancing](https://docs.aws.amazon.com/eks/latest/best-practices/load-balacing.html) per informazioni su come scegliere tra AWS Application Load Balancer e AWS Network Load Balancer.
+ Consulta [AWS Load Balancer Controller Ingress annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/) per l’elenco delle annotazioni che possono essere configurate per le risorse di ingresso con AWS Application Load Balancer.

### Prerequisiti
<a name="_prerequisites"></a>
+ Cilium è installato seguendo le istruzioni contenute in [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).
+ Il piano di controllo BGP di Cilium è abilitato seguendo le istruzioni contenute in [Configurazione di Cilium BGP per nodi ibridi](hybrid-nodes-cilium-bgp.md). Se non desideri utilizzare BGP, devi utilizzare un metodo alternativo per rendere i pod CIDR on-premises instradabili sulla rete on-premises. Se non rendi instradabili i tuoi pod CIDR on-premises, ALB non sarà in grado di registrarsi o contattare i destinatari IP del pod.
+ Helm è installato nell’ambiente a riga di comando, consulta le [istruzioni di configurazione di Helm](helm.md) per ulteriori informazioni.
+ eksctl è installato nell’ambiente a riga di comando, consulta le [istruzioni di installazione di eksctl](install-kubectl.md#eksctl-install-update) per ulteriori informazioni.

### Procedura
<a name="_procedure"></a>

1. Scaricare una policy IAM per il Controller del load balancer AWS che consente di effettuare chiamate alle API AWS per conto dell’utente.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/docs/install/iam_policy.json
   ```

1. Creare una policy IAM utilizzando le policy scaricate nel passaggio precedente.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```

1. Sostituisci il valore per nome del cluster (`CLUSTER_NAME`), Regione AWS (`AWS_REGION`) e ID dell’account AWS (`AWS_ACCOUNT_ID`) con le tue impostazioni ed esegui il comando seguente.

   ```
   eksctl create iamserviceaccount \
       --cluster=CLUSTER_NAME \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region AWS_REGION \
       --approve
   ```

1. Aggiungi il repository di grafici Helm di eks-charts e aggiorna il repository Helm locale per assicurarti di avere i grafici più recenti.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

   ```
   helm repo update eks
   ```

1. Installazione del Controller del bilanciatore del carico AWS. Sostituisci il valore per nome del cluster (`CLUSTER_NAME`), Regione AWS (`AWS_REGION`), ID del VPC (`VPC_ID`) e versione del grafico Helm del controller del bilanciatore del carico AWS (`AWS_LBC_HELM_VERSION`) con le tue impostazioni ed esegui il comando seguente. Se stai eseguendo un cluster in modalità mista con nodi ibridi e nodi nel cloud AWS, puoi eseguire il controller del bilanciatore del carico AWS sui nodi cloud seguendo le istruzioni riportate all’indirizzo [Controller del bilanciatore del carico AWS](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-lbc).
   + Puoi trovare la versione più recente del grafico Helm eseguendo `helm search repo eks/aws-load-balancer-controller --versions`.

     ```
     helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
       -n kube-system \
       --version AWS_LBC_HELM_VERSION \
       --set clusterName=CLUSTER_NAME \
       --set region=AWS_REGION \
       --set vpcId=VPC_ID \
       --set serviceAccount.create=false \
       --set serviceAccount.name=aws-load-balancer-controller
     ```

1. Verifica che il controller del bilanciatore del carico AWS sia stato installato correttamente.

   ```
   kubectl get -n kube-system deployment aws-load-balancer-controller
   ```

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

1. Crea un’applicazione di esempio. L’esempio seguente utilizza l’applicazione di microservizi di esempio [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Crea un file denominato `my-ingress-alb.yaml` con i seguenti contenuti.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       alb.ingress.kubernetes.io/load-balancer-name: "my-ingress-alb"
       alb.ingress.kubernetes.io/target-type: "ip"
       alb.ingress.kubernetes.io/scheme: "internet-facing"
       alb.ingress.kubernetes.io/healthcheck-path: "/details/1"
   spec:
     ingressClassName: alb
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Applica la configurazione dell’ingresso al cluster.

   ```
   kubectl apply -f my-ingress-alb.yaml
   ```

1. Il provisioning dell’ALB per la risorsa in ingresso può richiedere alcuni minuti. Una volta effettuato il provisioning dell’ALB, alla risorsa Ingress verrà assegnato un indirizzo che corrisponde al nome DNS dell’implementazione ALB. L’indirizzo avrà il formato `<alb-name>-<random-string>.<region>.elb.amazonaws.com`.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS   HOSTS   ADDRESS                                                     PORTS   AGE
   my-ingress   alb     *       my-ingress-alb-<random-string>.<region>.elb.amazonaws.com   80      23m
   ```

1. Accedi al Servizio utilizzando l’indirizzo dell’ALB.

   ```
   curl -s http//my-ingress-alb-<random-string>.<region>.elb.amazonaws.com:80/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
     "details": "This is the details page"
   }
   ```

## Panoramica dell’ingresso di Cilium e del gateway di Cilium
<a name="hybrid-nodes-ingress-cilium"></a>

Le funzionalità dell’ingresso di Cilium sono integrate nell’architettura di Cilium e possono essere gestite con l’API dell’ingresso di Kubernetes o l’API Gateway. Se non disponi di risorse dell’ingresso esistenti, AWS consiglia di iniziare con l’API Gateway, poiché è un modo più significativo e flessibile per definire e gestire le risorse di rete Kubernetes. L’[API del Gateway di Kubernetes](https://gateway-api.sigs.k8s.io/) mira a standardizzare il modo in cui le risorse di rete per ingresso, bilanciamento del carico e mesh di servizi vengono definite e gestite nei cluster Kubernetes.

Quando abiliti le funzionalità di ingresso o gateway di Cilium, l’operatore Cilium riconcilia gli oggetti ingresso/gateway nel cluster e i proxy Envoy su ciascun nodo elaborano il traffico di rete di livello 7 (L7). Cilium non fornisce direttamente l’infrastruttura ingresso/gateway come i bilanciatori del carico. Se prevedi di utilizzare l’ingresso/gateway di Cilium con un bilanciatore del carico, devi utilizzare gli strumenti di quest’ultimo, in genere un controller di ingresso o gateway, per distribuire e gestire l’infrastruttura del sistema del bilanciatore del carico.

Per il traffico ingresso/gateway, Cilium gestisce il traffico di rete principale e l’applicazione delle policy L3/L4, mentre i proxy Envoy integrati elaborano il traffico di rete L7. Con l’ingresso/gateway di Cilium, Envoy è responsabile dell’applicazione delle regole di routing L7, delle policy e della manipolazione delle richieste, della gestione avanzata del traffico come la suddivisione e il mirroring del traffico e della terminazione e origine del TLS. I proxy Envoy di Cilium vengono distribuiti come DaemonSet (`cilium-envoy`) separato per impostazione predefinita, il che consente a Envoy e all’agente Cilium di essere aggiornati, scalati e gestiti separatamente.

Per ulteriori informazioni su come funzionano l’ingresso di Cilium e il gateway di Cilium, consulta le pagine [Cilium Ingress](https://docs.cilium.io/en/stable/network/servicemesh/ingress/) e [Cilium Gateway](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/) nella documentazione di Cilium.

## Confronto tra ingresso e gateway di Cilium
<a name="hybrid-nodes-ingress-cilium-comparison"></a>

La tabella seguente riassume le funzionalità di ingresso e gateway di Cilium, a partire dalla **versione 1.17.x di Cilium**.


| Funzionalità | Ingress | Gateway | 
| --- | --- | --- | 
|  Tipo servizio LoadBalancer  |  Sì   |  Sì   | 
|  Tipo servizio NodePort  |  Sì   |  No1   | 
|  Rete host  |  Sì   |  Sì   | 
|  Bilanciatore del carico condiviso  |  Sì   |  Sì   | 
|  Bilanciatore del carico dedicato  |  Sì   |  No2   | 
|  Policy di rete  |  Sì   |  Sì   | 
|  Protocolli  |  Livello 7 (HTTP(S), gRPC)  |  Livello 7 (HTTP(S), gRPC)3   | 
|  TLS Passthrough  |  Sì   |  Sì   | 
|  Gestione del traffico  |  Routing del percorso e dell’host  |  Routing del percorso e dell’host, reindirizzamento e riscrittura degli URL, suddivisione del traffico, modifica dell’intestazione  | 

 1 Il supporto del gateway di Cilium per i servizi NodePort è pianificato per la versione 1.18.x di Cilium ([\$127273](https://github.com/cilium/cilium/pull/27273))

 2 Supporto del gateway di Cilium per bilanciatori del carico dedicati ([\$125567](https://github.com/cilium/cilium/issues/25567))

 3 Supporto del gateway di Cilium per TCP/UDP ([\$121929](https://github.com/cilium/cilium/issues/21929))

## Installazione del gateway di Cilium
<a name="hybrid-nodes-ingress-cilium-gateway-install"></a>

### Considerazioni
<a name="_considerations_2"></a>
+ Cilium deve essere configurato con `nodePort.enabled` impostato su `true` come mostrato negli esempi seguenti. Se utilizzi la funzionalità di sostituzione kube-proxy di Cilium, non devi impostare `nodePort.enabled` su `true`.
+ Cilium deve essere configurato con `envoy.enabled` impostato su `true` come mostrato negli esempi seguenti.
+ Il gateway di Cilium può essere distribuito nel bilanciatore del carico (impostazione predefinita) o in modalità rete host.
+ Quando si utilizza il gateway di Cilium in modalità bilanciatore del carico, l’annotazione `service.beta.kubernetes.io/aws-load-balancer-type: "external"` deve essere impostata sulla risorsa del gateway per impedire al provider AWS cloud legacy di creare un Classic Load Balancer per il servizio di tipo LoadBalancer che Cilium crea per la risorsa gateway.
+ Quando si utilizza il gateway di Cilium in modalità rete host, il servizio di tipo LoadBalancer è disabilitato. La modalità di rete host è utile per gli ambienti che non dispongono di un’infrastruttura del bilanciatore del carico; per ulteriori informazioni, consulta [Rete host](#hybrid-nodes-ingress-cilium-host-network).

### Prerequisiti
<a name="_prerequisites_2"></a>

1. Helm è installato nell’ambiente a riga di comando, consulta [Setup Helm instructions](helm.md).

1. Cilium è installato seguendo le istruzioni contenute in [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

### Procedura
<a name="_procedure_2"></a>

1. Installa le definizioni di risorse personalizzate (CDR) dell’API del gateway di Kubernetes.

   ```
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gateways.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml
   ```

1. Crea un file denominato `cilium-gateway-values.yaml` con i seguenti contenuti. L’esempio seguente configura il gateway di Cilium per utilizzare la modalità del bilanciatore del carico predefinita e per utilizzare un proxy DaemonSet for Envoy separato `cilium-envoy` configurato per l’esecuzione solo su nodi ibridi.

   ```
   gatewayAPI:
     enabled: true
     # uncomment to use host network mode
     # hostNetwork:
     #   enabled: true
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Applica il file di valori Helm al cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-gateway-values.yaml
   ```

1. Verifica che l’operatore, l’agente e i pod Envoy Cilium siano in esecuzione.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Configurazione del gateway di Cilium
<a name="hybrid-nodes-ingress-cilium-gateway-configure"></a>

Il gateway di Cilium è abilitato sugli oggetti del gateway impostando `gatewayClassName` su `cilium`. Il servizio creato da Cilium per le risorse del gateway può essere configurato con campi sull’oggetto del gateway. Le annotazioni comuni utilizzate dai controller del gateway per configurare l’infrastruttura del bilanciatore del carico possono essere configurate con il campo `infrastructure` dell’oggetto del gateway. Quando si utilizza LoadBalancer IPAM di Cilium (vedi esempio in [Tipo servizio LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer)), l’indirizzo IP da utilizzare per il servizio di tipo LoadBalancer può essere configurato nel campo `addresses` dell’oggetto del Gateway. Per ulteriori informazioni sulla configurazione del gateway, consulta [Kubernetes Gateway API specification](https://gateway-api.sigs.k8s.io/reference/spec/#gateway).

```
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: my-gateway
spec:
  gatewayClassName: cilium
  infrastructure:
    annotations:
      service.beta.kubernetes.io/...
      service.kuberentes.io/...
  addresses:
  - type: IPAddress
    value: <LoadBalancer IP address>
  listeners:
  ...
```

Cilium e le specifiche del gateway di Kubernetes supportano le risorse GatewayClass, Gateway, HTTPRoute, GRPCRroute e ReferenceGrant.
+ Consulta le specifiche [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/HTTPRoute) e [GRPCRoute](https://gateway-api.sigs.k8s.io/api-types/grpcroute/GRPCRoute) per l’elenco dei campi disponibili.
+ Vedi gli esempi nella sezione [Implementazione del gateway di Cilium](#hybrid-nodes-ingress-cilium-gateway-deploy) seguente e gli esempi in [Cilium documentation](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#examples) per scoprire come utilizzare e configurare queste risorse.

## Implementazione del gateway di Cilium
<a name="hybrid-nodes-ingress-cilium-gateway-deploy"></a>

1. Crea un’applicazione di esempio. L’esempio seguente utilizza l’applicazione di microservizi di esempio [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Verifica che l’applicazione sia in esecuzione correttamente.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Crea un file denominato `my-gateway.yaml` con i seguenti contenuti. L’esempio di seguito utilizza l’annotazione `service.beta.kubernetes.io/aws-load-balancer-type: "external"` per impedire al provider AWS cloud legacy di creare un Classic Load Balancer per il servizio di tipo LoadBalancer che Cilium crea per la risorsa gateway.

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     infrastructure:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
     listeners:
     - protocol: HTTP
       port: 80
       name: web-gw
       allowedRoutes:
         namespaces:
           from: Same
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: HTTPRoute
   metadata:
     name: http-app-1
   spec:
     parentRefs:
     - name: my-gateway
       namespace: default
     rules:
     - matches:
       - path:
           type: PathPrefix
           value: /details
       backendRefs:
       - name: details
         port: 9080
   ```

1. Applica la risorsa del gateway al cluster.

   ```
   kubectl apply -f my-gateway.yaml
   ```

1. Conferma che la risorsa del gateway e il servizio corrispondente sono stati creati. In questa fase, si prevede che il campo `ADDRESS` della risorsa del gateway non sia popolato con un indirizzo IP o un nome host e che analogamente al servizio di tipo LoadBalancer per la risorsa del gateway non sia assegnato un indirizzo IP o un nome host.

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS   PROGRAMMED   AGE
   my-gateway   cilium             True         10s
   ```

   ```
   kubectl get svc cilium-gateway-my-gateway
   ```

   ```
   NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
   cilium-gateway-my-gateway   LoadBalancer   172.16.227.247   <pending>     80:30912/TCP   24s
   ```

1. Procedi [Tipo servizio LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) per configurare della risorsa del gateway per utilizzare un indirizzo IP allocato dal bilanciatore del carico IPAM di Cilium e [Tipo servizio NodePort](#hybrid-nodes-ingress-cilium-nodeport) o [Rete host](#hybrid-nodes-ingress-cilium-host-network) per configurare la risorsa del gateway per utilizzare NodePort o gli indirizzi di rete host.

## Installazione dell’ingresso di Cilium
<a name="hybrid-nodes-ingress-cilium-ingress-install"></a>

### Considerazioni
<a name="_considerations_3"></a>
+ Cilium deve essere configurato con `nodePort.enabled` impostato su `true` come mostrato negli esempi seguenti. Se utilizzi la funzionalità di sostituzione kube-proxy di Cilium, non devi impostare `nodePort.enabled` su `true`.
+ Cilium deve essere configurato con `envoy.enabled` impostato su `true` come mostrato negli esempi seguenti.
+ Con `ingressController.loadbalancerMode` impostato su `dedicated`, Cilium crea servizi dedicati per ogni risorsa dell’ingresso. Con `ingressController.loadbalancerMode` impostato su `shared`, Cilium crea un servizio condiviso di tipo LoadBalancer per tutte le risorse dell’ingresso nel cluster. Quando si utilizza la modalità del bilanciatore del carico `shared`, le impostazioni per il servizio condiviso come `labels`, `annotations`, `type` e `loadBalancerIP` sono configurate nella sezione dei valori Helm `ingressController.service`. Per ulteriori informazioni, consulta [Cilium Helm values reference](https://github.com/cilium/cilium/blob/v1.17.6/install/kubernetes/cilium/values.yaml#L887).
+ Con `ingressController.default` impostato su `true`, Cilium è configurato come controller di ingresso predefinito per il cluster e creerà voci di ingresso anche quando `ingressClassName` non è specificato nelle risorse di ingresso.
+ L’ingresso di Cilium può essere distribuito nel bilanciatore del carico (impostazione predefinita), nella porta del nodo o in modalità rete host. Quando Cilium è installato in modalità rete host, il servizio di tipo LoadBalancer e il servizio di tipo NodePort sono disabilitati. Per ulteriori informazioni, consulta [Rete host](#hybrid-nodes-ingress-cilium-host-network).
+ Imposta sempre `ingressController.service.annotations` su `service.beta.kubernetes.io/aws-load-balancer-type: "external"` nei valori Helm per impedire al provider AWS cloud legacy di creare un Classic Load Balancer per il servizio `cilium-ingress` predefinito creato dal [grafico Helm di Cilium](https://github.com/cilium/cilium/blob/main/install/kubernetes/cilium/templates/cilium-ingress-service.yaml).

### Prerequisiti
<a name="_prerequisites_3"></a>

1. Helm è installato nell’ambiente a riga di comando, consulta [Setup Helm instructions](helm.md).

1. Cilium è installato seguendo le istruzioni contenute in [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

### Procedura
<a name="_procedure_3"></a>

1. Crea un file denominato `cilium-ingress-values.yaml` con i seguenti contenuti. L’esempio seguente configura l’ingresso di Cilium per utilizzare la modalità `dedicated` del bilanciatore del carico predefinita e per utilizzare un proxy DaemonSet for Envoy separato `cilium-envoy` configurato per l’esecuzione solo su nodi ibridi.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: dedicated
     service:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Applica il file di valori Helm al cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-ingress-values.yaml
   ```

1. Verifica che l’operatore, l’agente e i pod Envoy Cilium siano in esecuzione.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Configurazione dell’ingresso di Cilium
<a name="hybrid-nodes-ingress-cilium-ingress-configure"></a>

L’ingresso di Cilium è abilitato sugli oggetti dell’ingresso impostando `ingressClassName` su `cilium`. I servizi che Cilium crea per le risorse dell’ingresso possono essere configurati con annotazioni sugli oggetti dell’ingresso quando si utilizza la modalità del bilanciatore del carico `dedicated` e nella configurazione Cilium/Helm quando si utilizza la modalità del bilanciatore del carico `shared`. Queste annotazioni vengono comunemente utilizzate dai controller dell’ingresso per configurare l’infrastruttura del bilanciatore del carico o altri attributi del Servizio come il tipo di servizio, la modalità del bilanciatore del carico, le porte e il passthrough TLS. Le annotazioni chiave sono descritte di seguito. Per un elenco completo delle annotazioni supportate, consulta [Cilium Ingress annotations](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#supported-ingress-annotations) nella documentazione di Cilium.


| Annotazione | Descrizione | 
| --- | --- | 
|   `ingress.cilium.io/loadbalancer-mode`   |   `dedicated`: servizio dedicato di tipo LoadBalancer per ogni risorsa dell’ingresso (impostazione predefinita).  `shared`: servizio singolo di tipo LoadBalancer per tutte le risorse dell’ingresso.  | 
|   `ingress.cilium.io/service-type`   |   `LoadBalancer`: il servizio sarà di tipo LoadBalancer (impostazione predefinita)  `NodePort`: il servizio sarà di tipo NodePort.  | 
|   `service.beta.kubernetes.io/aws-load-balancer-type`   |   `"external"`: impedisci al provider di servizi AWS cloud legacy di effettuare il provisioning di Classic Load Balancer for Services di tipo LoadBalancer.  | 
|   `lbipam.cilium.io/ips`   |  Elenco di indirizzi IP da allocare da Cilium LoadBalancer IPAM  | 

Cilium e le specifiche dell’ingresso di Kubernetes supportano regole di corrispondenza specifiche per Exact, Prefix e Implementation per i percorsi dell’ingresso. Cilium supporta l’espressione regolare come regola di corrispondenza specifica per l’implementazione. Per ulteriori informazioni, consulta [Ingress path types and precedence](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#ingress-path-types-and-precedence) e [Path types examples](https://docs.cilium.io/en/stable/network/servicemesh/path-types/) nella documentazione di Cilium e gli esempi nella sezione [Implementazione dell’ingresso di Cilium](#hybrid-nodes-ingress-cilium-ingress-deploy) di questa pagina.

Un esempio di oggetto dell’ingresso di Cilium è mostrato di seguito.

```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    service.beta.kuberentes.io/...
    service.kuberentes.io/...
spec:
  ingressClassName: cilium
  rules:
  ...
```

## Implementazione dell’ingresso di Cilium
<a name="hybrid-nodes-ingress-cilium-ingress-deploy"></a>

1. Crea un’applicazione di esempio. L’esempio seguente utilizza l’applicazione di microservizi di esempio [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Verifica che l’applicazione sia in esecuzione correttamente.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Crea un file denominato `my-ingress.yaml` con i seguenti contenuti. L’esempio seguente utilizza l’annotazione `service.beta.kubernetes.io/aws-load-balancer-type: "external"` per impedire al provider AWS cloud legacy di creare un Classic Load Balancer per il servizio di tipo LoadBalancer creato da Cilium per la risorsa dell’ingresso.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Applica la risorsa dell’ingresso al cluster.

   ```
   kubectl apply -f my-ingress.yaml
   ```

1. Conferma che la risorsa dell’ingresso e il servizio corrispondente sono stati creati. In questa fase, si prevede che il campo `ADDRESS` della risorsa dell’ingresso non sia popolato con un indirizzo IP o un nome host e che analogamente al servizio di tipo LoadBalancer condiviso o dedicato per la risorsa dell’ingresso non sia assegnato un indirizzo IP o un nome host.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS   PORTS   AGE
   my-ingress   cilium   *                 80      8s
   ```

   Per la modalità del bilanciatore del carico `shared` 

   ```
   kubectl -n kube-system get svc cilium-ingress
   ```

   ```
   NAME             TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress   LoadBalancer   172.16.217.48   <pending>     80:32359/TCP,443:31090/TCP   10m
   ```

   Per la modalità del bilanciatore del carico `dedicated` 

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   LoadBalancer   172.16.193.15   <pending>     80:32088/TCP,443:30332/TCP   25s
   ```

1. Procedi con [Tipo servizio LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) per configurare la risorsa dell’ingresso per utilizzare un indirizzo IP allocato dal bilanciatore del carico IPAM di Cilium e [Tipo servizio NodePort](#hybrid-nodes-ingress-cilium-nodeport) o [Rete host](#hybrid-nodes-ingress-cilium-host-network) per configurare la risorsa dell’ingresso per utilizzare NodePort o gli indirizzi di rete host.

## Tipo servizio LoadBalancer
<a name="hybrid-nodes-ingress-cilium-loadbalancer"></a>

### Infrastruttura del bilanciatore del carico esistente
<a name="_existing_load_balancer_infrastructure"></a>

Per impostazione predefinita, sia per l’ingresso che per il gateway di Cilium, quest’ultimo crea uno o più servizi Kubernetes di tipo LoadBalancer per le risorse ingresso/gateway. Gli attributi dei Servizi creati da Cilium possono essere configurati tramite le risorse dell’ingresso e del gateway. Quando crei risorse ingresso o gateway, l’indirizzo IP o i nomi host esposti esternamente per ingresso o gateway vengono allocati dall’infrastruttura del bilanciatore del carico, che in genere viene fornita da un controller di ingresso o gateway.

Molti controller dell’ingresso e del gateway utilizzano le annotazioni per rilevare e configurare l’infrastruttura del bilanciatore del carico. Le annotazioni per questi controller dell’ingresso e del gateway sono configurate sulle risorse dell’ingresso o del gateway come mostrato negli esempi precedenti. Fai riferimento alla documentazione del controller dell’ingresso o del gateway per le annotazioni che supporta e consulta [Kubernetes Ingress documentation](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) e [Kubernetes Gateway documentation](https://gateway-api.sigs.k8s.io/implementations/) per un elenco dei controller più diffusi.

**Importante**  
L’ingresso e il gateway di Cilium non possono essere utilizzati con il controller del bilanciatore del carico AWS e i Network Load Balancer (NLB) AWS con nodi ibridi EKS. Il tentativo di utilizzarli insieme porta a destinazioni non registrate, poiché l’NLB tenta di connettersi direttamente agli IP del Pod che supportano il servizio di tipo LoadBalancer quando l’NLB `target-type` è impostato su `ip` (requisito per l’utilizzo di NLB con carichi di lavoro in esecuzione su nodi ibridi EKS).

### Nessuna infrastruttura del bilanciatore del carico
<a name="_no_load_balancer_infrastructure"></a>

Se non disponi dell’infrastruttura del bilanciatore del carico e del corrispondente controller ingresso/gateway nel proprio ambiente, le risorse ingresso/gateway e i servizi corrispondenti di tipo LoadBalancer possono essere configurati per utilizzare gli indirizzi IP allocati dalla [gestione degli indirizzi IP del bilanciatore del carico](https://docs.cilium.io/en/stable/network/lb-ipam/) (LB IPAM) di Cilium. LB IPAM di Cilium può essere configurato con intervalli di indirizzi IP noti dall’ambiente on-premises e può utilizzare il supporto Border Gateway Protocol (BGP) integrato di Cilium o gli annunci L2 per pubblicizzare gli indirizzi IP LoadBalancer sulla rete on-premises.

L’esempio seguente mostra come configurare l’IPAM LB di Cilium con un indirizzo IP da utilizzare per le risorse ingresso/gateway e come configurare il piano di controllo di Cilium BGP per pubblicizzare l’indirizzo IP LoadBalancer con la rete on-premises. La funzionalità LB IPAM di Cilium è abilitata per impostazione predefinita, ma non viene attivata finché non viene creata una risorsa `CiliumLoadBalancerIPPool`.

#### Prerequisiti
<a name="_prerequisites_4"></a>
+ Ingresso e gateway di Cilium installati seguendo le istruzioni in [Installazione dell’ingresso di Cilium](#hybrid-nodes-ingress-cilium-ingress-install) o [Installazione del gateway di Cilium](#hybrid-nodes-ingress-cilium-gateway-install).
+ Risorse dell’ingresso o del gateway di Cilium con applicazione di esempio distribuita seguendo le istruzioni in [Implementazione dell’ingresso di Cilium](#hybrid-nodes-ingress-cilium-ingress-deploy) o [Implementazione del gateway di Cilium](#hybrid-nodes-ingress-cilium-gateway-deploy).
+ Il piano di controllo BGP di Cilium è abilitato seguendo le istruzioni contenute in [Configurazione di Cilium BGP per nodi ibridi](hybrid-nodes-cilium-bgp.md). Se non desideri utilizzare BGP, puoi saltare questo prerequisito, ma non sarai in grado di accedere alla tua risorsa dell’ingresso o del gateway finché l’indirizzo IP LoadBalancer allocato da Cilium LB IPAM non sarà instradabile sulla tua rete on-premises.

#### Procedura
<a name="_procedure_4"></a>

1. Facoltativamente, applica una patch alla risorsa dell’ingresso o del gateway per richiedere un indirizzo IP specifico da utilizzare per il servizio di tipo LoadBalancer. Se non richiedi un indirizzo IP specifico, Cilium ne assegnerà uno dall’intervallo di indirizzi IP configurato nella risorsa `CiliumLoadBalancerIPPool` nel passaggio successivo. Nei comandi seguenti, sostituisci `LB_IP_ADDRESS` con l’indirizzo IP da richiedere per il servizio di tipo LoadBalancer.

    **Gateway** 

   ```
   kubectl patch gateway -n default my-gateway --type=merge -p '{
     "spec": {
       "addresses": [{"type": "IPAddress", "value": "LB_IP_ADDRESS"}]
     }
   }'
   ```

    **Ingresso** 

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
     "metadata": {"annotations": {"lbipam.cilium.io/ips": "LB_IP_ADDRESS"}}
   }'
   ```

1. Crea un file denominato `cilium-lbip-pool-ingress.yaml` con una risorsa `CiliumLoadBalancerIPPool` per configurare l’intervallo di indirizzi IP del bilanciatore del carico per le tue risorse ingresso/gateway.
   + Se utilizzi l’ingresso di Cilium, Cilium applica automaticamente l’etichetta `cilium.io/ingress: "true"` ai Servizi che crea per le risorse dell’ingresso. Puoi utilizzare questa etichetta nel campo `serviceSelector` della definizione delle risorse `CiliumLoadBalancerIPPool` per selezionare i Servizi idonei per LB IPAM.
   + Se utilizzi il gateway di Cilium, puoi usare l’etichetta `gateway.networking.k8s.io/gateway-name` nei campi `serviceSelector` della definizione delle risorse per selezionare le risorse `CiliumLoadBalancerIPPool` gateway idonee per LB IPAM.
   + Sostituisci `LB_IP_CIDR` con l’intervallo di indirizzi IP da utilizzare per quelli del bilanciatore del carico. Per selezionare un singolo indirizzo IP, utilizza un CIDR `/32`. Per ulteriori informazioni, consulta [LoadBalancer IP Address Management](https://docs.cilium.io/en/stable/network/lb-ipam/) nella documentazione di Cilium.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumLoadBalancerIPPool
     metadata:
       name: bookinfo-pool
     spec:
       blocks:
       - cidr: "LB_IP_CIDR"
       serviceSelector:
         # if using Cilium Gateway
         matchExpressions:
           - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
         # if using Cilium Ingress
         matchLabels:
           cilium.io/ingress: "true"
     ```

1. Applica la risorsa `CiliumLoadBalancerIPPool` al cluster.

   ```
   kubectl apply -f cilium-lbip-pool-ingress.yaml
   ```

1. Conferma che un indirizzo IP è stato allocato da Cilium LB IPAM per la risorsa dell’ingresso/gateway.

    **Gateway** 

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS        PROGRAMMED   AGE
   my-gateway   cilium   LB_IP_ADDRESS    True         6m41s
   ```

    **Ingresso** 

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS        PORTS   AGE
   my-ingress   cilium   *       LB_IP_ADDRESS   80      10m
   ```

1. Crea un file denominato `cilium-bgp-advertisement-ingress.yaml` con una risorsa `CiliumBGPAdvertisement` per pubblicizzare l’intervallo di indirizzi IP del LoadBalancer per le risorse dell’ingresso/gateway. Se non utilizzi un proxy, puoi ignorare questo passaggio. L’indirizzo IP LoadBalancer utilizzato per la risorsa dell’ingresso/gateway deve essere instradabile sulla rete on-premises per poter interrogare il servizio nel passaggio successivo.

   ```
   apiVersion: cilium.io/v2alpha1
   kind: CiliumBGPAdvertisement
   metadata:
     name: bgp-advertisement-lb-ip
     labels:
       advertise: bgp
   spec:
     advertisements:
       - advertisementType: "Service"
         service:
           addresses:
             - LoadBalancerIP
         selector:
           # if using Cilium Gateway
           matchExpressions:
             - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
           # if using Cilium Ingress
           matchLabels:
             cilium.io/ingress: "true"
   ```

1. Applica la risorsa `CiliumBGPAdvertisement` al cluster.

   ```
   kubectl apply -f cilium-bgp-advertisement-ingress.yaml
   ```

1. Accedi al servizio utilizzando l’indirizzo IP assegnato da Cilium LB IPAM.

   ```
   curl -s http://LB_IP_ADDRESS:80/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

## Tipo servizio NodePort
<a name="hybrid-nodes-ingress-cilium-nodeport"></a>

Se non disponi dell’infrastruttura del bilanciatore del carico e del controller dell’ingresso corrispondente nel tuo ambiente, o se gestisci autonomamente la tua infrastruttura del bilanciatore del carico o utilizzi il bilanciatore del carico basato su DNS, puoi configurare l’ingresso di Cilium per creare Servizi di tipo NodePort per le risorse dell’ingresso. Quando si utilizza NodePort con l’ingresso di Cilium, il servizio di tipo NodePort è esposto su una porta su ciascun nodo nell’intervallo di porte 30000-32767. In questa modalità, quando il traffico raggiunge qualsiasi nodo del cluster su NodePort, viene quindi inoltrato a un pod che supporta il servizio, che può trovarsi sullo stesso nodo o su un nodo diverso.

**Nota**  
Il supporto del gateway di Cilium per i servizi NodePort è pianificato per la versione 1.18.x di Cilium ([\$127273](https://github.com/cilium/cilium/pull/27273))

### Prerequisiti
<a name="_prerequisites_5"></a>
+ Ingresso di Cilium installato seguendo le istruzioni in [Installazione dell’ingresso di Cilium](#hybrid-nodes-ingress-cilium-ingress-install).
+ Risorse dell’ingresso di Cilium con applicazione di esempio distribuita seguendo le istruzioni in [Implementazione dell’ingresso di Cilium](#hybrid-nodes-ingress-cilium-ingress-deploy).

### Procedura
<a name="_procedure_5"></a>

1. Applica una patch alla risorsa dell’ingresso `my-ingress` esistente per cambiarla dal tipo di servizio LoadBalancer a NodePort.

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
       "metadata": {"annotations": {"ingress.cilium.io/service-type": "NodePort"}}
   }'
   ```

   Se non hai creato la risorsa dell’ingresso, puoi crearla applicando la seguente definizione dell’ingresso al tuo cluster. Nota, la definizione dell’ingresso riportata di seguito utilizza l’applicazione di esempio Istio Bookinfo descritta in [Implementazione dell’ingresso di Cilium](#hybrid-nodes-ingress-cilium-ingress-deploy).

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
       "ingress.cilium.io/service-type": "NodePort"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Conferma che la risorsa del servizio per l’ingresso è stata aggiornata per utilizzare il tipo di servizio NodePort. Nota la porta per il protocollo HTTP nell’output. Nell’esempio seguente, questa è la porta HTTP `32353`, che verrà utilizzata in un passaggio successivo per interrogare il servizio. Il vantaggio dell’utilizzo dell’ingresso di Cilium con il servizio di tipo NodePort è che puoi applicare il routing basato su percorso e host, nonché policy di rete per il traffico in ingresso, cosa che non puoi fare per un servizio standard di tipo NodePort senza l’ingresso.

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   NodePort   172.16.47.153   <none>        80:32353/TCP,443:30253/TCP   27m
   ```

1. Ottieni l’indirizzo IP dei nodi nel cluster.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Accedi al servizio di tipo NodePort utilizzando gli indirizzi IP dei tuoi nodi e il NodePort catturato sopra. Nell’esempio seguente l’indirizzo IP del nodo utilizzato è `10.80.146.32` e il NodePort è `32353`. Sostituisci questi valori per il tuo ambiente.

   ```
   curl -s http://10.80.146.32:32353/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

## Rete host
<a name="hybrid-nodes-ingress-cilium-host-network"></a>

Analogamente al servizio di tipo NodePort, se non disponi di un’infrastruttura del bilanciatore del carico e di un controller dell’ingresso o del gateway, o se gestisci automaticamente il bilanciatore del carico con un bilanciatore del carico esterno, puoi configurare l’ingresso di Cilium e il gateway di Cilium per esporre le risorse dell’ingresso e del gateway direttamente sulla rete host. Quando la modalità di rete host è abilitata per una risorsa dell’ingresso o del gateway, le modalità Service di tipo LoadBalancer e NodePort vengono disabilitate automaticamente, la modalità di rete host si esclude a vicenda con queste modalità alternative per ogni risorsa dell’ingresso o del gateway. Rispetto al servizio di tipo NodePort, la modalità di rete host offre una maggiore flessibilità per la gamma di porte che possono essere utilizzate (non è limitata all’intervallo NodePort 30000-32767) ed è possibile configurare un sottoinsieme di nodi in cui i proxy Envoy vengono eseguiti sulla rete host.

### Prerequisiti
<a name="_prerequisites_6"></a>
+ Ingresso e gateway di Cilium installati seguendo le istruzioni in [Installazione dell’ingresso di Cilium](#hybrid-nodes-ingress-cilium-ingress-install) o [Installazione del gateway di Cilium](#hybrid-nodes-ingress-cilium-gateway-install).

### Procedura
<a name="_procedure_6"></a>

#### Gateway
<a name="_gateway"></a>

1. Creare un archivio denominato `cilium-gateway-host-network.yaml` con i seguenti contenuti.

   ```
   gatewayAPI:
     enabled: true
     hostNetwork:
       enabled: true
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: gateway
   ```

1. Applica la configurazione del gateway di Cilium della rete host al cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-gateway-host-network.yaml
   ```

   Se non hai creato la risorsa del gateway, puoi crearla applicando la seguente definizione di gateway al tuo cluster. La definizione del gateway riportata di seguito utilizza l’applicazione di esempio Istio Bookinfo descritta in [Implementazione del gateway di Cilium](#hybrid-nodes-ingress-cilium-gateway-deploy). Nell’esempio seguente, la risorsa del gateway è configurata per utilizzare la porta `8111` per il listener HTTP, che è la porta listener condivisa per i proxy Envoy in esecuzione sulla rete host. Se stai utilizzando una porta privilegiata (inferiore a 1023) per la risorsa del gateway, fai riferimento a [Cilium documentation](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#bind-to-privileged-port) per le istruzioni.

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     listeners:
     - protocol: HTTP
       port: 8111
       name: web-gw
       allowedRoutes:
         namespaces:
           from: Same
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: HTTPRoute
   metadata:
     name: http-app-1
   spec:
     parentRefs:
     - name: my-gateway
       namespace: default
     rules:
     - matches:
       - path:
           type: PathPrefix
           value: /details
       backendRefs:
       - name: details
         port: 9080
   ```

   Puoi osservare la configurazione Cilium Envoy applicata con il seguente comando.

   ```
   kubectl get cec cilium-gateway-my-gateway -o yaml
   ```

   Puoi ottenere la porta del listener Envoy per il servizio `cilium-gateway-my-gateway` con il seguente comando. In questo esempio, la porta del listener condiviso è `8111`.

   ```
   kubectl get cec cilium-gateway-my-gateway -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Ottieni l’indirizzo IP dei nodi nel cluster.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Accedi al servizio utilizzando gli indirizzi IP dei nodi e la porta del listener per la risorsa `cilium-gateway-my-gateway`. Nell’esempio seguente l’indirizzo IP del nodo utilizzato è `10.80.146.32` e la porta del listener è `8111`. Sostituisci questi valori per il tuo ambiente.

   ```
   curl -s http://10.80.146.32:8111/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

#### Ingress
<a name="_ingress"></a>

A causa di un problema con Cilium upstream ([\$134028](https://github.com/cilium/cilium/issues/34028)), l’ingresso di Cilium in modalità rete host richiede l’utilizzo di `loadbalancerMode: shared`, che crea un unico servizio di tipo ClusterIP per tutte le risorse dell’ingresso nel cluster. Se stai utilizzando una porta privilegiata (inferiore a 1023) per la risorsa dell’ingresso, fai riferimento a [Cilium documentation](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#bind-to-privileged-port) per le istruzioni.

1. Crea un archivio denominato `cilium-ingress-host-network.yaml` con i seguenti contenuti.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: shared
     # This is a workaround for the upstream Cilium issue
     service:
       externalTrafficPolicy: null
       type: ClusterIP
     hostNetwork:
       enabled: true
       # ensure the port does not conflict with other services on the node
       sharedListenerPort: 8111
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: ingress
   ```

1. Applica la configurazione dell’ingresso di Cilium della rete host al tuo cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-ingress-host-network.yaml
   ```

   Se non hai creato la risorsa dell’ingresso, puoi crearla applicando la seguente definizione dell’ingresso al tuo cluster. La definizione dell’ingresso riportata di seguito utilizza l’applicazione di esempio Istio Bookinfo descritta in [Implementazione dell’ingresso di Cilium](#hybrid-nodes-ingress-cilium-ingress-deploy).

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

   Puoi osservare la configurazione Cilium Envoy applicata con il seguente comando.

   ```
   kubectl get cec -n kube-system cilium-ingress -o yaml
   ```

   Puoi ottenere la porta del listener Envoy per il servizio `cilium-ingress` con il seguente comando. In questo esempio, la porta del listener condiviso è `8111`.

   ```
   kubectl get cec -n kube-system cilium-ingress -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Ottieni l’indirizzo IP dei nodi nel cluster.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Accedi al servizio utilizzando gli indirizzi IP dei tuoi nodi e la `sharedListenerPort` per la risorsa`cilium-ingress`. Nell’esempio seguente l’indirizzo IP del nodo utilizzato è `10.80.146.32` e la porta del listener è `8111`. Sostituisci questi valori per il tuo ambiente.

   ```
   curl -s http://10.80.146.32:8111/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

# Configurazione dei servizi di tipo LoadBalancer per nodi ibridi
<a name="hybrid-nodes-load-balancing"></a>

Questo argomento descrive come configurare il bilanciamento del carico di livello 4 (L4) per le applicazioni in esecuzione su Amazon EKS Hybrid Nodes. I servizi Kubernetes di tipo LoadBalancer vengono utilizzati per esporre le applicazioni Kubernetes esterne al cluster. I servizi di tipo LoadBalancer vengono comunemente utilizzati con un’infrastruttura di bilanciamento del carico fisico in ambiente cloud oppure on-premises per servire il traffico del carico di lavoro. Questa infrastruttura di bilanciamento del carico viene in genere fornita con un controller specifico per l’ambiente.

 AWS supporta AWS Network Load Balancer (NLB) e Cilium per i servizi di tipo LoadBalancer in esecuzione su nodi ibridi EKS. La decisione di utilizzare NLB o Cilium si basa sulla fonte del traffico dell’applicazione. Se il traffico dell’applicazione proviene da una Regione AWS, AWS consiglia di utilizzare NLB di AWS e il controller del bilanciatore del carico di AWS. Se il traffico delle applicazioni proviene dall’ambiente locale on-premises o edge, AWS consiglia di utilizzare le funzionalità di bilanciamento del carico integrate di Cilium, che possono essere utilizzate con o senza l’infrastruttura di bilanciamento del carico nell’ambiente.

Per il bilanciamento del carico del traffico delle applicazioni di livello 7 (L7), consulta [Configurazione dell’ingresso Kubernetes per nodi ibridi](hybrid-nodes-ingress.md). Per informazioni generali sul bilanciamento del carico con EKS, consulta [Best Practices for Load Balancing](https://docs.aws.amazon.com/eks/latest/best-practices/load-balancing.html).

## Network Load Balancer di AWS
<a name="hybrid-nodes-service-lb-nlb"></a>

Puoi utilizzare il [Controller di bilanciatore del carico di AWS](aws-load-balancer-controller.md) e NLB con il tipo di destinazione `ip` per i carichi di lavoro in esecuzione su nodi ibridi. Quando utilizzi il tipo di destinazione `ip`, NLB inoltra il traffico direttamente ai pod, aggirando il percorso di rete del livello di servizio. Affinché NLB raggiunga le destinazioni IP dei pod sui nodi ibridi, i pod CIDR on-premises devono essere instradabili sulla rete on-premises. Inoltre, il Controller del bilanciatore del carico di AWS utilizza webhook e richiede una comunicazione diretta dal piano di controllo EKS. Per ulteriori informazioni, consulta [Configurazione di webhook per nodi ibridi](hybrid-nodes-webhooks.md).
+ Consulta [Esecuzione del routing del traffico TCP e UDP con Network Load Balancer](network-load-balancing.md) per i requisiti di configurazione delle sottoreti, consulta [Installa il AWS Load Balancer Controller con Helm](lbc-helm.md) e [Best Practices for Load Balancing](https://docs.aws.amazon.com/eks/latest/best-practices/load-balancing.html) per ulteriori informazioni sul Network Load Balancer di AWS e il Controller del bilanciatore del carico di AWS.
+ Consulta le [AWS Load Balancer Controller NLB configurations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/nlb/) per le configurazioni che possono essere applicate ai servizi di tipo `LoadBalancer` con il Network Load Balancer di AWS.

### Prerequisiti
<a name="_prerequisites"></a>
+ Cilium è installato seguendo le istruzioni contenute in [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).
+ Il piano di controllo BGP di Cilium è abilitato seguendo le istruzioni contenute in [Configurazione di Cilium BGP per nodi ibridi](hybrid-nodes-cilium-bgp.md). Se non desideri utilizzare BGP, devi utilizzare un metodo alternativo per rendere i pod CIDR on-premises instradabili sulla rete on-premises; consulta [CIDR dei pod remoti instradabili](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs) per ulteriori informazioni.
+ Helm è installato nell’ambiente a riga di comando, consulta [Setup Helm instructions](helm.md).
+ eksctl è installato nell’ambiente a riga di comando, consulta [Setup eksctl instructions](install-kubectl.md#eksctl-install-update).

### Procedura
<a name="_procedure"></a>

1. Scaricare una policy IAM per il Controller del bilanciatore del carico AWS che consente di effettuare chiamate alle API AWS per conto dell’utente.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/docs/install/iam_policy.json
   ```

1. Creare una policy IAM utilizzando le policy scaricate nel passaggio precedente.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```

1. Sostituisci i valori per il nome del cluster (`CLUSTER_NAME`), la Regione AWS (`AWS_REGION`) e l’ID dell’account AWS (`AWS_ACCOUNT_ID`) con le tue impostazioni ed esegui il comando seguente.

   ```
   eksctl create iamserviceaccount \
       --cluster=CLUSTER_NAME \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region AWS_REGION \
       --approve
   ```

1. Aggiungi il repository di grafici Helm eks-charts. AWS conserva questo repository su GitHub.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

1. Aggiorna il repository locale per assicurarti di avere i grafici più recenti.

   ```
   helm repo update eks
   ```

1. Installazione del Controller del bilanciatore del carico AWS. Sostituisci i valori per il nome del cluster (`CLUSTER_NAME`), la Regione AWS (`AWS_REGION`), l’ID del VPC (`VPC_ID`) e la versione del Controller del bilanciatore del carico di AWS del grafico Helm (`AWS_LBC_HELM_VERSION`) con le tue impostazioni. Puoi trovare la versione più recente del grafico Helm eseguendo `helm search repo eks/aws-load-balancer-controller --versions`. Se stai eseguendo un cluster in modalità mista con nodi ibridi e nodi nel Cloud di AWS, puoi eseguire il Controller del bilanciatore del carico di AWS sui nodi cloud seguendo le istruzioni riportate in [Controller del bilanciatore del carico AWS](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-lbc).

   ```
   helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
     -n kube-system \
     --version AWS_LBC_HELM_VERSION \
     --set clusterName=CLUSTER_NAME \
     --set region=AWS_REGION \
     --set vpcId=VPC_ID \
     --set serviceAccount.create=false \
     --set serviceAccount.name=aws-load-balancer-controller
   ```

1. Verifica che il Controller del bilanciatore del carico di AWS sia stato installato correttamente.

   ```
   kubectl get -n kube-system deployment aws-load-balancer-controller
   ```

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

1. Definisci un’applicazione di esempio in un file denominato `tcp-sample-app.yaml`. L’esempio seguente utilizza una semplice implementazione NGINX con una porta TCP.

   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: tcp-sample-app
     namespace: default
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
           - name: nginx
             image: public.ecr.aws/nginx/nginx:1.23
             ports:
               - name: tcp
                 containerPort: 80
   ```

1. Applica l’implementazione al cluster.

   ```
   kubectl apply -f tcp-sample-app.yaml
   ```

1. Definisci un servizio di tipo LoadBalancer per l’implementazione in un file denominato `tcp-sample-service.yaml`.

   ```
   apiVersion: v1
   kind: Service
   metadata:
     name: tcp-sample-service
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: external
       service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
       service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
   spec:
     ports:
       - port: 80
         targetPort: 80
         protocol: TCP
     type: LoadBalancer
     selector:
       app: nginx
   ```

1. Applica la mappa di configurazione al cluster.

   ```
   kubectl apply -f tcp-sample-service.yaml
   ```

1. Il provisioning dell’NLB per il Servizio può richiedere alcuni minuti. Una volta effettuato il provisioning dell’NLB, al Servizio verrà assegnato un indirizzo che corrisponde al nome DNS dell’implementazione dell’NLB.

   ```
   kubectl get svc tcp-sample-service
   ```

   ```
   NAME                 TYPE           CLUSTER-IP       EXTERNAL-IP                                                                    PORT(S)        AGE
   tcp-sample-service   LoadBalancer   172.16.115.212   k8s-default-tcpsampl-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.<region>.amazonaws.com   80:30396/TCP   8s
   ```

1. Accedi al Servizio utilizzando l’indirizzo dell’NLB.

   ```
   curl k8s-default-tcpsampl-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.<region>.amazonaws.com
   ```

   Di seguito viene riportato un output di esempio.

   ```
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welcome to nginx!</title>
   [...]
   ```

1. Eliminare tutte le risorse create.

   ```
   kubectl delete -f tcp-sample-service.yaml
   kubectl delete -f tcp-sample-app.yaml
   ```

## Bilanciamento del carico Cilium all’interno del cluster
<a name="hybrid-nodes-service-lb-cilium"></a>

Cilium può essere utilizzato come bilanciatore del carico all’interno del cluster per i carichi di lavoro in esecuzione su nodi ibridi EKS, il che può essere utile per ambienti che non dispongono di un’infrastruttura di bilanciamento del carico. Le funzionalità di bilanciamento del carico di Cilium si basano su una combinazione di funzionalità di Cilium, tra cui la sostituzione del kube-proxy, la gestione indirizzi IP (IPAM) del bilanciatore del carico e il piano di controllo BGP. Le responsabilità di queste funzionalità sono descritte di seguito:
+  **Sostituzione del Cilium proxy-kube**: gestisce il traffico del servizio di routing verso i pod di backend.
+  **IPAM del bilanciatore del carico Cilium**: gestisce gli indirizzi IP che possono essere assegnati a servizi di tipo `LoadBalancer`.
+  **Piano di controllo BGP Cilium**: pubblicizza gli indirizzi IP assegnati dalla IPAM del bilanciatore del carico alla rete on-premises.

Se non utilizzi la sostituzione del kube-proxy Cilium, puoi comunque utilizzare l’IPAM del bilanciatore del carico e il Piano di controllo BGP Cilium per allocare e assegnare indirizzi IP per i servizi di tipo LoadBalancer. Se non utilizzi la sostituzione del kube-proxy Cilium, il bilanciamento del carico dei servizi sui pod di backend viene gestito per impostazione predefinita dalle regole kube-proxy e iptables in EKS.

### Prerequisiti
<a name="_prerequisites_2"></a>
+ Cilium è stato installato seguendo le istruzioni contenute in [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md) con o senza la sostituzione di kube-proxy abilitata. La sostituzione del kube-proxy Cilium richiede l’esecuzione di un sistema operativo con un kernel Linux recente come v4.19.57, v5.1.16 o v5.2.0. Tutte le versioni recenti dei sistemi operativi supportati per l’uso con nodi ibridi soddisfano questi criteri, ad eccezione di Red Hat Enterprise Linux (RHEL) 8.x.
+ Il piano di controllo BGP di Cilium è abilitato seguendo le istruzioni contenute in [Configurazione di Cilium BGP per nodi ibridi](hybrid-nodes-cilium-bgp.md). Se non desideri utilizzare BGP, devi utilizzare un metodo alternativo per rendere i pod CIDR on-premises instradabili sulla rete on-premises; consulta [CIDR dei pod remoti instradabili](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs) per ulteriori informazioni.
+ Helm è installato nell’ambiente a riga di comando, consulta [Setup Helm instructions](helm.md).

### Procedura
<a name="_procedure_2"></a>

1. Crea un file denominato `cilium-lbip-pool-loadbalancer.yaml` con una risorsa `CiliumLoadBalancerIPPool` per configurare l’intervallo di indirizzi IP del bilanciatore del carico per i tuoi servizi di tipo LoadBalancer.
   + Sostituisci `LB_IP_CIDR` con l’intervallo di indirizzi IP da utilizzare per quelli del bilanciatore del carico. Per selezionare un singolo indirizzo IP, utilizza un CIDR `/32`. Per ulteriori informazioni, consulta [LoadBalancer IP Address Management](https://docs.cilium.io/en/stable/network/lb-ipam/) nella documentazione di Cilium.
   + Il campo `serviceSelector` è configurato in modo che corrisponda al nome del servizio che creerai in un passaggio successivo. Con questa configurazione, gli IP di questo pool verranno assegnati solo ai servizi con lo stesso nome `tcp-sample-service`.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumLoadBalancerIPPool
     metadata:
       name: tcp-service-pool
     spec:
       blocks:
       - cidr: "LB_IP_CIDR"
       serviceSelector:
         matchLabels:
           io.kubernetes.service.name: tcp-sample-service
     ```

1. Applica la risorsa `CiliumLoadBalancerIPPool` al cluster.

   ```
   kubectl apply -f cilium-lbip-pool-loadbalancer.yaml
   ```

1. Verifica che nel pool sia disponibile almeno un indirizzo IP.

   ```
   kubectl get ciliumloadbalancerippools.cilium.io
   ```

   ```
   NAME               DISABLED   CONFLICTING   IPS AVAILABLE   AGE
   tcp-service-pool   false      False         1               24m
   ```

1. Crea un file denominato `cilium-bgp-advertisement-loadbalancer.yaml` con una risorsa `CiliumBGPAdvertisement` per pubblicizzare l’indirizzo IP del bilanciatore del carico per il servizio che creerai nel passaggio successivo. Se non utilizzi un BGP di Cilium, puoi ignorare questo passaggio. L’indirizzo IP del bilanciatore del carico utilizzato per il servizio deve essere instradabile sulla rete on-premises per consentire all’utente di interrogare il servizio nella Passaggio finale.
   + Il campo `advertisementType` è impostato su `Service` e `service.addresses` è impostato su `LoadBalancerIP` per pubblicizzare solo l’`LoadBalancerIP` per i servizi di tipo `LoadBalancer`.
   + Il campo `selector` è configurato in modo che corrisponda al nome del servizio che creerai in un passaggio successivo. Con questa configurazione, verrà pubblicizzato solo l’`LoadBalancerIP` per i servizi con lo stesso nome `tcp-sample-service`.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPAdvertisement
     metadata:
       name: bgp-advertisement-tcp-service
       labels:
         advertise: bgp
     spec:
       advertisements:
         - advertisementType: "Service"
           service:
             addresses:
               - LoadBalancerIP
           selector:
             matchLabels:
               io.kubernetes.service.name: tcp-sample-service
     ```

1. Applica la risorsa `CiliumBGPAdvertisement` al cluster. Se non utilizzi un BGP di Cilium, puoi ignorare questo passaggio.

   ```
   kubectl apply -f cilium-bgp-advertisement-loadbalancer.yaml
   ```

1. Definisci un’applicazione di esempio in un file denominato `tcp-sample-app.yaml`. L’esempio seguente utilizza una semplice implementazione NGINX con una porta TCP.

   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: tcp-sample-app
     namespace: default
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
           - name: nginx
             image: public.ecr.aws/nginx/nginx:1.23
             ports:
               - name: tcp
                 containerPort: 80
   ```

1. Applica l’implementazione al cluster.

   ```
   kubectl apply -f tcp-sample-app.yaml
   ```

1. Definisci un servizio di tipo LoadBalancer per l’implementazione in un file denominato `tcp-sample-service.yaml`.
   + Puoi richiedere un indirizzo IP specifico dal pool di IP del bilanciatore del carico con l’annotazione `lbipam.cilium.io/ips` sull’oggetto del servizio. Puoi rimuovere questa annotazione se non desideri richiedere un indirizzo IP specifico per il servizio.
   + Il campo della specifica `loadBalancerClass` è obbligatorio per impedire al provider cloud di AWS precedente di creare un Classic Load Balancer per il servizio. Nell’esempio seguente, questo è configurato su `io.cilium/bgp-control-plane` per utilizzare il piano di controllo BGP di Cilium come classe di bilanciatore del carico. In alternativa, questo campo può essere configurato su `io.cilium/l2-announcer` per utilizzare la [Funzionalità L2 Announcements](https://docs.cilium.io/en/latest/network/l2-announcements/) di Cilium (attualmente in versione beta e non supportata ufficialmente da AWS).

     ```
     apiVersion: v1
     kind: Service
     metadata:
       name: tcp-sample-service
       namespace: default
       annotations:
         lbipam.cilium.io/ips: "LB_IP_ADDRESS"
     spec:
       loadBalancerClass: io.cilium/bgp-control-plane
       ports:
         - port: 80
           targetPort: 80
           protocol: TCP
       type: LoadBalancer
       selector:
         app: nginx
     ```

1. Applica il servizio al cluster. Il servizio verrà creato con un indirizzo IP esterno che puoi utilizzare per accedere all’applicazione.

   ```
   kubectl apply -f tcp-sample-service.yaml
   ```

1. Verifica che il servizio sia stato creato correttamente e che gli sia stato assegnato un IP dal `CiliumLoadBalancerIPPool` creato nel passaggio precedente.

   ```
   kubectl get svc tcp-sample-service
   ```

   ```
   NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
   tcp-sample-service   LoadBalancer   172.16.117.76   LB_IP_ADDRESS   80:31129/TCP   14m
   ```

1. Se utilizzi Cilium in modalità kube-proxy sostitutivo, puoi confermare che Cilium sta gestendo il bilanciamento del carico per il servizio eseguendo il comando seguente. Nell’output seguente, gli indirizzi `10.86.2.x` sono gli indirizzi IP dei pod di backend per il servizio.

   ```
   kubectl -n kube-system exec ds/cilium -- cilium-dbg service list
   ```

   ```
   ID   Frontend               Service Type   Backend
   ...
   41   LB_IP_ADDRESS:80/TCP   LoadBalancer   1 => 10.86.2.76:80/TCP (active)
                                              2 => 10.86.2.130:80/TCP (active)
                                              3 => 10.86.2.141:80/TCP (active)
   ```

1. Conferma che Cilium stia pubblicizzando l’indirizzo IP sulla rete on-premises tramite BGP. Nell’esempio seguente ci sono cinque nodi ibridi, ciascuno dei quali pubblicizza `LB_IP_ADDRESS` per il servizio `tcp-sample-service` sulla rete on-premises.

   ```
   Node                   VRouter      Prefix             NextHop   Age     Attrs
   mi-026d6a261e355fba7   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-082f73826a163626e   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-09183e8a3d755abf6   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0d78d815980ed202d   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0daa253999fe92daa   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   ```

1. Accedi al servizio utilizzando l’indirizzo IP del bilanciatore del carico assegnato.

   ```
   curl LB_IP_ADDRESS
   ```

   Di seguito viene riportato un output di esempio.

   ```
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welcome to nginx!</title>
   [...]
   ```

1. Eliminare tutte le risorse create.

   ```
   kubectl delete -f tcp-sample-service.yaml
   kubectl delete -f tcp-sample-app.yaml
   kubectl delete -f cilium-lb-ip-pool.yaml
   kubectl delete -f cilium-bgp-advertisement.yaml
   ```

# Configurazione delle policy di rete Kubernetes per i nodi ibridi
<a name="hybrid-nodes-network-policies"></a>

 AWS supporta le policy di rete Kubernetes (Livello 3/Livello 4) per il traffico in ingresso e in uscita dei pod quando si utilizza Cilium come CNI con EKS Hybrid Nodes. Se utilizzi cluster EKS con nodi nel cloud AWS, AWS supporta le [CNI di Amazon VPC per le policy di rete Kubernetes](cni-network-policy.md).

Questo argomento descrive come configurare le policy di rete Cilium e Kubernetes con EKS Hybrid Nodes. Per informazioni dettagliate sulle policy di rete Kubernetes, consulta le [Policy di rete Kubernetes](https://kubernetes.io/docs/concepts/services-networking/network-policies/) nella documentazione di Kubernetes.

## Configurazione delle policy di rete
<a name="hybrid-nodes-configure-network-policies"></a>

### Considerazioni
<a name="_considerations"></a>
+  AWS supporta le policy di rete Kubernetes upstream e le specifiche per l’ingresso e l’uscita dei pod. Attualmente AWS non supporta né `CiliumNetworkPolicy` né `CiliumClusterwideNetworkPolicy`.
+ Il valore Helm `policyEnforcementMode` può essere utilizzato per controllare il comportamento predefinito di applicazione delle policy di Cilium. Il comportamento predefinito consente tutto il traffico in uscita e in ingresso. Quando un endpoint viene selezionato da una policy di rete, passa allo stato predefinito di negazione, in cui è consentito solo il traffico esplicitamente consentito. Consulta la documentazione di Cilium per ulteriori informazioni su [default policy mode](https://docs.cilium.io/en/stable/security/policy/intro/#policy-mode-default) e [policy enforcement modes](https://docs.cilium.io/en/stable/security/policy/intro/#policy-enforcement-modes).
+ Se stai passando da `policyEnforcementMode` a un’installazione Cilium esistente, devi riavviare l’agente Cilium DaemonSet per applicare la nuova modalità di applicazione delle policy.
+ Utilizza `namespaceSelector` e `podSelector` per consentire o negare il traffico da/verso namespace e pod con etichette corrispondenti. `namespaceSelector` e `podSelector` possono essere usati con `matchLabels` o `matchExpressions` per selezionare namespace e pod in base alle relative etichette.
+ Utilizza `ingress.ports` e `egress.ports` per consentire o negare il traffico da/verso porte e protocolli.
+ Il campo `ipBlock` non può essere utilizzato per consentire o negare selettivamente il traffico da/verso gli indirizzi IP dei pod ([\$19209](https://github.com/cilium/cilium/issues/9209)). L’uso dei selettori `ipBlock` per gli IP dei nodi è una funzionalità beta di Cilium e non è supportata da AWS.
+ Consulta la [Risorsa NetworkPolicy](https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource) nella documentazione di Kubernetes per informazioni sui campi disponibili per le policy di rete Kubernetes.

### Prerequisiti
<a name="_prerequisites"></a>
+ Cilium è installato seguendo le istruzioni contenute in [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).
+ Helm è installato nell’ambiente a riga di comando, consulta [Setup Helm instructions](helm.md).

### Procedura
<a name="_procedure"></a>

La procedura seguente imposta le policy di rete per un’applicazione di microservizi di esempio, in modo che i componenti possano comunicare solo con altri componenti necessari per il funzionamento dell’applicazione. La procedura utilizza l’applicazione di microservizi di esempio [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

L’applicazione Bookinfo è composta da quattro microservizi separati con le seguenti relazioni:
+  **productpage**. Il microservizio productpage chiama i dettagli ed esamina i microservizi per popolare la pagina.
+  **details**. Il microservizio details contiene informazioni sui libri.
+  **reviews**. Il microservizio reviews contiene le recensioni dei libri. Chiama anche il microservizio di rating.
+  **ratings**. Il microservizio ratings contiene le informazioni sulla classificazione dei libri che accompagnano la recensione del libro.

  1. Crea un’applicazione di esempio.

     ```
     kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
     ```

  1. Conferma che l’applicazione funzioni correttamente e annota l’indirizzo IP del pod per il microservizio productpage. Utilizzerai questo indirizzo IP del pod per interrogare ogni microservizio nei passaggi successivi.

     ```
     kubectl get pods -o wide
     ```

     ```
     NAME                              READY   STATUS    RESTARTS   AGE   IP            NODE
     details-v1-766844796b-9wff2       1/1     Running   0          7s    10.86.3.7     mi-0daa253999fe92daa
     productpage-v1-54bb874995-lwfgg   1/1     Running   0          7s    10.86.2.193   mi-082f73826a163626e
     ratings-v1-5dc79b6bcd-59njm       1/1     Running   0          7s    10.86.2.232   mi-082f73826a163626e
     reviews-v1-598b896c9d-p2289       1/1     Running   0          7s    10.86.2.47    mi-026d6a261e355fba7
     reviews-v2-556d6457d-djktc        1/1     Running   0          7s    10.86.3.58    mi-0daa253999fe92daa
     reviews-v3-564544b4d6-g8hh4       1/1     Running   0          7s    10.86.2.69    mi-09183e8a3d755abf6
     ```

  1. Crea un pod che verrà utilizzato ovunque per testare le policy di rete. Ricorda che il pod viene creato nel namespace `default` con l’etichetta `access: true`.

     ```
     kubectl run curl-pod --image=curlimages/curl -i --tty --labels=access=true --namespace=default --overrides='{"spec": { "nodeSelector": {"eks.amazonaws.com/compute-type": "hybrid"}}}' -- /bin/sh
     ```

  1. Testa l’accesso al microservizio productpage. Nell’esempio seguente, utilizziamo l’indirizzo IP del pod productpage (`10.86.2.193`) per interrogare il microservizio. Sostituiscilo con l’indirizzo IP del pod productpage nel tuo ambiente.

     ```
     curl -s http://10.86.2.193:9080/productpage | grep -o "<title>.*</title>"
     ```

     ```
     <title>Simple Bookstore App</title>
     ```

  1. Puoi uscire dal pod test curl digitando `exit` e puoi ricollegarti al pod eseguendo il seguente comando.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

  1. Per dimostrare gli effetti delle policy di rete nei passaggi seguenti, creiamone innanzitutto una che neghi tutto il traffico per i microservizi BookInfo. Crea un file chiamato `network-policy-deny-bookinfo.yaml` che definisce la policy di negazione della rete.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: deny-bookinfo
       namespace: default
     spec:
       podSelector:
         matchExpressions:
         - key: app
           operator: In
           values: ["productpage", "details", "reviews", "ratings"]
       policyTypes:
       - Ingress
       - Egress
     ```

  1. Applica la policy di negazione della rete al cluster.

     ```
     kubectl apply -f network-policy-default-deny-bookinfo.yaml
     ```

  1. Testa l’accesso all’applicazione BookInfo. Nell’esempio seguente, utilizziamo l’indirizzo IP del pod productpage (`10.86.2.193`) per interrogare il microservizio. Sostituiscilo con l’indirizzo IP del pod productpage nel tuo ambiente.

     ```
     curl http://10.86.2.193:9080/productpage --max-time 10
     ```

     ```
     curl: (28) Connection timed out after 10001 milliseconds
     ```

  1. Crea un file chiamato `network-policy-productpage.yaml` che definisce la policy di rete di productpage. La policy ha le seguenti regole:
     + Consente il traffico in ingresso dai pod con l’etichetta `access: true` (il pod curl creato nel passaggio precedente)
     + Consente il traffico TCP in uscita sulla porta `9080` per i microservizi details, reviews e ratings
     + Consente il traffico TCP/UDP in uscita sulla porta `53` per CoreDNS che viene eseguita nel namespace `kube-system`

       ```
       apiVersion: networking.k8s.io/v1
       kind: NetworkPolicy
       metadata:
         name: productpage-policy
         namespace: default
       spec:
         podSelector:
           matchLabels:
             app: productpage
         policyTypes:
         - Ingress
         - Egress
         ingress:
         - from:
           - podSelector:
               matchLabels:
                 access: "true"
         egress:
         - to:
           - podSelector:
               matchExpressions:
               - key: app
                 operator: In
                 values: ["details", "reviews", "ratings"]
           ports:
           - port: 9080
             protocol: TCP
         - to:
           - namespaceSelector:
               matchLabels:
                 kubernetes.io/metadata.name: kube-system
             podSelector:
               matchLabels:
                 k8s-app: kube-dns
           ports:
           - port: 53
             protocol: UDP
           - port: 53
             protocol: TCP
       ```

  1. Applica la policy di rete productpage al cluster.

     ```
     kubectl apply -f network-policy-productpage.yaml
     ```

  1. Connettiti al pod curl e testa l’accesso all’applicazione Bookinfo. Ora l’accesso al microservizio productpage è consentito, ma gli altri microservizi vengono comunque negati perché sono ancora soggetti alla policy di negazione della rete. Negli esempi seguenti, utilizziamo l’indirizzo IP del pod productpage (`10.86.2.193`) per interrogare il microservizio. Sostituiscilo con l’indirizzo IP del pod productpage nel tuo ambiente.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

     ```
     curl -s http://10.86.2.193:9080/productpage | grep -o "<title>.*</title>"
     <title>Simple Bookstore App</title>
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1
     {"error": "Sorry, product details are currently unavailable for this book."}
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/reviews
     {"error": "Sorry, product reviews are currently unavailable for this book."}
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/ratings
     {"error": "Sorry, product ratings are currently unavailable for this book."}
     ```

  1. Crea un file chiamato `network-policy-details.yaml` che definisce la policy di rete di details. La policy consente solo il traffico in ingresso dal microservizio productpage.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: details-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: details
       policyTypes:
       - Ingress
       ingress:
       - from:
         - podSelector:
             matchLabels:
               app: productpage
     ```

  1. Crea un file chiamato `network-policy-reviews.yaml` che definisce la policy di rete di reviews. La policy consente solo il traffico in ingresso dal microservizio productpage e solo il traffico in uscita verso il microservizio ratings e CoreDNS.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: reviews-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: reviews
       policyTypes:
       - Ingress
       - Egress
       ingress:
       - from:
         - podSelector:
             matchLabels:
               app: productpage
       egress:
       - to:
         - podSelector:
             matchLabels:
               app: ratings
       - to:
         - namespaceSelector:
             matchLabels:
               kubernetes.io/metadata.name: kube-system
           podSelector:
             matchLabels:
               k8s-app: kube-dns
         ports:
         - port: 53
           protocol: UDP
         - port: 53
           protocol: TCP
     ```

  1. Crea un file chiamato `network-policy-ratings.yaml` che definisce la policy della rete di ratings. La policy consente solo il traffico in ingresso dai microservizi productpage e reviews.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: ratings-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: ratings
       policyTypes:
       - Ingress
       ingress:
       - from:
         - podSelector:
             matchExpressions:
             - key: app
               operator: In
               values: ["productpage", "reviews"]
     ```

  1. Applica le policy di rete per details, reviews e ratings al cluster.

     ```
     kubectl apply -f network-policy-details.yaml
     kubectl apply -f network-policy-reviews.yaml
     kubectl apply -f network-policy-ratings.yaml
     ```

  1. Connettiti al pod curl e testa l’accesso all’applicazione Bookinfo. Negli esempi seguenti, utilizziamo l’indirizzo IP del pod productpage (`10.86.2.193`) per interrogare il microservizio. Sostituiscilo con l’indirizzo IP del pod productpage nel tuo ambiente.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

     Testa il microservice details.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1
     ```

     ```
     {"id": 1, "author": "William Shakespeare", "year": 1595, "type": "paperback", "pages": 200, "publisher": "PublisherA", "language": "English", "ISBN-10": "1234567890", "ISBN-13": "123-1234567890"}
     ```

     Testa il microservizio reviews.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/reviews
     ```

     ```
     {"id": "1", "podname": "reviews-v1-598b896c9d-p2289", "clustername": "null", "reviews": [{"reviewer": "Reviewer1", "text": "An extremely entertaining play by Shakespeare. The slapstick humour is refreshing!"}, {"reviewer": "Reviewer2", "text": "Absolutely fun and entertaining. The play lacks thematic depth when compared to other plays by Shakespeare."}]}
     ```

     Testa il microservizio ratings.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/ratings
     ```

     ```
     {"id": 1, "ratings": {"Reviewer1": 5, "Reviewer2": 4}}
     ```

  1. Elimina tutte le risorse che hai creato con questa procedura.

     ```
     kubectl delete -f network-policy-deny-bookinfo.yaml
     kubectl delete -f network-policy-productpage.yaml
     kubectl delete -f network-policy-details.yaml
     kubectl delete -f network-policy-reviews.yaml
     kubectl delete -f network-policy-ratings.yaml
     kubectl delete -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
     kubectl delete pod curl-pod
     ```

# Concetti per nodi ibridi
<a name="hybrid-nodes-concepts"></a>

Con *Amazon EKS Hybrid Nodes*, unisci macchine fisiche o virtuali in esecuzione in ambienti on-premises o edge a cluster Amazon EKS in esecuzione nel cloud AWS. Questo approccio offre molti vantaggi, ma introduce anche nuovi concetti e architetture di rete per chi ha dimestichezza con l’esecuzione di cluster Kubernetes in un unico ambiente di rete.

Le sezioni seguenti approfondiscono Kubernetes e i concetti di rete per i nodi ibridi EKS e descrivono in dettaglio come il traffico fluisce attraverso l’architettura ibrida. Queste sezioni richiedono che tu abbia una conoscenza di base delle reti Kubernetes, come i concetti di pod, nodi, servizi, piano di controllo Kubernetes, kubelet e kube-proxy.

Ti consigliamo di leggere queste pagine in ordine, iniziando con [Concetti di rete per nodi ibridi](hybrid-nodes-concepts-networking.md), poi con [Concetti di Kubernetes per nodi ibridi](hybrid-nodes-concepts-kubernetes.md) e infine con [Flussi di traffico di rete per nodi ibridi](hybrid-nodes-concepts-traffic-flows.md).

**Topics**
+ [Concetti di rete per nodi ibridi](hybrid-nodes-concepts-networking.md)
+ [Concetti di Kubernetes per nodi ibridi](hybrid-nodes-concepts-kubernetes.md)
+ [Flussi di traffico di rete per nodi ibridi](hybrid-nodes-concepts-traffic-flows.md)

# Concetti di rete per nodi ibridi
<a name="hybrid-nodes-concepts-networking"></a>

Questa sezione descrive in dettaglio i concetti di rete principali e i vincoli da considerare durante la progettazione della topologia di rete per EKS Hybrid Nodes.

## Concetti di rete per EKS Hybrid Nodes
<a name="_networking_concepts_for_eks_hybrid_nodes"></a>

![\[Diagramma di rete di nodi ibridi di alto livello\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-highlevel-network.png)


 **VPC come hub di rete** 

Tutto il traffico che supera i limiti del cloud viene instradato attraverso il tuo VPC. Ciò include il traffico tra il piano di controllo EKS o i pod che arrivano AWS ai nodi ibridi o ai pod in esecuzione su di essi. Puoi considerare il VPC del cluster come all’hub di rete tra i nodi ibridi e il resto del cluster. Questa architettura offre pieno controllo del traffico e del relativo instradamento, ma ti impone anche la responsabilità di configurare correttamente instradamenti, gruppi di sicurezza e firewall per il VPC.

 **Dal piano di controllo (control-plane) EKS al VPC** 

Il piano di controllo EKS collega **Elastic Network Interfaces (ENIs) al tuo** VPC. Questi ENIs gestiscono il traffico da e verso il server API EKS. È possibile controllare il posizionamento del piano di controllo EKS ENIs durante la configurazione del cluster, poiché EKS si collega ENIs alle sottoreti passate durante la creazione del cluster.

EKS associa i gruppi di sicurezza a quelli ENIs che EKS collega alle sottoreti. Questi gruppi di sicurezza consentono il traffico da e verso il piano di controllo EKS attraverso il. ENIs Questo è importante per i nodi ibridi EKS perché è necessario consentire il traffico dai nodi ibridi e dai pod in esecuzione su di essi al piano ENIs di controllo EKS.

 **Reti di nodi remoti** 

Le reti a nodi remoti, in particolare il nodo remoto CIDRs, sono gli intervalli IPs assegnati alle macchine utilizzate come nodi ibridi. Quando esegui il provisioning dei nodi ibridi, questi risiedono nel data center on-premises o nella posizione edge, che è un dominio di rete diverso dal piano di controllo (control-plane) EKS e dal VPC. Ogni nodo ibrido ha uno o più indirizzi IP da un CIDR del nodo remoto distinto dalle sottoreti del tuo VPC.

Il cluster EKS viene configurato con questi nodi remoti CIDRs in modo che EKS sappia come indirizzare tutto il traffico destinato ai nodi ibridi IPs attraverso il VPC del cluster, ad esempio le richieste all'API kubelet. Le connessioni all'`kubelet`API vengono utilizzate nei comandi`kubectl attach`,, `kubectl cp``kubectl exec`, `kubectl logs` e. `kubectl port-forward`

 **Reti di pod remoti** 

Le reti di pod remoti sono gli intervalli IPs assegnati ai pod in esecuzione sui nodi ibridi. In genere, bisogna configurare la Container Network Interface (CNI) con questi intervalli e la funzionalità di Gestione indirizzi IP (IPAM) della CNI si occupa di assegnare una parte di tali intervalli a ciascun nodo ibrido. Quando crei un pod, la CNI assegna un IP al pod dalla sezione allocata al nodo in cui il pod è stato pianificato.

Puoi configurare il cluster EKS con questi pod remoti CIDRs in modo che il piano di controllo EKS sappia instradare tutto il traffico destinato ai pod in esecuzione sui nodi ibridi attraverso il VPC del cluster, ad esempio la comunicazione con i webhook.

![\[Reti di pod remoti\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-remote-pod-cidrs.png)


 **Dall’ambiente on-premises al VPC** 

La rete on-premises utilizzata per i nodi ibridi deve essere indirizzata al VPC usato per il cluster EKS. Sono disponibili diverse [opzioni di connettività Network-to-Amazon VPC per connettere](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) la rete locale a un VPC. Inoltre, puoi utilizzare la tua soluzione VPN.

È importante configurare correttamente il routing sul lato AWS cloud nel VPC e nella rete locale, in modo che entrambe le reti instradino il traffico giusto attraverso la connessione per le due reti.

Nel VPC, tutto il traffico diretto alle reti di nodi e pod remoti deve essere instradato attraverso la connessione alla rete on-premises (denominata “gateway”). Se alcune sottoreti hanno tabelle di routing diverse, devi configurare ogni tabella con gli instradamenti per i nodi ibridi e i pod in esecuzione su di essi. Questo vale per le sottoreti a cui è collegato il piano di controllo EKS e per ENIs le sottoreti che contengono EC2 nodi o pod che devono comunicare con i nodi ibridi.

Nella rete locale, è necessario configurare la rete per consentire il traffico da e verso il VPC del cluster EKS e AWS gli altri servizi richiesti per i nodi ibridi. Il traffico per il cluster EKS attraversa il gateway in entrambe le direzioni.

## Vincoli di rete
<a name="_networking_constraints"></a>

 **Rete completamente instradata** 

Il vincolo principale è che il piano di controllo (control-plane) EKS e tutti i nodi, cloud o ibridi, devono formare una rete **completamente instradata**. Ciò significa che tutti i nodi devono essere in grado di raggiungersi a vicenda al terzo livello, tramite indirizzo IP.

Il piano di controllo (control-plane) EKS e i nodi cloud sono già raggiungibili a vicenda perché si trovano in una rete piatta (il VPC). I nodi ibridi, tuttavia, si trovano in un dominio di rete diverso. Ecco perché è necessario configurare un routing aggiuntivo nel VPC e nella rete on-premises per instradare il traffico tra i nodi ibridi e il resto del cluster. Se i nodi ibridi sono raggiungibili a vicenda e dal VPC, i nodi ibridi possono trovarsi in un’unica rete piatta o in più reti segmentate.

 **Pod remoto indirizzabile CIDRs** 

Affinché il piano di controllo (control-plane) EKS comunichi con i pod in esecuzione su nodi ibridi (ad esempio, webhook o Metrics Server) o affinché i pod in esecuzione su nodi cloud comunichino con quelli in esecuzione su nodi ibridi (comunicazione est-ovest del carico di lavoro), il CIDR del pod remoto deve essere instradabile dal VPC. Ciò significa che il VPC deve essere in grado di indirizzare il traffico verso il pod CIDRs attraverso il gateway verso la rete locale e che la rete locale deve essere in grado di indirizzare il traffico di un pod verso il nodo giusto.

È importante notare la distinzione tra i requisiti di routing dei pod nel VPC e on-premises. Il VPC deve solo sapere che tutto il traffico diretto a un pod remoto deve passare attraverso il gateway. Se disponi di un solo CIDR del pod remoto, è necessario un solo instradamento.

Questo requisito è valido per tutti gli hop della rete on-premises fino al router locale nella stessa sottorete dei nodi ibridi. Questo è l’unico router che deve conoscere la sezione CIDR del pod assegnata a ciascun nodo, assicurandosi che il traffico per un pod specifico venga recapitato al nodo in cui è stato pianificato.

Puoi scegliere di propagare queste route per il pod locale CIDRs dal router locale locale alle tabelle di routing VPC, ma non è necessario. Se il tuo pod locale CIDRs cambia frequentemente e le tabelle di routing VPC devono essere aggiornate per rispecchiare la modifica del CIDRs pod, ti consigliamo di propagare il pod locale CIDRs alle tabelle di routing VPC, ma questo non è comune.

Nota, il vincolo per rendere instradabile il pod locale è facoltativo. CIDRs Se non è necessario eseguire webhook sui nodi ibridi o disporre di pod sui nodi cloud, dialoga con i pod sui nodi ibridi, non è necessario configurare il routing per il pod sulla rete locale. CIDRs 

 *Perché il pod locale CIDRs deve essere instradabile con nodi ibridi?* 

Quando si utilizza EKS con il VPC CNI per i nodi cloud, il VPC CNI esegue l'assegnazione direttamente IPs dal VPC ai pod. Ciò significa che non è necessario alcun routing speciale, poiché sia i cloud pod che il piano di controllo EKS possono raggiungere direttamente il Pod. IPs 

Quando vengono eseguiti in locale (e insieme ad altri CNIs nel cloud), i pod vengono in genere eseguiti in una rete overlay isolata e il CNI si occupa della distribuzione del traffico tra i pod. Ciò avviene in genere tramite l'incapsulamento: il CNI converte il pod-to-pod traffico in node-to-node traffico, occupandosi dell'incapsulamento e del deincapsulamento su entrambe le estremità. In questo modo, non è necessaria alcuna configurazione aggiuntiva sui nodi e sui router.

La rete con nodi ibridi è unica perché presenta una combinazione di entrambe le topologie: il piano di controllo (control-plane) EKS e i nodi cloud (con la CNI del VPC) si aspettano una rete piatta che includa nodi e pod, mentre i pod in esecuzione su nodi ibridi si trovano in una rete sovrapposta utilizzando VXLAN per l’incapsulamento (impostazione predefinita in Cilium). I pod in esecuzione su nodi ibridi possono raggiungere il piano di controllo (control-plane) EKS e i pod in esecuzione su nodi cloud, presupponendo che la rete on-premises possa essere instradata verso il VPC. Tuttavia, senza il routing del pod CIDRs sulla rete locale, qualsiasi traffico che ritorna a un IP del pod locale alla fine verrà interrotto se la rete non sa come raggiungere la rete overlay e indirizzarlo ai nodi corretti.

# Concetti di Kubernetes per nodi ibridi
<a name="hybrid-nodes-concepts-kubernetes"></a>

Questa pagina descrive in dettaglio i concetti chiave di Kubernetes alla base dell’architettura di sistema dei nodi ibridi EKS.

## Piano di controllo EKS nel VPC
<a name="hybrid-nodes-concepts-k8s-api"></a>

Gli IP del piano di controllo EKS ENI sono memorizzati nell’oggetto `kubernetes` `Endpoints` nel namespace `default`. Quando EKS crea nuovi ENI o rimuove quelli più vecchi, EKS aggiorna questo oggetto in modo che l’elenco degli IP sia sempre aggiornato.

È possibile utilizzare questi endpoint tramite il Servizio `kubernetes`, anche nel namespace `default`. A questo servizio, di tipo `ClusterIP`, viene sempre assegnato il primo IP del servizio CIDR del cluster. Ad esempio, per il servizio CIDR `172.16.0.0/16`, l’IP del servizio sarà `172.16.0.1`.

In genere, questo è il modo in cui i pod (indipendentemente dal fatto che siano in esecuzione nel cloud o nei nodi ibridi) accedono al server API EKS Kubernetes. I pod utilizzano l’IP del servizio come IP di destinazione, che viene tradotto negli IP effettivi di uno degli ENI del piano di controllo EKS. L’eccezione principale è `kube-proxy`, perché imposta la traduzione.

## Endpoint del server API EKS
<a name="hybrid-nodes-concepts-k8s-eks-api"></a>

L’IP del servizio `kubernetes` non è l’unico modo per accedere al server API EKS. EKS crea anche un nome DNS Route53 quando si crea il cluster. Questo è il campo `endpoint` del cluster EKS quando si richiama l’azione dell’API EKS `DescribeCluster`.

```
{
    "cluster": {
        "endpoint": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com",
        "name": "my-cluster",
        "status": "ACTIVE"
    }
}
```

In un cluster di accesso pubblico agli endpoint o in uno di accesso pubblico e privato agli endpoint, i nodi ibridi risolveranno questo nome DNS in un IP pubblico per impostazione predefinita, instradabile tramite Internet. In un cluster privato di accesso agli endpoint, il nome DNS si risolve negli IP privati del piano di controllo EKS ENI.

Ecco come `kubelet` e `kube-proxy` accedono al server dell’API Kubernetes. Se desideri che tutto il traffico del cluster Kubernetes fluisca attraverso il VPC, devi configurare il cluster in modalità di accesso privato o modificare il server DNS on-premises per risolvere l’endpoint del cluster EKS sugli IP privati del piano di controllo EKS ENI.

## Endpoint `kubelet`
<a name="hybrid-nodes-concepts-k8s-kubelet-api"></a>

Il `kubelet` espone diversi endpoint REST, consentendo ad altre parti del sistema di interagire e raccogliere informazioni da ciascun nodo. Nella maggior parte dei cluster, la maggior parte del traffico diretto al server `kubelet` proviene dal piano di controllo, ma anche alcuni agenti di monitoraggio potrebbero interagire con esso.

Tramite questa interfaccia, `kubelet` gestisce varie richieste: recupero dei log (`kubectl logs`), esecuzione di comandi all’interno dei container (`kubectl exec`) e inoltro del traffico (`kubectl port-forward`). Ognuna di queste richieste interagisce con il runtime del container sottostante attraverso il `kubelet`, risultando perfetta per gli amministratori e gli sviluppatori del cluster.

Il consumatore più comune di questa API è il server API Kubernetes. Quando utilizzi uno dei comandi `kubectl` menzionati in precedenza, `kubectl` invia una richiesta API al server API, che quindi chiama l’API `kubelet` del nodo su cui è in esecuzione il pod. Questo è il motivo principale per cui l’IP del nodo deve essere raggiungibile dal piano di controllo EKS e perché, anche se i pod sono in funzione, non sarà possibile accedere ai loro log o `exec` se il percorso del nodo non è configurato correttamente.

 **IP del nodo** 

Quando il piano di controllo EKS comunica con un nodo, utilizza uno degli indirizzi riportati nello stato dell’oggetto `Node` (`status.addresses`).

Con i nodi cloud EKS, è normale che il kubelet riporti l’IP privato dell’istanza EC2 come un `InternalIP` durante la registrazione del nodo. Questo IP viene quindi convalidato dal Cloud Controller Manager (CCM) assicurandosi che appartenga all’istanza EC2. Inoltre, il CCM in genere aggiunge gli IP (come `ExternalIP`) pubblici e i nomi DNS (`InternalDNS`e `ExternalDNS`) dell’istanza allo stato del nodo.

Tuttavia, non esiste un CCM per i nodi ibridi. Quando si registra un nodo ibrido con EKS Hybrid Nodes CLI (`nodeadm`), configura il kubelet per riportare l’IP della macchina direttamente nello stato del nodo, senza CCM.

```
apiVersion: v1
kind: Node
metadata:
  name: my-node-1
spec:
  providerID: eks-hybrid:///us-west-2/my-cluster/my-node-1
status:
  addresses:
  - address: 10.1.1.236
    type: InternalIP
  - address: my-node-1
    type: Hostname
```

Se la macchina ha più IP, il kubelet ne selezionerà uno seguendo la propria logica. Puoi controllare l’IP selezionato con il flag `--node-ip`, che puoi passare in configurazione `nodeadm` in `spec.kubelet.flags`. Solo l’IP riportato nell’oggetto `Node` necessita di un percorso dal VPC. Le tue macchine possono avere altri IP che non sono raggiungibili dal cloud.

## `kube-proxy`
<a name="hybrid-nodes-concepts-k8s-kube-proxy"></a>

 `kube-proxy` è responsabile dell’implementazione dell’astrazione del servizio a livello di rete di ciascun nodo. Funziona come proxy di rete e bilanciatore del carico per il traffico destinato ai servizi Kubernetes. Monitorando continuamente il server API Kubernetes per rilevare eventuali modifiche relative ai servizi e agli endpoint, `kube-proxy` aggiorna dinamicamente le regole di rete dell’host sottostante per garantire che il traffico venga indirizzato correttamente.

In modalità `iptables`, `kube-proxy` programma diverse catene `netfilter` per gestire il traffico di servizio. Le regole formano la seguente gerarchia:

1.  **Catena KUBE-SERVICES**: il punto di ingresso per tutto il traffico di servizio. Ha regole che corrispondono a ogni `ClusterIP` e porta del servizio.

1.  **Catene KUBE-SVC-XXX:** le catene specifiche dei servizi hanno regole di bilanciamento del carico per ogni servizio.

1.  **Catene KUBE-SEP-XXX:** le catene specifiche per endpoint hanno le regole effettive. `DNAT`

Esaminiamo cosa succede per un servizio `test-server` nel namespace `default`: \$1 Service ClusterIP: `172.16.31.14` \$1 Service port: `80` \$1 Backing pods: `10.2.0.110`, `10.2.1.39`, e `10.2.2.254` 

Quando controlliamo le regole `iptables` (usando `iptables-save 0 grep -A10 KUBE-SERVICES`):

1. Nella catena **KUBE-SERVICES**, troviamo una regola corrispondente al servizio:

   ```
   -A KUBE-SERVICES -d 172.16.31.14/32 -p tcp -m comment --comment "default/test-server cluster IP" -m tcp --dport 80 -j KUBE-SVC-XYZABC123456
   ```
   + Questa regola corrisponde ai pacchetti destinati a 172.16.31.14:80
   + Il commento indica a cosa serve questa regola: `default/test-server cluster IP` 
   + I pacchetti corrispondenti saltano alla catena `KUBE-SVC-XYZABC123456`

1. La catena **KUBE-SVC-XYZABC123456** ha regole di bilanciamento del carico basate sulla probabilità:

   ```
   -A KUBE-SVC-XYZABC123456 -m statistic --mode random --probability 0.33333333349 -j KUBE-SEP-POD1XYZABC
   -A KUBE-SVC-XYZABC123456 -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-POD2XYZABC
   -A KUBE-SVC-XYZABC123456 -j KUBE-SEP-POD3XYZABC
   ```
   + Prima regola: 33,3% di probabilità di saltare a `KUBE-SEP-POD1XYZABC` 
   + Seconda regola: 50% di probabilità che il traffico rimanente (33,3% del totale) passi a `KUBE-SEP-POD2XYZABC` 
   + Ultima regola: tutto il traffico rimanente (33,3% del totale) passa a `KUBE-SEP-POD3XYZABC` 

1. Le singole catene **KUBE-SEP-XXX** eseguono il DNAT (Destination NAT):

   ```
   -A KUBE-SEP-POD1XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.0.110:80
   -A KUBE-SEP-POD2XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.1.39:80
   -A KUBE-SEP-POD3XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.2.254:80
   ```
   + Queste regole DNAT riscrivono l’IP e la porta di destinazione per indirizzare il traffico verso pod specifici.
   + Ogni regola gestisce circa il 33,3% del traffico, garantendo un bilanciamento uniforme del carico tra `10.2.0.110`, `10.2.1.39` e `10.2.2.254`.

Questa struttura a catena a più livelli consente a `kube-proxy` di implementare in modo efficiente il bilanciamento e il reindirizzamento del carico di servizio mediante la manipolazione dei pacchetti a livello di kernel, senza richiedere un processo proxy nel percorso dei dati.

### Impatto sulle operazioni di Kubernetes
<a name="hybrid-nodes-concepts-k8s-operations"></a>

Un’interruzione `kube-proxy` su un nodo impedisce a quel nodo di indirizzare correttamente il traffico del Servizio, causando timeout o connessioni non riuscite per i pod che si basano sui servizi del cluster. Ciò può essere particolarmente problematico quando un nodo viene registrato per la prima volta. Il CNI deve comunicare con il server dell’API Kubernetes per ottenere informazioni, come il pod CIDR del nodo, prima di poter configurare qualsiasi rete di pod. A tale scopo, utilizza l’IP del servizio `kubernetes`. Tuttavia, se `kube-proxy` non è riuscito ad avviarlo o a impostare le regole `iptables` corrette, le richieste inviate all’IP del servizio `kubernetes` non vengono tradotte negli IP effettivi degli ENI del piano di controllo EKS. Di conseguenza, il CNI entrerà in un ciclo di arresto e nessuno dei pod sarà in grado di funzionare correttamente.

Sappiamo che i pod utilizzano l’IP del servizio `kubernetes` per comunicare con il server dell’API Kubernetes, ma `kube-proxy` deve prima impostare le regole `iptables` per farlo funzionare.

Come `kube-proxy` comunica con il server API?

`kube-proxy` deve essere configurato per utilizzare gli IP/s effettivi del server dell’API Kubernetes o un nome DNS che li risolva. Nel caso di EKS, EKS configura il predefinito `kube-proxy` in modo che punti al nome DNS Route53 creato da EKS quando si crea il cluster. Puoi vedere questo valore nella ConfigMap `kube-proxy` nel namespace `kube-system`. Il contenuto di questa ConfigMap è un `kubeconfig` che viene iniettato nel pod `kube-proxy`, quindi cerca il campo `clusters0.cluster.server`. Questo valore corrisponderà al campo `endpoint` del cluster EKS (quando chiama l’API `DescribeCluster` di EKS).

```
apiVersion: v1
data:
  kubeconfig: |-
    kind: Config
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        server: https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com
      name: default
    contexts:
    - context:
        cluster: default
        namespace: default
        user: default
      name: default
    current-context: default
    users:
    - name: default
      user:
        tokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
kind: ConfigMap
metadata:
  name: kube-proxy
  namespace: kube-system
```

## CIDR dei pod remoti instradabili
<a name="hybrid-nodes-concepts-k8s-pod-cidrs"></a>

La pagina [Concetti di rete per nodi ibridi](hybrid-nodes-concepts-networking.md) descrive in dettaglio i requisiti per eseguire webhook su nodi ibridi o per far sì che i pod in esecuzione su nodi cloud comunichino con quelli in esecuzione su nodi ibridi. Il requisito fondamentale è che il router on-premises debba sapere quale nodo è responsabile di un particolare pod IP. Esistono diversi modi per raggiungere questo obiettivo, tra cui Border Gateway Protocol (BGP), route statiche e proxy ARP (Address Resolution Protocol). Le diverse fasi vengono illustrate nelle sezioni seguenti.

 **Border Gateway Protocol (BGP)** 

Se il tuo CNI lo supporta (come Cilium e Calico), puoi utilizzare la modalità BGP del tuo CNI per propagare le route ai tuoi pod CIDR per nodo dai nodi al router locale. Quando si utilizza la modalità BGP del CNI, quest’ultimo funge da router virtuale, quindi il router locale ritiene che il pod CIDR appartenga a una sottorete diversa e il nodo sia il gateway di accesso a quella sottorete.

![\[Routing BGP dei nodi ibridi\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-bgp.png)


 **Route statiche** 

In alternativa, puoi configurare percorsi statici nel router locale. Questo è il modo più semplice per indirizzare il pod CIDR on-premises al tuo VPC, ma è anche il più soggetto a errori e difficile da gestire. È necessario assicurarsi che i percorsi siano sempre aggiornati con i nodi esistenti e i pod CIDR a loro assegnati. Se il numero di nodi è ridotto e l’infrastruttura è statica, questa è un’opzione valida e elimina la necessità del supporto BGP nel router. Se scegli questa opzione, ti consigliamo di configurare il tuo CNI con la slice CIDR del pod che desideri assegnare a ciascun nodo invece di lasciare che sia l’IPAM a decidere.

![\[Routing statico dei nodi ibridi\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-static-routes.png)


 **Proxy ARP (Address Resolution Protocol)** 

Il proxy ARP è un altro approccio per rendere instradabili gli IP dei on-premises, particolarmente utile quando i nodi ibridi si trovano sulla stessa rete di livello 2 del router locale. Con il proxy ARP abilitato, un nodo risponde alle richieste ARP per gli IP dei pod che ospita, anche se tali IP appartengono a una sottorete diversa.

Quando un dispositivo sulla rete locale tenta di raggiungere un pod IP, invia innanzitutto una richiesta ARP che chiede “Chi ha questo IP?”. Il nodo ibrido che ospita il pod risponderà con il proprio indirizzo MAC, dicendo “Posso gestire il traffico per quell’IP”. Questo crea un percorso diretto tra i dispositivi della rete locale e i pod senza richiedere la configurazione del router.

Perché ciò funzioni, il CNI deve supportare la funzionalità proxy ARP. Cilium ha un supporto integrato per il proxy ARP che puoi abilitare tramite la configurazione. La considerazione fondamentale è che il pod CIDR non deve sovrapporsi a nessun’altra rete dell’ambiente, poiché ciò potrebbe causare conflitti di routing.

Questo approccio presenta diversi vantaggi: \$1 Non è necessario configurare il router con BGP o mantenere percorsi statici \$1 Funziona bene in ambienti in cui non si ha il controllo sulla configurazione del router

![\[Proxy ARP de nodi ibridi\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-arp-proxy.png)


## Incapsulamento da pod a pod
<a name="hybrid-nodes-concepts-k8s-pod-encapsulation"></a>

Negli ambienti on-premises, i CNI utilizzano in genere protocolli di incapsulamento per creare reti overlay in grado di funzionare sulla rete fisica senza la necessità di riconfigurarla. Questa sezione spiega come funziona questo incapsulamento. Tieni presente che alcuni dettagli potrebbero variare a seconda del CNI che stai utilizzando.

L’incapsulamento avvolge i pacchetti della rete di pod originali all’interno di un altro pacchetto di rete che può essere instradato attraverso la rete fisica sottostante. Ciò consente ai pod di comunicare tra i nodi che eseguono lo stesso CNI senza che la rete fisica sappia come instradare quei pod CIDR.

Il protocollo di incapsulamento più comune utilizzato con Kubernetes è Virtual Extensible LAN (VXLAN), sebbene siano disponibili anche altri (come `Geneve`) a seconda del CNI utilizzato.

### Incapsulamento VXLAN
<a name="_vxlan_encapsulation"></a>

VXLAN incapsula i frame Ethernet di livello 2 all’interno di pacchetti UDP. Quando un pod invia traffico a un altro pod su un nodo diverso, il CNI esegue le seguenti operazioni:

1. Il CNI intercetta i pacchetti dal Pod A.

1. Il CNI avvolge il pacchetto originale in un’intestazione VXLAN.

1. Questo pacchetto avvolto viene quindi inviato attraverso lo stack di rete normale del nodo al nodo di destinazione.

1. Il CNI sul nodo di destinazione scarta il pacchetto e lo consegna al Pod B.

Ecco cosa succede alla struttura dei pacchetti durante l’incapsulamento VXLAN:

Pacchetto originale da pod a pod:

```
+-----------------+---------------+-------------+-----------------+
| Ethernet Header | IP Header     | TCP/UDP     | Payload         |
| Src: Pod A MAC  | Src: Pod A IP | Src Port    |                 |
| Dst: Pod B MAC  | Dst: Pod B IP | Dst Port    |                 |
+-----------------+---------------+-------------+-----------------+
```

Dopo l’incapsulamento VXLAN

```
+-----------------+-------------+--------------+------------+---------------------------+
| Outer Ethernet  | Outer IP    | Outer UDP    | VXLAN      | Original Pod-to-Pod       |
| Src: Node A MAC | Src: Node A | Src: Random  | VNI: xx    | Packet (unchanged         |
| Dst: Node B MAC | Dst: Node B | Dst: 4789    |            | from above)               |
+-----------------+-------------+--------------+------------+---------------------------+
```

Il VXLAN Network Identifier (VNI) distingue tra diverse reti di sovrapposizione.

### Scenari di comunicazione dei pod
<a name="_pod_communication_scenarios"></a>

 **Pod sullo stesso nodo ibrido** 

Quando i pod sullo stesso nodo ibrido comunicano, in genere non è necessario alcun incapsulamento. Il CNI imposta percorsi locali che indirizzano il traffico tra i pod attraverso le interfacce virtuali interne del nodo:

```
Pod A -> veth0 -> node's bridge/routing table -> veth1 -> Pod B
```

Il pacchetto non lascia mai il nodo e non richiede l’incapsulamento.

 **Pod su diversi nodi ibridi** 

La comunicazione tra pod su diversi nodi ibridi richiede l’incapsulamento:

```
Pod A -> CNI -> [VXLAN encapsulation] -> Node A network -> router or gateway -> Node B network -> [VXLAN decapsulation] -> CNI -> Pod B
```

Ciò consente al traffico dei pod di attraversare l’infrastruttura di rete fisica senza che la rete fisica comprenda il routing IP dei pod.

# Flussi di traffico di rete per nodi ibridi
<a name="hybrid-nodes-concepts-traffic-flows"></a>

Questa pagina descrive in dettaglio i flussi di traffico di rete per i nodi ibridi EKS con diagrammi che mostrano i percorsi di end-to-end rete per i diversi tipi di traffico.

Sono coperti i seguenti flussi di traffico:
+  [Dal `kubelet` del nodo ibrido al piano di controllo (control-plane) EKS](#hybrid-nodes-concepts-traffic-flows-kubelet-to-cp) 
+  [Dal piano di controllo (control-plane) EKS al nodo ibrido (server `kubelet`)](#hybrid-nodes-concepts-traffic-flows-cp-to-kubelet) 
+  [I pod vengono eseguiti su nodi ibridi verso il piano di controllo (control-plane) EKS](#hybrid-nodes-concepts-traffic-flows-pods-to-cp) 
+  [Dal piano di controllo (control-plane) EKS ai pod in esecuzione su un nodo ibrido (webhook)](#hybrid-nodes-concepts-traffic-flows-cp-to-pod) 
+  [Pod-to-Pod in esecuzione su nodi ibridi](#hybrid-nodes-concepts-traffic-flows-pod-to-pod) 
+  [Da pod su nodi cloud a pod su nodi ibridi (traffico est-ovest)](#hybrid-nodes-concepts-traffic-flows-east-west) 

## Dal `kubelet` del nodo ibrido al piano di controllo (control-plane) EKS
<a name="hybrid-nodes-concepts-traffic-flows-kubelet-to-cp"></a>

![\[Dal kubelet del nodo ibrido al piano di controllo (control-plane) EKS\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-kubelet-to-cp-public.png)


### Richiesta
<a name="_request"></a>

 **1`kubelet`. Avvia la richiesta** 

Quando il `kubelet` su un nodo ibrido deve comunicare con il piano di controllo (control-plane) EKS (ad esempio, per segnalare lo stato del nodo oppure ottenere le specifiche del pod), utilizza il file `kubeconfig` fornito durante la registrazione del nodo. Questo `kubeconfig` contiene l’URL dell’endpoint del server API (il nome DNS di Route53) anziché gli indirizzi IP diretti.

Il `kubelet` esegue una ricerca DNS per l’endpoint (ad esempio, `https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com`). In un cluster ad accesso pubblico, questo si risolve in un indirizzo IP pubblico (ad esempio, `54.239.118.52`) che appartiene al servizio EKS in esecuzione su AWS. Quindi, il `kubelet` crea una richiesta HTTPS sicura per questo endpoint. Il pacchetto iniziale appare come riportato di seguito:

```
+--------------------+---------------------+-----------------+
| IP Header          | TCP Header          | Payload         |
| Src: 10.80.0.2     | Src: 52390 (random) |                 |
| Dst: 54.239.118.52 | Dst: 443            |                 |
+--------------------+---------------------+-----------------+
```

 **2. Routing del router locale** 

Poiché l’IP di destinazione è un indirizzo IP pubblico e non fa parte della rete locale, il `kubelet` invia questo pacchetto al gateway predefinito (il router locale on-premises). Il router esamina l’IP di destinazione e determina che si tratta di un indirizzo IP pubblico.

Per il traffico pubblico, il router in genere inoltra il pacchetto a un gateway Internet o a un router di confine che gestisce il traffico in uscita verso internet. Questo valore è omesso nel diagramma e dipenderà da come è configurata la rete on-premises. Il pacchetto attraversa l’infrastruttura di rete on-premises e alla fine raggiunge la rete del provider di servizi internet.

 **3. Distribuzione al piano di controllo (control-plane) EKS** 

Il pacchetto viaggia attraverso la rete Internet pubblica e le reti di transito fino a raggiungere AWS la rete. AWS La rete indirizza il pacchetto all'endpoint del servizio EKS nella regione appropriata. Quando il pacchetto raggiunge il servizio EKS, viene inoltrato all’effettivo piano di controllo (control-plane) EKS del cluster.

Questo routing attraverso la rete internet pubblica è diverso dal percorso instradato dal VPC privato che vedremo in altri flussi di traffico. La differenza fondamentale è che quando si utilizza la modalità di accesso pubblico, il traffico dal `kubelet` on-premises (ma non dai pod) al piano di controllo (control-plane) EKS non passa attraverso il VPC, ma utilizza invece l’infrastruttura internet globale.

### Risposta
<a name="_response"></a>

Dopo che il piano di controllo (control-plane) EKS ha elaborato la richiesta del `kubelet`, invia una risposta:

 **3. Il piano di controllo (control-plane) EKS invia una risposta** 

Il piano di controllo (control-plane) EKS crea un pacchetto di risposta. Questo pacchetto ha l’IP pubblico come origine e l’IP del nodo ibrido come destinazione:

```
+--------------------+---------------------+-----------------+
| IP Header          | TCP Header          | Payload         |
| Src: 54.239.118.52 | Src: 443            |                 |
| Dst: 10.80.0.2     | Dst: 52390          |                 |
+--------------------+---------------------+-----------------+
```

 **2. Routing internet** 

Il pacchetto di risposta attraversa internet, seguendo il percorso di routing determinato dai provider di servizi internet, fino a raggiungere il router edge della rete on-premises.

 **1. Distribuzione locale** 

Il router on-premises riceve il pacchetto e riconosce l’IP di destinazione (`10.80.0.2`) come appartenente alla rete locale. Inoltra il pacchetto attraverso l’infrastruttura di rete locale fino a raggiungere il nodo ibrido di destinazione, dove il `kubelet` riceve ed elabora la risposta.

## Dal `kube-proxy` del nodo ibrido al piano di controllo (control-plane) EKS
<a name="_hybrid_node_kube_proxy_to_eks_control_plane"></a>

Se abiliti l’accesso pubblico agli endpoint per il cluster, il traffico di ritorno utilizza la rete internet pubblica. Questo traffico proviene dal `kube-proxy` sul nodo ibrido verso il piano di controllo (control-plane) EKS e segue lo stesso percorso del traffico dal `kubelet` al piano di controllo (control-plane) EKS.

## Dal piano di controllo (control-plane) EKS al nodo ibrido (server `kubelet`)
<a name="hybrid-nodes-concepts-traffic-flows-cp-to-kubelet"></a>

![\[Dal piano di controllo (control-plane) EKS al nodo ibrido\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-cp-to-kubelet.png)


### Richiesta
<a name="_request_2"></a>

 **1. Il server API EKS Kubernetes avvia la richiesta** 

Il server API EKS Kubernetes recupera l’indirizzo IP del nodo (`10.80.0.2`) dallo stato dell’oggetto del nodo. Quindi indirizza questa richiesta tramite la sua interfaccia di rete elastica (ENI) nel VPC, poiché l’IP di destinazione appartiene al CIDR del nodo remoto configurato (`10.80.0.0/16`). Il pacchetto iniziale appare come riportato di seguito:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 67493 (random) |                 |
| Dst: 10.80.0.2  | Dst: 10250          |                 |
+-----------------+---------------------+-----------------+
```

 **2. Elaborazione di rete del VPC** 

Il pacchetto lascia l’ENI ed entra nel livello di rete del VPC, dove viene diretto al gateway della sottorete per un ulteriore instradamento.

 **3. Ricerca della tabella di routing del VPC** 

La tabella di routing del VPC per la sottorete contenente l’ENI del piano di controllo (control-plane) EKS ha un instradamento specifico (il secondo nel diagramma) per il CIDR del nodo remoto. In base a questa regola di routing, il pacchetto viene indirizzato al VPC-to-onprem gateway.

 **4. Transito oltre il limite** 

Il gateway trasferisce il pacchetto oltre i limiti del cloud tramite la connessione stabilita (come Direct Connect o VPN) alla rete on-premises.

 **5. Ricezione nella rete on-premises** 

Il pacchetto arriva al router on-premises locale che gestisce il traffico per la sottorete in cui si trovano i nodi ibridi.

 **6. Distribuzione finale** 

Il router locale identifica che l’indirizzo IP (`10.80.0.2`) di destinazione appartiene alla sua rete connessa direttamente e inoltra il pacchetto al nodo ibrido di destinazione, dove il `kubelet` riceve ed elabora la richiesta.

### Risposta
<a name="_response_2"></a>

Dopo che il `kubelet` del nodo ibrido ha elaborato la richiesta, restituisce una risposta seguendo lo stesso percorso in senso inverso:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 10250          |                 |
| Dst: 10.0.0.132 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **6. `kubelet` Invia la risposta** 

Il `kubelet` sul nodo ibrido (`10.80.0.2`) crea un pacchetto di risposta con l’IP di origine originale come destinazione. La destinazione non appartiene alla rete locale, quindi viene inviata al gateway predefinito dell’host, che è il router locale.

 **5. Routing del router locale** 

Il router determina l’appartenenza a `10.0.0.0/16` dell’IP di destinazione (`10.0.0.132`), che dispone di un instradamento che punta al gateway a cui si connette AWS.

 **4. Ritorno oltre il limite** 

Il pacchetto torna indietro attraverso la stessa connessione on-premises al VPC (come Direct Connect o VPN), superando il limite del cloud nella direzione opposta.

 **3. Routing del VPC** 

Quando il pacchetto arriva nel VPC, le tabelle di routing identificano che l’IP di destinazione appartiene a un CIDR del VPC. L’instradamento dei pacchetti all’interno del VPC.

 **2. Distribuzione di rete del VPC** 

Il livello di rete del VPC inoltra il pacchetto alla sottorete con l’ENI del piano di controllo (control-plane) EKS (`10.0.0.132`).

 **1. Ricezione dell’ENI** 

Il pacchetto raggiunge l’ENI del piano di controllo (control-plane) EKS collegata al server API Kubernetes, completando il viaggio di andata e ritorno.

## I pod vengono eseguiti su nodi ibridi verso il piano di controllo (control-plane) EKS
<a name="hybrid-nodes-concepts-traffic-flows-pods-to-cp"></a>

![\[I pod vengono eseguiti su nodi ibridi verso il piano di controllo (control-plane) EKS\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-pod-to-cp.png)


### Senza NAT della CNI
<a name="_without_cni_nat"></a>

### Richiesta
<a name="_request_3"></a>

In genere, i pod comunicano al server API Kubernetes tramite il servizio `kubernetes`. L’IP del servizio è il primo IP del servizio CIDR del cluster. Questa convenzione consente ai pod che devono essere eseguiti prima che CoreDNS sia disponibile per raggiungere il server API, ad esempio la Container Network Interface (CNI). Le richieste lasciano il pod con l’IP del servizio come destinazione. Ad esempio, se il servizio CIDR è `172.16.0.0/16`, l’IP del servizio è `172.16.0.1`.

 **1. Il pod avvia la richiesta** 

Il pod invia una richiesta all’IP del servizio `kubernetes` (`172.16.0.1`) sulla porta del server API (443) da una porta di origine casuale. Il pacchetto appare come riportato di seguito:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

 **2. Elaborazione della CNI** 

La CNI rileva che l’IP di destinazione non appartiene a nessun CIDR del pod che gestisce. Poiché il **NAT in uscita è disabilitato**, la CNI passa il pacchetto allo stack di rete host senza modificarlo.

 **3. Elaborazione della rete del nodo** 

Il pacchetto entra nello stack di rete del nodo dove gli hook `netfilter` attivano le regole `iptables` impostate da kube-proxy. Diverse regole si applicano nell’ordine seguente:

1. Il pacchetto colpisce per primo la catena `KUBE-SERVICES`, che contiene regole che corrispondono al ClusterIP e alla porta di ogni servizio.

1. La regola di corrispondenza passa alla catena `KUBE-SVC-XXX` del servizio `kubernetes` (pacchetti destinati a `172.16.0.1:443`), che contiene le regole di bilanciamento del carico.

1. La regola di bilanciamento del carico seleziona casualmente una delle `KUBE-SEP-XXX` catene per il piano di controllo ENI IPs (o). `10.0.0.132` `10.0.1.23`

1. La catena `KUBE-SEP-XXX` selezionata ha la regola effettiva che modifica l’IP di destinazione dall’IP del servizio a quello selezionato. Si chiama Destination Network Address Translation (DNAT).

Dopo aver applicato queste regole, supponendo che l’IP dell’ENI del piano di controllo (control-plane) EKS selezionato sia `10.0.0.132`, il pacchetto appare come indicato di seguito:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 10.0.0.132 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Il nodo inoltra il pacchetto al gateway predefinito perché l’IP di destinazione non si trova nella rete locale.

 **4. Routing del router locale** 

Il router locale determina che l’IP di destinazione (`10.0.0.132`) appartiene al CIDR del VPC (`10.0.0.0/16`) e lo inoltra al gateway che si connette ad AWS.

 **5. Transito oltre il limite** 

Il pacchetto viaggia attraverso la connessione stabilita (come Direct Connect o VPN) oltre il limite del cloud fino al VPC.

 **6. Distribuzione di rete del VPC** 

Il livello di rete del VPC indirizza il pacchetto alla sottorete corretta in cui si trova l’ENI del piano di controllo (control-plane) EKS (`10.0.0.132`).

 **7. Ricezione dell’ENI** 

Il pacchetto raggiunge l’ENI del piano di controllo (control-plane) EKS collegato al server API Kubernetes.

### Risposta
<a name="_response_3"></a>

Dopo che il piano di controllo (control-plane) EKS ha elaborato la richiesta, invia una risposta al pod:

 **7. Il server API invia una risposta** 

Il server API EKS Kubernetes crea un pacchetto di risposta con l’IP di origine originale come destinazione. Il pacchetto appare come riportato di seguito:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Poiché l’IP di destinazione appartiene al CIDR del pod remoto configurato (`10.85.0.0/16`), lo invia tramite la sua ENI nel VPC con il router della sottorete come hop successivo.

 **6. Routing del VPC** 

La tabella di routing VPC contiene una voce per il pod remoto CIDR (`10.85.0.0/16`), che indirizza questo traffico verso il gateway. VPC-to-onprem

 **5. Transito oltre il limite** 

Il gateway trasferisce il pacchetto oltre i limiti del cloud tramite la connessione stabilita (come Direct Connect o VPN) alla rete on-premises.

 **4. Ricezione nella rete on-premises** 

Il pacchetto arriva al router on-premises locale.

 **3. Distribuzione al nodo** 

La tabella del router contiene una voce per `10.85.1.0/24` con `10.80.0.2` come hop successivo, che consegna il pacchetto al nostro nodo.

 **2. Elaborazione della rete del nodo** 

Poiché il pacchetto viene elaborato dallo stack di rete del nodo, `conntrack` (una parte di `netfilter`) abbina il pacchetto alla connessione inizialmente stabilita dal pod. Poiché il DNAT è stato originariamente applicato, `conntrack` inverte il DNAT riscrivendo l’IP di origine dall’IP dell’ENI del piano di controllo (control-plane) EKS all’IP del servizio `kubernetes`:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **1. Elaborazione della CNI** 

La CNI identifica che l’IP di destinazione appartiene a un pod nella sua rete e consegna il pacchetto al namespace della rete del pod corretto.

Questo flusso mostra perché Remote Pod CIDRs deve essere correttamente instradabile dal VPC fino al nodo specifico che ospita ciascun pod: l'intero percorso di ritorno dipende dal corretto instradamento del pod su reti cloud e IPs locali.

### Con NAT della CNI
<a name="_with_cni_nat"></a>

Questo flusso è molto simile a quello *senza NAT della CNI*, ma con una differenza fondamentale: la CNI applica il NAT di origine (SNAT) al pacchetto prima di inviarlo allo stack di rete del nodo. Ciò modifica l’IP di origine del pacchetto nell’IP del nodo, permettendo al pacchetto di essere reindirizzato al nodo senza richiedere una configurazione di routing aggiuntiva.

### Richiesta
<a name="_request_4"></a>

 **1. Il pod avvia la richiesta** 

Il pod invia una richiesta all’IP del servizio `kubernetes` (`172.16.0.1`) sulla porta del server API EKS Kubernetes (443) da una porta di origine casuale. Il pacchetto appare come riportato di seguito:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

 **2. Elaborazione della CNI** 

La CNI rileva che l’IP di destinazione non appartiene a nessun CIDR del pod che gestisce. Poiché il **NAT in uscita è abilitato**, la CNI applica lo SNAT al pacchetto, cambiando l’IP di origine con l’IP del nodo prima di passarlo allo stack di rete del nodo:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Nota: CNI e `iptables` sono mostrati nell'esempio come blocchi separati per motivi di chiarezza, ma in pratica è possibile che alcuni CNIs utilizzino `iptables` il NAT.

 **3. Elaborazione della rete del nodo** 

Qui le `iptables` regole stabilite da si `kube-proxy` comportano come nell'esempio precedente, bilanciando il carico del pacchetto su uno dei piani di controllo EKS. ENIs Il pacchetto ora appare come riportato di seguito:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 67493 (random) |                 |
| Dst: 10.0.0.132 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Il nodo inoltra il pacchetto al gateway predefinito perché l’IP di destinazione non si trova nella rete locale.

 **4. Routing del router locale** 

Il router locale determina che l’IP di destinazione (`10.0.0.132`) appartiene al CIDR del VPC (`10.0.0.0/16`) e lo inoltra al gateway che si connette ad AWS.

 **5. Transito oltre il limite** 

Il pacchetto viaggia attraverso la connessione stabilita (come Direct Connect o VPN) oltre il limite del cloud fino al VPC.

 **6. Distribuzione di rete del VPC** 

Il livello di rete del VPC indirizza il pacchetto alla sottorete corretta in cui si trova l’ENI del piano di controllo (control-plane) EKS (`10.0.0.132`).

 **7. Ricezione dell’ENI** 

Il pacchetto raggiunge l’ENI del piano di controllo (control-plane) EKS collegato al server API Kubernetes.

### Risposta
<a name="_response_4"></a>

Dopo che il piano di controllo (control-plane) EKS ha elaborato la richiesta, invia una risposta al pod:

 **7. Il server API invia una risposta** 

Il server API EKS Kubernetes crea un pacchetto di risposta con l’IP di origine originale come destinazione. Il pacchetto appare come riportato di seguito:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 443            |                 |
| Dst: 10.80.0.2  | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Poiché l’IP di destinazione appartiene al CIDR del nodo remoto configurato (`10.80.0.0/16`), lo invia tramite la sua ENI nel VPC con il router della sottorete come hop successivo.

 **6. Routing del VPC** 

La tabella di routing VPC contiene una voce per il nodo remoto CIDR (`10.80.0.0/16`), che indirizza questo traffico verso il gateway. VPC-to-onprem

 **5. Transito oltre il limite** 

Il gateway trasferisce il pacchetto oltre i limiti del cloud tramite la connessione stabilita (come Direct Connect o VPN) alla rete on-premises.

 **4. Ricezione nella rete on-premises** 

Il pacchetto arriva al router on-premises locale.

 **3. Distribuzione al nodo** 

Il router locale identifica che l’indirizzo IP (`10.80.0.2`) di destinazione appartiene alla sua rete connessa direttamente e inoltra il pacchetto al nodo ibrido di destinazione.

 **2. Elaborazione della rete del nodo** 

Poiché il pacchetto viene elaborato dallo stack di rete del nodo, `conntrack` (una parte di `netfilter`) abbina il pacchetto alla connessione stabilita inizialmente dal pod e, poiché il DNAT è stato originariamente applicato, inverte la situazione riscrivendo l’IP di origine dall’IP dell’ENI del piano di controllo (control-plane) EKS a quello del servizio `kubernetes`:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.80.0.2  | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **1. Elaborazione della CNI** 

Il CNI identifica che questo pacchetto appartiene a una connessione a cui ha precedentemente applicato lo SNAT. Inverte lo SNAT, riportando l’IP di destinazione all’IP del pod:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

La CNI identifica che l’IP di destinazione appartiene a un pod nella sua rete e consegna il pacchetto al namespace della rete del pod corretto.

Questo flusso mostra come CNI Nat-ing può semplificare la configurazione consentendo il reindirizzamento dei pacchetti al nodo senza richiedere un routing aggiuntivo per il pod. CIDRs

## Dal piano di controllo (control-plane) EKS ai pod in esecuzione su un nodo ibrido (webhook)
<a name="hybrid-nodes-concepts-traffic-flows-cp-to-pod"></a>

![\[Dal piano di controllo (control-plane) EKS ai pod in esecuzione su un nodo ibrido\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-cp-to-pod.png)


Questo schema di traffico si riscontra più comunemente con i webhook, in cui il piano di controllo (control-plane) EKS deve avviare direttamente le connessioni ai server webhook in esecuzione nei pod su nodi ibridi. Gli esempi includono la convalida e la modifica dei webhook di ammissione, che vengono chiamati dal server API durante i processi di convalida o mutazione delle risorse.

### Richiesta
<a name="_request_5"></a>

 **1. Il server API EKS Kubernetes avvia la richiesta** 

Quando un webhook è configurato nel cluster e un’operazione API pertinente lo attiva, il server API EKS Kubernetes deve stabilire una connessione diretta al pod del server webhook. Il server API cerca innanzitutto l’indirizzo IP del pod dalla risorsa Service o Endpoint associata al webhook.

Supponendo che il pod del webhook sia in esecuzione su un nodo ibrido con IP `10.85.1.23`, il server API EKS Kubernetes crea una richiesta HTTPS all’endpoint del webhook. Il pacchetto iniziale viene inviato tramite l’ENI del piano di controllo (control-plane) EKS nel VPC perché l’IP di destinazione `10.85.1.23` appartiene al CIDR del pod remoto configurato (`10.85.0.0/16`). Il pacchetto appare come riportato di seguito:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 41892 (random) |                 |
| Dst: 10.85.1.23 | Dst: 8443           |                 |
+-----------------+---------------------+-----------------+
```

 **2. Elaborazione di rete del VPC** 

Il pacchetto lascia l’ENI del piano di controllo (control-plane) EKS ed entra nel livello di rete del VPC con il router della sottorete come hop successivo.

 **3. Ricerca della tabella di routing del VPC** 

La tabella di routing del VPC per la sottorete contenente l’ENI del piano di controllo (control-plane) EKS contiene un instradamento specifico per il CIDR del pod remoto (`10.85.0.0/16`). Questa regola di routing indirizza il pacchetto VPC-to-onprem verso il gateway (ad esempio, un Virtual Private Gateway per Direct Connect o connessioni VPN):

```
Destination     Target
10.0.0.0/16     local
10.85.0.0/16    vgw-id (VPC-to-onprem gateway)
```

 **4. Transito oltre il limite** 

Il gateway trasferisce il pacchetto oltre i limiti del cloud tramite la connessione stabilita (come Direct Connect o VPN) alla rete on-premises. Il pacchetto mantiene gli indirizzi IP di origine e destinazione originali mentre attraversa questa connessione.

 **5. Ricezione nella rete on-premises** 

Il pacchetto arriva al router on-premises locale. Il router consulta la propria tabella di routing per determinare come raggiungere l’indirizzo 10.85.1.23. Perché ciò funzioni, la rete locale deve disporre di percorsi per il pod CIDRs che indirizzino il traffico verso il nodo ibrido appropriato.

In questo caso, la tabella di routing del router contiene una voce che indica che la sottorete `10.85.1.0/24` è raggiungibile tramite il nodo ibrido con IP `10.80.0.2`:

```
Destination     Next Hop
10.85.1.0/24    10.80.0.2
```

 **6. Distribuzione al nodo** 

In base alla voce della tabella di routing, il router inoltra il pacchetto al nodo ibrido (`10.80.0.2`). Quando il pacchetto arriva al nodo, ha lo stesso aspetto di quando il server API EKS Kubernetes lo ha inviato, con l’IP di destinazione che è ancora l’IP del pod.

 **7. Elaborazione della CNI** 

Lo stack di rete del nodo riceve il pacchetto e, dato che l’IP di destinazione non è quello del nodo, lo passa alla CNI per l’elaborazione. La CNI identifica che l’IP di destinazione appartiene a un pod in esecuzione localmente su questo nodo e inoltra il pacchetto al pod corretto tramite le interfacce virtuali appropriate:

```
Original packet -> node routing -> CNI -> Pod's network namespace
```

Il server webhook nel pod riceve la richiesta e la elabora.

### Risposta
<a name="_response_5"></a>

Dopo che il pod del webhook ha elaborato la richiesta, restituisce una risposta seguendo lo stesso percorso in senso inverso:

 **7. Il pod invia la risposta** 

Il pod del webhook crea un pacchetto di risposta con il proprio IP come origine e il richiedente originale (l’ENI del piano di controllo (control-plane) EKS) come destinazione:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.23 | Src: 8443           |                 |
| Dst: 10.0.0.132 | Dst: 41892          |                 |
+-----------------+---------------------+-----------------+
```

La CNI identifica che questo pacchetto va a una rete esterna (non a un pod locale) e lo passa allo stack di rete del nodo mantenendo l’IP di origine originale.

 **6. Elaborazione della rete del nodo** 

Il nodo determina che l’IP di destinazione (`10.0.0.132`) non si trova nella rete locale e inoltra il pacchetto al gateway predefinito (il router locale).

 **5. Routing del router locale** 

Il router locale consulta la sua tabella di routing e determina che l’IP di destinazione (`10.0.0.132`) appartiene al CIDR del VPC (`10.0.0.0/16`). Inoltra il pacchetto al gateway che si connette a AWS.

 **4. Transito oltre il limite** 

Il pacchetto torna indietro attraverso la stessa connessione on-premises al VPC, superando il limite del cloud nella direzione opposta.

 **3. Routing del VPC** 

Quando il pacchetto arriva nel VPC, le tabelle di routing identificano che l’IP di destinazione appartiene a una sottorete all’interno del VPC. Il pacchetto viene instradato di conseguenza all’interno del VPC.

 **2. e 1. Ricezione dell’ENI del piano di controllo (control-plane) EKS** 

Il pacchetto raggiunge l’ENI collegata al server API Kubernetes, completando il viaggio di andata e ritorno. Il server API riceve la risposta del webhook e continua a elaborare la richiesta API originale in base a tale risposta.

Questo flusso di traffico dimostra perché il pod remoto CIDRs deve essere configurato e instradato correttamente:
+ Il VPC deve disporre di percorsi per il pod remoto che CIDRs puntano al gateway locale
+ La rete locale deve disporre di percorsi per i pod CIDRs che indirizzano il traffico verso i nodi specifici che ospitano tali pod
+ Senza questa configurazione di routing, i webhook e altri servizi simili eseguiti in pod su nodi ibridi non sarebbero raggiungibili dal piano di controllo (control-plane) EKS.

## Pod-to-Pod in esecuzione su nodi ibridi
<a name="hybrid-nodes-concepts-traffic-flows-pod-to-pod"></a>

![\[Da pod a pod in esecuzione su nodi ibridi\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-pod-to-pod.png)


Questa sezione spiega come i pod in esecuzione su diversi nodi ibridi comunicano tra loro. Questo esempio presuppone che il CNI utilizzi VXLAN per l'incapsulamento, operazione comune per CNIs Cilium o Calico. Il processo complessivo è simile per altri protocolli di incapsulamento come Geneve o. IP-in-IP

### Richiesta
<a name="_request_6"></a>

 **1. Il pod A avvia la comunicazione** 

Il pod A (`10.85.1.56`) sul nodo 1 desidera inviare traffico al pod B (`10.85.2.67`) sul nodo 2. Il pacchetto iniziale appare come riportato di seguito:

```
+------------------+-----------------+-------------+-----------------+
| Ethernet Header  | IP Header       | TCP/UDP     | Payload         |
| Src: Pod A MAC   | Src: 10.85.1.56 | Src: 43721  |                 |
| Dst: Gateway MAC | Dst: 10.85.2.67 | Dst: 8080   |                 |
+------------------+-----------------+-------------+-----------------+
```

 **2. La CNI intercetta ed elabora il pacchetto** 

Quando il pacchetto del pod A lascia il suo namespace di rete, la CNI lo intercetta. La CNI consulta la sua tabella di routing e determina i seguenti elementi: - L’IP di destinazione (`10.85.2.67`) appartiene al CIDR del pod - Questo IP non si trova sul nodo locale ma appartiene al nodo 2 (`10.80.0.3`) - Il pacchetto deve essere incapsulato con VXLAN.

La decisione di incapsulare è fondamentale perché la rete fisica sottostante non sa come indirizzare CIDRs direttamente i pod, ma solo come instradare il traffico tra i nodi. IPs

La CNI incapsula l’intero pacchetto originale all’interno di un frame VXLAN. Questo crea effettivamente un “pacchetto all’interno di un pacchetto” con nuovi header:

```
+-----------------+----------------+--------------+------------+---------------------------+
| Outer Ethernet  | Outer IP       | Outer UDP    | VXLAN      | Original Pod-to-Pod       |
| Src: Node1 MAC  | Src: 10.80.0.2 | Src: Random  | VNI: 42    | Packet (unchanged         |
| Dst: Router MAC | Dst: 10.80.0.3 | Dst: 8472    |            | from above)               |
+-----------------+----------------+--------------+------------+---------------------------+
```

Punti chiave di questo incapsulamento: - Il pacchetto esterno viene indirizzato dal nodo 1 (`10.80.0.2`) al nodo 2 (`10.80.0.3`) - La porta UDP `8472` è la porta VXLAN utilizzata da Cilium per impostazione predefinita - Il VXLAN Network Identifier (VNI) identifica a quale rete sovrapposta appartiene tale pacchetto - L’intero pacchetto originale (con l’IP del pod A come origine e l’IP del pod B come destinazione) è conservato intatto all’interno

Il pacchetto incapsulato entra ora nel normale stack di rete del nodo 1 e viene elaborato allo stesso modo di qualsiasi altro pacchetto:

1.  **Elaborazione della rete del nodo**: lo stack di rete del nodo 1 indirizza il pacchetto in base alla sua destinazione (`10.80.0.3`)

1.  **Distribuzione della rete locale**:
   + Se entrambi i nodi si trovano sulla stessa rete di livello 2, il pacchetto viene inviato direttamente al nodo 2
   + Se si trovano su sottoreti diverse, il pacchetto viene prima inoltrato al router locale

1.  **Gestione del router**: il router inoltra il pacchetto in base alla sua tabella di routing, distribuendolo al nodo 2

 **3. Elaborazione dei nodi di ricezione** 

Quando il pacchetto incapsulato arriva al nodo 2 (`10.80.0.3`):

1. Lo stack di rete del nodo lo riceve e lo identifica come pacchetto VXLAN (porta UDP `4789`)

1. Il pacchetto viene passato all’interfaccia VXLAN della CNI per l’elaborazione

 **4. Decapsulazione VXLAN** 

La CNI sul nodo 2 elabora il pacchetto VXLAN:

1. Elimina gli header esterni (Ethernet, IP, UDP e VXLAN).

1. Estrae il pacchetto interno originale.

1. Il pacchetto è ora tornato alla sua forma originale:

```
+------------------+-----------------+-------------+-----------------+
| Ethernet Header  | IP Header       | TCP/UDP     | Payload         |
| Src: Pod A MAC   | Src: 10.85.1.56 | Src: 43721  |                 |
| Dst: Gateway MAC | Dst: 10.85.2.67 | Dst: 8080   |                 |
+------------------+-----------------+-------------+-----------------+
```

La CNI sul nodo 2 esamina l’IP di destinazione (`10.85.2.67`) e:

1. Identifica che questo IP appartiene a un pod locale.

1. Instrada il pacchetto attraverso le interfacce virtuali appropriate.

1. Fornisce il pacchetto al namespace di rete del pod B.

### Risposta
<a name="_response_6"></a>

Quando il pod B risponde al pod A, l’intero processo avviene al contrario:

1. Il pod B invia un pacchetto al pod A (`10.85.1.56`).

1. La CNI del nodo 2 lo incapsula con VXLAN, impostando la destinazione sul nodo 1 (`10.80.0.2`).

1. Il pacchetto incapsulato viene consegnato al nodo 1.

1. La CNI del nodo 1 lo decapsula e fornisce la risposta originale al pod A.

## Da pod su nodi cloud a pod su nodi ibridi (traffico est-ovest)
<a name="hybrid-nodes-concepts-traffic-flows-east-west"></a>

![\[Da pod su nodi cloud a pod su nodi ibridi\]](http://docs.aws.amazon.com/it_it/eks/latest/userguide/images/hybrid-nodes-east-west.png)


### Richiesta
<a name="_request_7"></a>

 **1. Il pod A avvia la comunicazione** 

Il Pod A (`10.0.0.56`) sul EC2 nodo desidera inviare traffico al Pod B (`10.85.1.56`) sul nodo ibrido. Il pacchetto iniziale appare come riportato di seguito:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.56  | Src: 52390 (random) |                 |
| Dst: 10.85.1.56 | Dst: 8080           |                 |
+-----------------+---------------------+-----------------+
```

Con il VPC CNI, il Pod A ha un IP dal VPC CIDR ed è collegato direttamente a un ENI sull'istanza. EC2 Il namespace di rete del pod è connesso alla rete del VPC, quindi il pacchetto entra direttamente nell’infrastruttura di routing VPC.

 **2. Routing del VPC** 

La tabella di routing VPC contiene una route specifica per il Remote Pod CIDR (`10.85.0.0/16`), che indirizza questo traffico verso il gateway: VPC-to-onprem

```
Destination     Target
10.0.0.0/16     local
10.85.0.0/16    vgw-id (VPC-to-onprem gateway)
```

In base a questa regola di routing, il pacchetto viene indirizzato verso il gateway che si connette alla rete on-premises.

 **3. Transito oltre il limite** 

Il gateway trasferisce il pacchetto oltre i limiti del cloud tramite la connessione stabilita (come Direct Connect o VPN) alla rete on-premises. Il pacchetto mantiene gli indirizzi IP di origine e di destinazione originali durante questo transito.

 **4. Ricezione nella rete on-premises** 

Il pacchetto arriva al router on-premises locale. Il router consulta la propria tabella di routing per determinare l’hop successivo per raggiungere l’indirizzo 10.85.1.56. Il router locale deve disporre di percorsi per il pod CIDRs che indirizzano il traffico verso il nodo ibrido appropriato.

La tabella del router contiene una voce che indica che la sottorete `10.85.1.0/24` è raggiungibile tramite il nodo ibrido con IP `10.80.0.2`:

```
Destination     Next Hop
10.85.1.0/24    10.80.0.2
```

 **5. Elaborazione della rete del nodo** 

Il router inoltra il pacchetto al nodo ibrido (`10.80.0.2`). Quando il pacchetto arriva al nodo, ha ancora l’IP del pod A come origine e l’IP del pod B come destinazione.

 **6. Elaborazione della CNI** 

Lo stack di rete del nodo riceve il pacchetto e, visto che l’IP di destinazione non è il proprio, lo passa alla CNI per l’elaborazione. La CNI identifica che l’IP di destinazione appartiene a un pod in esecuzione localmente su questo nodo e inoltra il pacchetto al pod corretto tramite le interfacce virtuali appropriate:

```
Original packet -> node routing -> CNI -> Pod B's network namespace
```

Il pod B riceve il pacchetto e lo elabora in base alle esigenze.

### Risposta
<a name="_response_7"></a>

 **6. Il pod B invia la risposta** 

Il pod B crea un pacchetto di risposta con il proprio IP come origine e l’IP del pod A come destinazione:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 8080           |                 |
| Dst: 10.0.0.56  | Dst: 52390          |                 |
+-----------------+---------------------+-----------------+
```

La CNI identifica che questo pacchetto è destinato a una rete esterna e lo passa allo stack di rete del nodo.

 **5. Elaborazione della rete del nodo** 

Il nodo determina che l’IP di destinazione (`10.0.0.56`) non appartiene alla rete locale e inoltra il pacchetto al gateway predefinito (il router locale).

 **4. Routing del router locale** 

Il router locale consulta la sua tabella di routing e determina che l’IP di destinazione (`10.0.0.56`) appartiene al CIDR del VPC (`10.0.0.0/16`). Inoltra il pacchetto al gateway che si connette a AWS.

 **3. Transito oltre il limite** 

Il pacchetto torna indietro attraverso la stessa connessione on-premises al VPC, superando il limite del cloud nella direzione opposta.

 **2. Routing del VPC** 

Quando il pacchetto arriva nel VPC, il sistema di routing identifica che l’IP di destinazione appartiene a una sottorete all’interno del VPC. Il pacchetto viene instradato attraverso la rete VPC verso l'istanza che ospita il EC2 Pod A.

 **1. Il pod A riceve la risposta** 

Il pacchetto arriva all' EC2 istanza e viene consegnato direttamente al Pod A tramite l'ENI collegato. Poiché la CNI del VPC non utilizza reti sovrapposte per i pod nel VPC, non è necessario alcun decapsulazione aggiuntivo: il pacchetto arriva con le intestazioni originali intatte.

Questo flusso di traffico est-ovest dimostra perché il pod remoto CIDRs deve essere configurato correttamente e instradabile da entrambe le direzioni:
+ Il VPC deve disporre di percorsi per il pod remoto che CIDRs puntano al gateway locale
+ La rete locale deve disporre di percorsi per i pod CIDRs che indirizzano il traffico verso i nodi specifici che ospitano tali pod.

# Riferimento `nodeadm` dei nodi ibridi
<a name="hybrid-nodes-nodeadm"></a>

La CLI Amazon EKS Hybrid Nodes (`nodeadm`) semplifica l’installazione, la configurazione, la registrazione e la disinstallazione dei componenti dei nodi ibridi. Puoi includere il `nodeadm` nelle immagini del tuo sistema operativo per automatizzare il bootstrap dei nodi ibridi, consulta [Preparazione del sistema operativo per i nodi ibridi](hybrid-nodes-os.md) per ulteriori informazioni.

La `nodeadm` versione per i nodi ibridi è diversa dalla `nodeadm` versione utilizzata per avviare le istanze EC2 Amazon come nodi nei cluster Amazon EKS. Consulta la documentazione e i riferimenti per la versione del `nodeadm` appropriata. Questa pagina di documentazione riguarda la versione del `nodeadm` per i nodi ibridi.

Il codice sorgente per i nodi ibridi `nodeadm` è pubblicato nel repository eks-hybrid. https://github.com/aws/ GitHub 

**Importante**  
È necessario eseguire l'esecuzione `nodeadm` con un utente con privilegi. root/sudo 

## Scarica `nodeadm`
<a name="_download_nodeadm"></a>

La versione con nodi ibridi di `nodeadm` è ospitata in Amazon S3 gestita da Amazon. CloudFront Per installare `nodeadm` su ciascun host on-premises puoi eseguire il seguente comando dai tuoi host on-premises.

 **Per host x86\$164** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
```

 **Per host ARM** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
```

Aggiungi l’autorizzazione per i file eseguibili al file binario scaricato su ciascun host.

```
chmod +x nodeadm
```

## `nodeadm install`
<a name="_nodeadm_install"></a>

Il comando `nodeadm install` viene utilizzato per installare gli artefatti e le dipendenze necessari per eseguire e unire nodi ibridi a un cluster Amazon EKS. Il comando `nodeadm install` può essere eseguito singolarmente su ciascun nodo ibrido o può essere eseguito durante le pipeline di creazione delle immagini per preinstallare le dipendenze dei nodi ibridi nelle immagini del sistema operativo.

 **Utilizzo** 

```
nodeadm install [KUBERNETES_VERSION] [flags]
```

 **Argomenti posizionali** 

(Obbligatorio) `KUBERNETES_VERSION` La versione major.minor di EKS Kubernetes da installare, ad esempio `1.32` 

 **Flag** 


| Name | Richiesto | Description | 
| --- | --- | --- | 
|   `-p`,  `--credential-provider`   |  TRUE  |  Provider di credenziali da installare. I valori supportati sono `iam-ra` e `ssm`. Per ulteriori informazioni, consulta [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).  | 
|   `-s`,  `--containerd-source`   |  FALSE  |  Origine per `containerd`. `nodeadm` supporta l’installazione di `containerd` dalla distribuzione del sistema operativo, i pacchetti Docker e la possibilità di saltare l’installazione di `containerd`.  **Valori**   `distro`- Questo è il valore predefinito. `nodeadm`installerà il `containerd` pacchetto più recente distribuito dal sistema operativo del nodo compatibile con la versione EKS Kubernetes. `distro`non è un valore supportato per i sistemi operativi Red Hat Enterprise Linux (RHEL).  `docker`- `nodeadm` installerà l'ultimo `containerd` pacchetto creato e distribuito da Docker compatibile con la versione EKS Kubernetes. `docker`non è un valore supportato per Amazon Linux 2023.  `none`: `nodeadm` non installerà il pacchetto `containerd`. Devi installare manualmente `containerd` prima di eseguire `nodeadm init`.  | 
|   `-r`,  `--region`   |  FALSE  |  Speciifica la AWS regione per il download di artefatti come l'agente SSM. L’impostazione predefinita è `us-west-2`.  | 
|   `-t`,  `--timeout`   |  FALSE  |  Durata massima del comando di installazione. L’input segue il formato della durata. Ad esempio, `1h23m`. Il timeout per il download predefinito per il comando di installazione è impostato su 20 minuti.  | 
|   `-h`, `--help`   |  FALSE  |  Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.  | 

 **Esempi** 

Installa la versione Kubernetes con AWS Systems `1.32` Manager (SSM) come provider di credenziali

```
nodeadm install 1.32 --credential-provider ssm
```

Installa la versione Kubernetes con AWS Systems `1.32` Manager (SSM) come provider di credenziali, Docker come origine containerd, con un timeout di download di 20 minuti.

```
nodeadm install 1.32 --credential-provider ssm --containerd-source docker --timeout 20m
```

Installa la versione Kubernetes con IAM Roles Anywhere come provider di credenziali `1.32` AWS 

```
nodeadm install 1.32 --credential-provider iam-ra
```

## `nodeadm config check`
<a name="_nodeadm_config_check"></a>

Il comando `nodeadm config check` verifica la presenza di errori nella configurazione del nodo fornita. Questo comando può essere utilizzato per verificare e confermare la correttezza di un file di configurazione del nodo ibrido.

 **Utilizzo** 

```
nodeadm config check [flags]
```

 **Flag** 


| Name | Richiesto | Description | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  TRUE  |  Origine della configurazione di nodeadm. Per i nodi ibridi, l’input deve seguire un URI con schema di file.  | 
|   `-h`, `--help`   |  FALSE  |  Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.  | 

 **Esempi** 

```
nodeadm config check -c file://nodeConfig.yaml
```

## `nodeadm init`
<a name="_nodeadm_init"></a>

Il comando `nodeadm init` avvia e connette il nodo ibrido con il cluster Amazon EKS configurato. Consulta [Configurazione del modo per attivazioni ibride SSM](#hybrid-nodes-node-config-ssm) o [Configurazione del nodo per IAM Roles Anywhere](#hybrid-nodes-node-config-iamra) per i dettagli su come configurare il file `nodeConfig.yaml`.

 **Utilizzo** 

```
nodeadm init [flags]
```

 **Flag** 


| Name | Richiesto | Description | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  TRUE  |  Origine della configurazione di `nodeadm`. Per i nodi ibridi, l’input deve seguire un URI con schema di file.  | 
|   `-s`,  `--skip`   |  FALSE  |  Fasi di `init` da saltare. Non è consigliabile saltare nessuna delle fasi a meno che non sia utile per risolvere un problema.  **Valori**   `install-validation` salta la verifica se il comando di installazione precedente è stato eseguito correttamente.  `cni-validation` salta la verifica se le porte VXLAN della CNI di Cilium o di Calico sono aperte se il firewall è abilitato sul nodo  `node-ip-validation` salta la verifica se l’IP del nodo rientra in un CIDR nelle reti dei nodi remoti  | 
|   `-h`, `--help`   |  FALSE  |  Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.  | 

 **Esempi** 

```
nodeadm init -c file://nodeConfig.yaml
```

## `nodeadm upgrade`
<a name="_nodeadm_upgrade"></a>

Il comando `nodeadm upgrade` aggiorna tutti gli artefatti installati alla versione più recente e avvia il nodo per configurare gli artefatti aggiornati e unirsi al cluster EKS su AWS. Upgrade è un comando che interrompe i carichi di lavoro in esecuzione sul nodo. Devi spostare i carichi di lavoro su un altro nodo prima di eseguire l’aggiornamento.

 **Utilizzo** 

```
nodeadm upgrade [KUBERNETES_VERSION] [flags]
```

 **Argomenti posizionali** 

(Obbligatorio) `KUBERNETES_VERSION` La versione major.minor di EKS Kubernetes da installare, ad esempio `1.32` 

 **Flag** 


| Name | Richiesto | Description | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  TRUE  |  Origine della configurazione di `nodeadm`. Per i nodi ibridi, l’input deve seguire un URI con schema di file.  | 
|   `-t`,  `--timeout`   |  FALSE  |  Timeout per il download degli artefatti. L’input segue il formato della durata. Ad esempio 1h23m. Il timeout per il download predefinito per il comando di aggiornamento è impostato su 10 minuti.  | 
|   `-s`,  `--skip`   |  FALSE  |  Fasi dell’aggiornamento da saltare. Non è consigliabile saltare nessuna Passaggio a meno che non sia utile per risolvere un problema.  **Valori**   `pod-validation` salta la verifica se tutti i pod sono in esecuzione sul nodo, tranne i set daemon e i pod statici.  `node-validation` salta la verifica se il nodo è stato isolato.  `init-validation` salta la verifica se il nodo è stato inizializzato correttamente prima di eseguire l’aggiornamento.  `containerd-major-version-upgrade`impedisce gli aggiornamenti delle versioni principali di containerd durante l'aggiornamento del nodo.  | 
|   `-h`, `--help`   |  FALSE  |  Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.  | 

 **Esempi** 

```
nodeadm upgrade 1.32 -c file://nodeConfig.yaml
```

```
nodeadm upgrade 1.32 -c file://nodeConfig.yaml --timeout 20m
```

## `nodeadm uninstall`
<a name="_nodeadm_uninstall"></a>

Il comando `nodeadm uninstall` arresta e rimuove gli artefatti che `nodeadm` installa durante `nodeadm install`, inclusi kubelet e containerd. Attenzione, il comando di disinstallazione non scarica né elimina i nodi ibridi dal cluster. Devi eseguire le operazioni di scaricamento ed eliminazione separatamente, consulta [Rimuovi i nodi ibridi](hybrid-nodes-remove.md) per ulteriori informazioni. Per impostazione predefinita, `nodeadm uninstall` non proseguirà se sul nodo rimangono dei pod. Allo stesso modo, `nodeadm uninstall` non rimuove le dipendenze CNI o le dipendenze di altri componenti aggiuntivi di Kubernetes eseguiti sul cluster. Per rimuovere completamente l’installazione CNI dal tuo host, consulta le istruzioni contenute in [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md). Se utilizzi attivazioni ibride AWS SSM come provider di credenziali locale, il `nodeadm uninstall` comando annulla la registrazione degli host come istanze gestite tramite SSM. AWS 

 **Utilizzo** 

```
nodeadm uninstall [flags]
```

 **Flag** 


| Name | Richiesto | Description | 
| --- | --- | --- | 
|   `-s`,  `--skip`   |  FALSE  |  Fasi di disinstallazione da saltare. Non è consigliabile saltare nessuna delle fasi a meno che non sia utile per risolvere un problema.  **Valori**   `pod-validation` salta la verifica se tutti i pod sono in esecuzione sul nodo, tranne i set daemon e i pod statici.  `node-validation` salta la verifica se il nodo è stato isolato.  `init-validation` salta la verifica se il nodo è stato inizializzato correttamente prima di eseguire la disinstallazione.  | 
|   `-h`,  `--help`   |  FALSE  |  Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.  | 
|   `-f`,  `--force`   |  FALSE  |  Forza l’eliminazione delle directory aggiuntive che potrebbero contenere file rimanenti dai componenti Kubernetes e CNI.  **ATTENZIONE**  Ciò eliminerà tutti i contenuti nelle directory Kubernetes e CNI predefinite (`/var/lib/cni`, `/etc/cni/net.d`, ecc.). Non utilizzare questo flag se memorizzi i tuoi dati in queste posizioni. A partire dalla versione `v1.0.9` di nodeadm, il comando `./nodeadm uninstall --skip node-validation,pod-validation --force` non elimina più la directory `/var/lib/kubelet`. Questo perché può contenere volumi Pod e directory volume-subpath che a volte includono il filesystem dei nodi montato.  **Suggerimenti per una gestione sicura**  L’eliminazione dei percorsi montati può portare alla cancellazione accidentale dell’effettivo filesystem dei nodi montati. Prima di eliminare manualmente la directory `/var/lib/kubelet`, ispeziona attentamente tutti i montaggi attivi e smonta i volumi in modo sicuro per evitare la perdita di dati.  | 

 **Esempi** 

```
nodeadm uninstall
```

```
nodeadm uninstall --skip node-validation,pod-validation
```

## `nodeadm debug`
<a name="_nodeadm_debug"></a>

Il comando `nodeadm debug` può essere utilizzato per risolvere i problemi relativi ai nodi ibridi non integri o configurati in modo errato. Verifica che i seguenti requisiti siano soddisfatti.
+ Il nodo ha accesso alla rete necessaria per ottenere le credenziali, AWS APIs 
+ Il nodo è in grado di ottenere AWS le credenziali per il ruolo IAM di Hybrid Nodes configurato,
+ Il nodo ha accesso di rete all’endpoint dell’API EKS Kubernetes e ha la validità del certificato endpoint dell’API EKS Kubernetes.
+ Il nodo è in grado di autenticarsi con il cluster EKS, la sua identità nel cluster è valida e ha accesso al cluster EKS tramite il VPC configurato per il cluster EKS.

Se vengono rilevati errori, l’output del comando suggerisce le procedure per la risoluzione dei problemi. Alcuni passaggi di conferma mostrano le procedure secondarie. Se queste non funzionano, l’output viene mostrato in una sezione stderr sotto l’errore di convalida.

 **Utilizzo** 

```
nodeadm debug [flags]
```

 **Flag** 


| Name | Richiesto | Description | 
| --- | --- | --- | 
|   `-c`, `--config-source`   |  TRUE  |  Origine della configurazione di `nodeadm`. Per i nodi ibridi, l’input deve seguire un URI con schema di file.  | 
|   `--no-color`   |  FALSE  |  Disattiva l’output a colori. Utile per l’automazione.  | 
|   `-h`, `--help`   |  FALSE  |  Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.  | 

 **Esempi** 

```
nodeadm debug -c file://nodeConfig.yaml
```

## Posizioni dei file nodeadm
<a name="_nodeadm_file_locations"></a>

### installazione di nodeadm
<a name="_nodeadm_install_2"></a>

Durante l’esecuzione di `nodeadm install`, vengono configurati i seguenti file e posizioni dei file.


| Artifact | Path | 
| --- | --- | 
|  CLI IAM Roles Anywhere  |  /usr/local/bin/aws\$1signing\$1helper  | 
|  Binario Kubelet  |  /usr/bin/kubelet  | 
|  Binario Kubectl  |  usr/local/bin/kubectl  | 
|  Provider di credenziali ECR  |  /etc/eks/image-credential-provider/ecr-fornitore di credenziali  | 
|   AWS Autenticatore IAM  |  /-iam-authenticator usr/local/bin/aws  | 
|  CLI di configurazione SSM  |  /opt/ssm/ssm-setup-cli  | 
|  Agente SSM  |  Su Ubuntu -/-ssm-agent snap/amazon-ssm-agent/current/amazon Su RHEL e 023 -/-ssm-agent AL2 usr/bin/amazon  | 
|  Containerd  |  Su Ubuntu e 023 -/ AL2usr/bin/containerd Su RHEL - /bin/containerd  | 
|  Iptables  |  Su Ubuntu e AL2 023 -/usr/sbin/iptables Su RHEL - /sbin/iptables  | 
|  Plug-in CNI  |  /opt/cni/bin  | 
|  tracciatore di artefatti installati  |  /opt/nodeadm/tracker  | 

### nodeadm init
<a name="_nodeadm_init_2"></a>

Durante l’esecuzione di `nodeadm init`, vengono configurati i file e le posizioni seguenti dei file.


| Name | Path | 
| --- | --- | 
|  Kubelet kubeconfig  |  /var/lib/kubelet/kubeconfig  | 
|  Configurazione di Kubelet  |  /.json etc/kubernetes/kubelet/config  | 
|  Unità Kubelet systemd  |  /.servizio etc/systemd/system/kubelet  | 
|  Configurazione del provider di credenziali di immagine  |  /.json etc/eks/image-credential-provider/config  | 
|  File env Kubelet  |  /etc/eks/kubelet/environment  | 
|  Certificati Kubelet  |  /.crt etc/kubernetes/pki/ca  | 
|  Configurazione di Containerd  |  /.toml etc/containerd/config  | 
|  Configurazione dei moduli del kernel Containerd  |  /.conf etc/modules-load.d/contianerd  | 
|   AWS file di configurazione  |  /etc/aws/hybrid/config  | 
|   AWS file di credenziali (se abilita il file delle credenziali)  |  /eks-hybrid/.aws/credentials  | 
|   AWS unità di sistema di supporto alla firma  |  /etc/systemd/system/aws\$1signing\$1helper\$1update.service  | 
|  File conf sysctl  |  /etc/sysctl.d/99-nodeadm.conf  | 
|  Ca-certificates  |  /etc/ssl/certs/ca-certificati.crt  | 
|  File chiave Gpg  |  /etc/apt/keyrings/docker.asc  | 
|  File di origine del repository Docker  |  /.lista etc/apt/sources.list.d/docker  | 

## Configurazione del modo per attivazioni ibride SSM
<a name="hybrid-nodes-node-config-ssm"></a>

Di seguito è riportato un esempio `nodeConfig.yaml` di utilizzo delle attivazioni ibride AWS SSM per le credenziali dei nodi ibridi.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

## Configurazione del nodo per IAM Roles Anywhere
<a name="hybrid-nodes-node-config-iamra"></a>

Di seguito è riportato un esempio di `nodeConfig.yaml` credenziali AWS IAM Roles Anywhere per nodi ibridi.

Quando utilizzi AWS IAM Roles Anywhere come provider di credenziali locale, le `nodeName` credenziali utilizzate nella `nodeadm` configurazione devono essere in linea con le autorizzazioni previste per il ruolo IAM di Hybrid Nodes. Ad esempio, se le autorizzazioni per il ruolo IAM di Hybrid Nodes consentono a AWS IAM Roles Anywhere di assumere il ruolo solo quando il nome della sessione del ruolo è uguale al CN del certificato host, allora la `nodeName` `nodeadm` configurazione deve essere la stessa del CN dei tuoi certificati. Il `nodeName` che usi non può contenere più di 64 caratteri. Per ulteriori informazioni, consulta [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:              # Name of the EKS cluster
    region:            # AWS Region where the EKS cluster resides
  hybrid:
    iamRolesAnywhere:
      nodeName:        # Name of the node
      trustAnchorArn:  # ARN of the IAM Roles Anywhere trust anchor
      profileArn:      # ARN of the IAM Roles Anywhere profile
      roleArn:         # ARN of the Hybrid Nodes IAM role
      certificatePath: # Path to the certificate file to authenticate with the IAM Roles Anywhere trust anchor
      privateKeyPath:  # Path to the private key file for the certificate
```

## Configurazione del nodo per personalizzare kubelet (Facoltativo)
<a name="hybrid-nodes-nodeadm-kubelet"></a>

Puoi passare la configurazione e i flag di kubelet nella tua configurazione `nodeadm`. Vedi l’esempio seguente su come aggiungere un’etichetta `abc.amazonaws.com/test-label` e una configurazione del nodo aggiuntive per l’impostazione di `shutdownGracePeriod` su 30 secondi.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  kubelet:
    config:           # Map of kubelet config and values
       shutdownGracePeriod: 30s
    flags:            # List of kubelet flags
       - --node-labels=abc.company.com/test-label=true
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

## Configurazione del nodo per personalizzare containerd (Facoltativo)
<a name="_node_config_for_customizing_containerd_optional"></a>

Puoi passare la configurazione containerd personalizzata nella tua configurazione `nodeadm`. La configurazione containerd per `nodeadm` accetta TOML in linea. Vedi l’esempio seguente su come configurare containerd per disabilitare l’eliminazione dei livelli di immagine decompressi nel content store containerd.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  containerd:
    config: |         # Inline TOML containerd additional configuration
       [plugins."io.containerd.grpc.v1.cri".containerd]
       discard_unpacked_layers = false
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

**Nota**  
Le versioni 1.x e 2.x di Containerd utilizzano formati di configurazione diversi. Containerd 1.x utilizza la versione 2 di configurazione, mentre containerd 2.x utilizza la versione 3 di configurazione. Sebbene containerd 2.x rimanga retrocompatibile con la versione 2 di configurazione, la versione 3 è consigliata per prestazioni ottimali. Controlla la versione containerd in uso o `nodeadm` consulta i log di `containerd --version` installazione. Per maggiori dettagli sul controllo delle versioni di configurazione, consulta https://containerd.io/releases/

Puoi anche usare la configurazione containerd per abilitare il supporto. SELinux Con SELinux enabled on containerd, assicurati che i pod programmati sul nodo abbiano il SecurityContext corretto e siano abilitati. seLinuxOptions Ulteriori informazioni sulla configurazione di un contesto di sicurezza sono disponibili in [Kubernetes documentation](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).

**Nota**  
Red Hat Enterprise Linux (RHEL) 8 e RHEL 9 sono SELinux abilitati di default e impostati su strict sull'host. Amazon Linux 2023 è SELinux abilitato per impostazione predefinita e impostato in modalità permissiva. Quando SELinux è impostata la modalità permissiva sull'host, abilitarla su containerd non bloccherà le richieste ma le registrerà in base alla configurazione sull'host. SELinux 

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  containerd:
    config: |         # Inline TOML containerd additional configuration
       [plugins."io.containerd.grpc.v1.cri"]
       enable_selinux = true
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

# Risoluzione dei problemi relativi ai nodi ibridi
<a name="hybrid-nodes-troubleshooting"></a>

Questo argomento illustra alcuni errori comuni che si potrebbero verificare durante l’utilizzo di Amazon EKS Hybrid Nodes, e il modo in cui ripararli. Per altre informazioni sulla risoluzione dei problemi, consulta [Risoluzione dei problemi con i cluster e i nodi Amazon EKS](troubleshooting.md) il [tag Knowledge Center per Amazon EKS](https://repost.aws/tags/knowledge-center/TA4IvCeWI1TE66q4jEj4Z9zg/amazon-elastic-kubernetes-service) su * AWS re:POST*. Se non riesci a risolvere il problema, contatta l' AWS assistenza.

 **Risoluzione dei problemi dei nodi con `nodeadm debug`**. Puoi eseguire il comando `nodeadm debug` dai nodi ibridi per verificare che i requisiti di rete e le credenziali siano soddisfatti. Per ulteriori informazioni sul comando `nodeadm debug`, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).

 **Rileva i problemi con i tuoi nodi ibridi con le informazioni sul cluster**. Le informazioni sul cluster Amazon EKS includono *controlli approfonditi* che rilevano problemi comuni con la configurazione dei nodi ibridi EKS nel cluster. È possibile visualizzare i risultati di tutti i controlli approfonditi da Console di gestione AWS, AWS CLI e. AWS SDKs Per ulteriori informazioni sulle informazioni sul cluster, consulta [Prepararsi agli aggiornamenti delle versioni di Kubernetes e risolvere i problemi di configurazione errata con gli approfondimenti sui cluster](cluster-insights.md).

## Risoluzione dei problemi di installazione dei nodi ibridi
<a name="hybrid-nodes-troubleshooting-install"></a>

I seguenti argomenti di risoluzione dei problemi riguardano l’installazione delle dipendenze dei nodi ibridi sugli host con il comando `nodeadm install`.

 ** Comando `nodeadm` non riuscito per `must run as root` ** 

Il comando `nodeadm install` deve essere eseguito con un utente che dispone di root o privilegi `sudo` sull’host. Se esegui `nodeadm install` con un utente che non dispone di root o privilegi `sudo`, nell’output `nodeadm` verrà visualizzato il seguente errore.

```
"msg":"Command failed","error":"must run as root"
```

 **Impossibile connettersi alle dipendenze** 

Il comando `nodeadm install` installa le dipendenze richieste per i nodi ibridi. Le dipendenze dei nodi ibridi includono`containerd`, `kubelet``kubectl`, e componenti AWS SSM o AWS IAM Roles Anywhere. Devi avere accesso da dove stai eseguendo `nodeadm install` per scaricare queste dipendenze. Per ulteriori informazioni sull’elenco delle posizioni a cui devi poter accedere, consulta [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md). Se non disponi dell’accesso, nell’output `nodeadm install` verranno visualizzati errori simili ai seguenti.

```
"msg":"Command failed","error":"failed reading file from url: ...: max retries achieved for http request"
```

 **Impossibile aggiornare il gestore di pacchetti** 

Il comando `nodeadm install` esegue `apt update`, `yum update` o `dnf update` prima dell’installazione delle dipendenze dei nodi ibridi. Se questo passaggio non ha esito positivo, potresti visualizzare errori simili ai seguenti. Per rimediare, puoi eseguire `apt update`, `yum update` o `dnf update` prima di eseguire `nodeadm install` oppure puoi provare a rieseguire `nodeadm install`.

```
failed to run update using package manager
```

 **Scadenza di un timeout o di un contesto superata** 

Durante l’esecuzione di `nodeadm install`, se riscontri problemi in varie fasi del processo di installazione con errori che indicano che è stata superata la scadenza di un timeout o di un contesto, è possibile che la connessione sia lenta e impedisca l’installazione delle dipendenze dei nodi ibridi prima del raggiungimento dei timeout. Per risolvere questi problemi, puoi provare a utilizzare il flag `--timeout` in `nodeadm` per estendere la durata dei timeout per il download delle dipendenze.

```
nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --timeout 20m0s
```

## Risoluzione dei problemi di connessione dei nodi ibridi
<a name="hybrid-nodes-troubleshooting-connect"></a>

Gli argomenti di risoluzione dei problemi in questa sezione riguardano il processo di connessione dei nodi ibridi ai cluster EKS con il comando `nodeadm init`.

 **Errori operativi o schema non supportato** 

Durante l’esecuzione di `nodeadm init`, se vedi errori relativi a `operation error` o`unsupported scheme`, controlla `nodeConfig.yaml` per assicurarti che sia formattato e passato correttamente a `nodeadm`. Per ulteriori informazioni sul formato e le opzioni per `nodeConfig.yaml`, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).

```
"msg":"Command failed","error":"operation error ec2imds: GetRegion, request canceled, context deadline exceeded"
```

 **Al ruolo IAM dei nodi ibridi mancano le autorizzazioni per l’azione `eks:DescribeCluster`** 

Durante l'esecuzione`nodeadm init`, `nodeadm` tenta di raccogliere informazioni sul cluster EKS richiamando l'azione EKS`DescribeCluster`. Se il ruolo IAM di Hybrid Nodes non dispone dell'autorizzazione per l'`eks:DescribeCluster`azione, devi passare l'endpoint dell'API Kubernetes, il bundle CA del cluster e il servizio IPv4 CIDR nella configurazione del nodo a cui passi durante l'esecuzione. `nodeadm` `nodeadm init` Per ulteriori informazioni sulle autorizzazioni richieste per il ruolo IAM dei nodi ibridi, consulta [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).

```
"msg":"Command failed","error":"operation error EKS: DescribeCluster, https response error StatusCode: 403 ... AccessDeniedException"
```

 **Al ruolo IAM dei nodi ibridi mancano le autorizzazioni per l’azione `eks:ListAccessEntries`** 

Durante l'esecuzione`nodeadm init`, `nodeadm` tenta di verificare se il cluster EKS dispone di una voce di accesso di tipo `HYBRID_LINUX` associata al ruolo IAM di Hybrid Nodes richiamando l'azione EKS. `ListAccessEntries` Se il ruolo IAM di Hybrid Nodes non dispone dell'autorizzazione per l'`eks:ListAccessEntries`azione, è necessario passare il `--skip cluster-access-validation` flag quando si esegue il `nodeadm init` comando. Per ulteriori informazioni sulle autorizzazioni richieste per il ruolo IAM dei nodi ibridi, consulta [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md).

```
"msg":"Command failed","error":"operation error EKS: ListAccessEntries, https response error StatusCode: 403 ... AccessDeniedException"
```

 **IP del nodo non presente nella rete di nodi remoti CIDR** 

Durante l'esecuzione`nodeadm init`, potresti riscontrare un errore se l'indirizzo IP del nodo non si trova all'interno della rete di nodi remoti specificata CIDRs. L’aspetto dell’errore sarà simile all’esempio seguente:

```
node IP 10.18.0.1 is not in any of the remote network CIDR blocks [10.0.0.0/16 192.168.0.0/16]
```

Questo esempio mostra un nodo con IP 10.18.0.1 che tenta di unirsi a un cluster con la rete remota CIDRs 10.0.0.0/16 e 192.168.0.0/16. L’errore si verifica perché 10.18.0.1 non rientra in nessuno degli intervalli.

Conferma di aver configurato correttamente i tuoi indirizzi IP `RemoteNodeNetworks` per includere tutti gli indirizzi IP del nodo. Per ulteriori informazioni sulla configurazione delle reti, consulta [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md).
+ Esegui il comando seguente nella regione in cui si trova il cluster per verificare le configurazioni `RemoteNodeNetwork`. Verifica che i blocchi CIDR elencati nell’output includano l’intervallo IP del nodo e corrispondano ai blocchi CIDR elencati nel messaggio di errore. Se non corrispondono, conferma che il nome e la regione del cluster `nodeConfig.yaml` corrispondano al cluster desiderato.

```
aws eks describe-cluster --name CLUSTER_NAME --region REGION_NAME --query cluster.remoteNetworkConfig.remoteNodeNetworks
```
+ Verifica di lavorare con il nodo desiderato:
  + Conferma di essere sul nodo corretto controllando che il nome host e l’indirizzo IP corrispondano a quelli che intendi registrare nel cluster.
  + Verifica che questo nodo si trovi nella rete on-premises corretta (quella il cui intervallo CIDR è stato registrato come `RemoteNodeNetwork` durante la configurazione del cluster).

Se l’IP del nodo non è ancora quello previsto, controlla quanto segue:
+ Se utilizzi IAM Roles Anywhere, `kubelet` esegue una ricerca DNS su IAM Roles Anywhere `nodeName` e utilizza un IP associato al nome del nodo, se disponibile. Se conservi le voci DNS per i tuoi nodi, verifica che queste voci puntino all'interno della tua rete di nodi remoti. IPs CIDRs
+ Se il tuo nodo ha più interfacce di rete, `kubelet` potresti selezionare un'interfaccia con un indirizzo IP esterno alla rete del nodo remoto CIDRs come impostazione predefinita. Per utilizzare un’interfaccia diversa, specifica il relativo indirizzo IP utilizzando il flag `--node-ip` `kubelet` nel tuo `nodeConfig.yaml`. Per ulteriori informazioni, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md). Puoi visualizzare le interfacce di rete del tuo nodo e i relativi indirizzi IP eseguendo il seguente comando sul tuo nodo:

```
ip addr show
```

 **I nodi ibridi non vengono visualizzati nel cluster EKS** 

Se hai eseguito `nodeadm init` ed è stato completato ma i nodi ibridi non compaiono nel cluster, potrebbero esserci problemi con la connessione di rete tra i nodi ibridi e il piano di controllo EKS, potresti non avere configurato le autorizzazioni richieste per i gruppi di sicurezza o potresti non avere la mappatura richiesta del ruolo IAM di dei nodi ibridi sul controllo degli accessi basato su ruoli (RBAC) di Kubernetes. Puoi avviare il processo di debug controllando lo stato di `kubelet` e i log `kubelet` con i seguenti comandi. Esegui i seguenti comandi dai nodi ibridi che non sono riusciti a entrare a far parte del cluster.

```
systemctl status kubelet
```

```
journalctl -u kubelet -f
```

 **Impossibile comunicare con il cluster** 

Se il nodo ibrido non è in grado di comunicare con il piano di controllo del cluster, potresti visualizzare log simili ai seguenti.

```
"Failed to ensure lease exists, will retry" err="Get ..."
```

```
"Unable to register node with API server" err="Post ..."
```

```
Failed to contact API server when waiting for CSINode publishing ... dial tcp <ip address>: i/o timeout
```

Se visualizzi questi messaggi, controlla quanto segue per assicurarti che soddisfi i requisiti dei nodi ibridi descritti in [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md).
+ Verifica che il VPC passato al cluster EKS abbia percorsi verso il tuo Transit Gateway (TGW) o Virtual Private Gateway (VGW) per il nodo locale e, facoltativamente, il pod. CIDRs
+ Conferma di disporre di un gruppo di sicurezza aggiuntivo per il cluster EKS che disponga di regole in entrata per il nodo locale e, facoltativamente, per il pod. CIDRs CIDRs
+ Verifica che il router on-premises sia configurato per consentire il traffico da e verso il piano di controllo EKS.

 **Non autorizzato** 

Se il nodo ibrido è in grado di comunicare con il piano di controllo EKS ma non è in grado di registrarsi, potresti visualizzare log simili ai seguenti. Nota che la differenza principale nei messaggi di log riportati di seguito è l’errore `Unauthorized`. Ciò indica che il nodo non è stato in grado di eseguire le proprie attività perché non dispone delle autorizzazioni richieste.

```
"Failed to ensure lease exists, will retry" err="Unauthorized"
```

```
"Unable to register node with API server" err="Unauthorized"
```

```
Failed to contact API server when waiting for CSINode publishing: Unauthorized
```

Se visualizzi questi messaggi, controlla quanto segue per assicurarti che soddisfi i dettagli dei requisiti dei nodi in [Preparazione delle credenziali per i nodi ibridi](hybrid-nodes-creds.md) e [Preparazione dell’accesso al cluster per i nodi ibridi](hybrid-nodes-cluster-prep.md).
+ Verifica che l’identità dei nodi ibridi corrisponda al ruolo IAM dei nodi ibridi previsto. Questo può essere fatto eseguendo `sudo aws sts get-caller-identity` dai tuoi nodi ibridi.
+ Verifica che il ruolo IAM dei nodi ibridi disponga delle autorizzazioni richieste.
+ Verifica che nel tuo cluster sia presente una voce di accesso EKS per il tuo ruolo IAM Hybrid Nodes o conferma di avere una voce per il `aws-auth` ConfigMap tuo ruolo IAM Hybrid Nodes. Se utilizzi le voci di accesso EKS, conferma che la voce di accesso per il ruolo IAM dei nodi ibridi abbia il tipo di accesso `HYBRID_LINUX`. Se utilizzi il `aws-auth` ConfigMap, conferma che la voce immessa per il ruolo IAM Hybrid Nodes soddisfa i requisiti e la formattazione descritti in[Preparazione dell’accesso al cluster per i nodi ibridi](hybrid-nodes-cluster-prep.md).

### I nodi ibridi sono registrati nel cluster EKS ma mostrano lo stato `Not Ready`
<a name="hybrid-nodes-troubleshooting-not-ready"></a>

Se i nodi ibridi sono registrati correttamente nel cluster EKS, ma mostrano lo stato `Not Ready`, la prima cosa da verificare è lo stato dell’interfaccia CNI (Container Networking Interface). Se non hai installato una CNI, si prevede che i nodi ibridi abbiano lo status `Not Ready`. Quando una CNI è installata e funziona correttamente, i nodi vengono aggiornati allo stato `Ready`. Se hai tentato di installare una CNI ma non funziona correttamente, consulta [Risoluzione dei problemi CNI dei nodi ibridi](#hybrid-nodes-troubleshooting-cni) su questa pagina.

 **Le richieste di firma dei certificati (CSRs) sono bloccate In sospeso** 

Dopo aver collegato i nodi ibridi al cluster EKS, se noti che ci sono nodi ibridi in sospeso CSRs , significa che i nodi ibridi non soddisfano i requisiti per l'approvazione automatica. CSRs per i nodi ibridi vengono approvati ed emessi automaticamente se i nodi CSRs per i nodi ibridi sono stati creati da un nodo con `eks.amazonaws.com/compute-type: hybrid` etichetta e il CSR ha i seguenti nomi alternativi del soggetto (SANs): almeno una SAN DNS uguale al nome del nodo e l'IP SANs appartengono alla rete del nodo remoto. CIDRs

 **Il profilo ibrido esiste già** 

Se hai modificato la configurazione `nodeadm` e tenti di registrare nuovamente il nodo con la nuova configurazione, potresti visualizzare un errore che indica che il profilo ibrido esiste già ma il suo contenuto è cambiato. Invece di eseguire l’operazione `nodeadm init` tra le modifiche alla configurazione, esegui `nodeadm uninstall` seguito da `nodeadm install` e `nodeadm init`. Ciò garantisce una corretta pulizia con le modifiche alla configurazione.

```
"msg":"Command failed","error":"hybrid profile already exists at /etc/aws/hybrid/config but its contents do not align with the expected configuration"
```

 **Il nodo ibrido non è riuscito a risolvere l’API privata** 

Dopo l’esecuzione di `nodeadm init`, se visualizzi un errore nei log `kubelet` che indica che non è stato possibile contattare il server dell’API EKS Kubernetes perché si è verificato `no such host`, potresti dover modificare la voce DNS per l’endpoint dell’API EKS Kubernetes nella rete on-premises o a livello di host. *Vedi [Inoltro delle query DNS in entrata al tuo VPC nella documentazione di](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html) Route53. AWS *

```
Failed to contact API server when waiting for CSINode publishing: Get ... no such host
```

 **Impossibile visualizzare i nodi ibridi nella console EKS** 

Se hai registrato i tuoi nodi ibridi ma non riesci a visualizzarli nella console EKS, controlla le autorizzazioni dell’IAM principale che stai utilizzando per visualizzare la console. L’IAM principale che stai utilizzando deve disporre di autorizzazioni IAM e Kubernetes minime specifiche per visualizzare le risorse nella console. Per ulteriori informazioni, consulta [Visualizza le risorse Kubernetes nel Console di gestione AWS](view-kubernetes-resources.md).

## Risoluzione dei problemi di esecuzione dei nodi ibridi
<a name="_running_hybrid_nodes_troubleshooting"></a>

Se i nodi ibridi che sono stati registrati nel cluster EKS avevano lo stato `Ready` e poi sono passati allo stato `Not Ready`, esistono molti problemi che potrebbero aver contribuito a tale stato di non integrità, ad esempio la mancanza di risorse sufficienti per la CPU, la memoria o lo spazio su disco disponibile del nodo, oppure la disconnessione del nodo dal piano di controllo EKS. Puoi utilizzare i passaggi seguenti per risolvere i problemi dei nodi e, se non riesci a risolvere il problema, contatta il supporto AWS .

Esegui `nodeadm debug` dai nodi ibridi per verificare che i requisiti di rete e le credenziali siano soddisfatti. Per ulteriori informazioni sul comando `nodeadm debug`, consulta [Riferimento `nodeadm` dei nodi ibridi](hybrid-nodes-nodeadm.md).

 **Ottieni lo stato del nodo** 

```
kubectl get nodes -o wide
```

 **Controlla le condizioni e gli eventi del nodo** 

```
kubectl describe node NODE_NAME
```

 **Ottieni lo stato del pod** 

```
kubectl get pods -A -o wide
```

 **Controlla le condizioni e gli eventi del pod** 

```
kubectl describe pod POD_NAME
```

 **Controlla i log del pod** 

```
kubectl logs POD_NAME
```

 **Controlla i log di `kubectl`** 

```
systemctl status kubelet
```

```
journalctl -u kubelet -f
```

 **Probe liveness del pod non funziona o i webhook non funzionano** 

Se le applicazioni, i componenti aggiuntivi o i webhook in esecuzione sui nodi ibridi non si avviano correttamente, potresti riscontrare problemi di rete che bloccano la comunicazione con i pod. Affinché il piano di controllo EKS possa contattare i webhook in esecuzione su nodi ibridi, devi configurare il cluster EKS con una rete di pod remota e disporre di percorsi per il pod CIDR on-premises nella tabella di routing VPC con l’obiettivo come Transit Gateway (TGW), gateway privato virtuale (VPW) o altro gateway che si utilizza per connettere il VPC alla rete on-premises. Per ulteriori informazioni sui requisiti di rete per i nodi ibridi, consulta [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md). Devi inoltre consentire a questo traffico di entrare nel firewall on-premises e assicurarti che il router sia in grado di instradare correttamente i pod. Consulta [Configurazione di webhook per nodi ibridi](hybrid-nodes-webhooks.md) per ulteriori informazioni sui requisiti per l’esecuzione di webhook su nodi ibridi.

Di seguito è riportato un messaggio di log del pod comune per questo scenario, dove l’indirizzo IP è l’IP del cluster per il servizio Kubernetes.

```
dial tcp <ip-address>:443: connect: no route to host
```

 **`kubectl logs`o `kubectl exec` comandi non funzionanti (comandi `kubelet` API)** 

Se`kubectl attach`,, `kubectl cp` `kubectl exec``kubectl logs`, e `kubectl port-forward` i comandi scadono mentre gli altri `kubectl` comandi hanno esito positivo, il problema è probabilmente correlato alla configurazione della rete remota. Questi comandi si connettono tramite il cluster all’endpoint `kubelet` sul nodo. Per ulteriori informazioni, consulta [Endpoint `kubelet`](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-kubelet-api).

Verifica che il nodo IPs e il pod IPs rientrino nella rete di nodi remoti e nella rete di pod remoti CIDRs configurati per il cluster. Usa i comandi seguenti per esaminare le assegnazioni IP.

```
kubectl get nodes -o wide
```

```
kubectl get pods -A -o wide
```

Confrontali IPs con la rete remota configurata CIDRs per garantire un routing corretto. Per i requisiti relativi alla configurazione della rete, consulta [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md).

## Risoluzione dei problemi CNI dei nodi ibridi
<a name="hybrid-nodes-troubleshooting-cni"></a>

Se riscontri problemi con l’avvio iniziale di Cilium o Calico con nodi ibridi, il più delle volte ciò è dovuto a problemi di rete tra i nodi ibridi o i pod CNI in esecuzione sui nodi ibridi e il piano di controllo EKS. Assicurati che il tuo ambiente soddisfi i requisiti di Preparazione della rete per i nodi ibridi. È utile suddividere il problema in parti.

Configurazione del cluster EKS  
Le configurazioni RemoteNodeNetwork e le RemotePodNetwork configurazioni sono corrette?

Configurazione VPC  
Esistono percorsi per RemoteNodeNetwork e RemotePodNetwork nella tabella di routing VPC con la destinazione del Transit Gateway o del Virtual Private Gateway?

Configurazione del gruppo di sicurezza  
Esistono regole in entrata e in uscita per il e? RemoteNodeNetwork RemotePodNetwork 

Rete locale  
Esistono percorsi e accessi da e verso il piano di controllo EKS e da e verso i nodi ibridi e i pod in esecuzione sui nodi ibridi?

Configurazione CNI  
Se si utilizza una rete overlay, la configurazione del pool IP per il CNI corrisponde a quella RemotePodNetwork configurata per il cluster EKS se si utilizzano i webhook?

 **Il nodo ibrido ha lo stato `Ready` senza una CNI installata** 

Se i nodi ibridi mostrano lo stato `Ready`, ma non è stata installata una CNI sul cluster, è possibile che sui nodi ibridi siano presenti vecchi artefatti CNI. Per impostazione predefinita, quando si disinstallano Cilium e Calico con strumenti come Helm, le risorse su disco non vengono rimosse dalle macchine fisiche o virtuali. Inoltre, le relative definizioni di risorse personalizzate (CRDs) CNIs potrebbero essere ancora presenti nel cluster a partire da una vecchia installazione. Per ulteriori informazioni, consulta le sezioni Eliminazione Cilium ed Eliminazione Calico di [Configurazione della CNI per nodi ibridi](hybrid-nodes-cni.md).

 **Risoluzione dei problemi di Cilium** 

Se riscontri problemi nell’esecuzione di Cilium su nodi ibridi, consulta i [passaggi per la risoluzione dei problemi](https://docs.cilium.io/en/stable/operations/troubleshooting/) nella documentazione di Cilium. Le sezioni seguenti trattano i problemi che potrebbero riguardare esclusivamente la distribuzione di Cilium sui nodi ibridi.

 **Cilium non si avvia** 

Se gli agenti Cilium eseguiti su ciascun nodo ibrido non si avviano, controlla se sono presenti errori nei log dei pod degli agenti Cilium. L’agente Cilium richiede la connettività all’endpoint dell’API EKS Kubernetes per iniziare. L’avvio dell’agente Cilium avrà esito negativo se questa connettività non è configurata correttamente. In questo caso, nei log del pod dell’agente Cilium verranno visualizzati messaggi di registro simili ai seguenti.

```
msg="Unable to contact k8s api-server"
level=fatal msg="failed to start: Get \"https://<k8s-cluster-ip>:443/api/v1/namespaces/kube-system\": dial tcp <k8s-cluster-ip>:443: i/o timeout"
```

L’agente Cilium viene eseguito sulla rete host. Il cluster EKS deve essere configurato con `RemoteNodeNetwork` per la connettività Cilium. Verifica di avere un gruppo di sicurezza aggiuntivo per il tuo cluster EKS con una regola in entrata per `RemoteNodeNetwork`, di disporre di percorsi nel VPC per `RemoteNodeNetwork` e che la tua rete on-premises sia configurata correttamente per consentire la connettività al piano di controllo EKS.

Se l'operatore Cilium è in esecuzione e alcuni dei vostri agenti Cilium sono in esecuzione ma non tutti, confermate di avere un pod disponibile IPs da allocare per tutti i nodi del cluster. Configurate la dimensione del vostro Pod allocabile CIDRs quando utilizzate il cluster pool IPAM nella configurazione di Cilium. `clusterPoolIPv4PodCIDRList` La dimensione CIDR per nodo è configurata con l’impostazione `clusterPoolIPv4MaskSize` nella configurazione di Cilium. Per ulteriori informazioni, consulta [Expanding the cluster pool](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool) nella documentazione di Cilium.

 **Cilium BGP non funziona** 

Se utilizzi il piano di controllo di Cilium BGP per pubblicizzare i tuoi pod o gli indirizzi di servizio sulla tua rete on-premises, puoi utilizzare i seguenti comandi Cilium CLI per verificare se BGP sta pubblicizzando i percorsi verso le tue risorse. Per i passaggi per installare la CLI di Cilium, consulta [Install the Cilium CLI](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli) nella documentazione di Cilium.

Se BGP funziona correttamente, dovresti avere dei nodi ibridi con `established` come stato della sessione nell’output. Potresti dover collaborare con il team di rete per identificare i valori corretti per Local AS, Peer AS e Peer Address del proprio ambiente.

```
cilium bgp peers
```

```
cilium bgp routes
```

Se utilizzate Cilium BGP per pubblicizzare i Servizi con tipo`LoadBalancer`, dovete avere la IPs stessa etichetta sia su voi che su Service, che deve essere utilizzata nel selettore del vostro`CiliumLoadBalancerIPPool`. `CiliumBGPAdvertisement` Di seguito è riportato un esempio. Nota, se utilizzi Cilium BGP per pubblicizzare i Servizi con tipo, i percorsi BGP potrebbero essere interrotti durante il riavvio IPs dell' LoadBalanceragente Cilium. Per ulteriori informazioni, consulta [Failure Scenarios](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-operation/#failure-scenarios) nella documentazione di Cilium.

 **Servizio** 

```
kind: Service
apiVersion: v1
metadata:
  name: guestbook
  labels:
    app: guestbook
spec:
  ports:
  - port: 3000
    targetPort: http-server
  selector:
    app: guestbook
  type: LoadBalancer
```

 **CiliumLoadBalancerIPPool** 

```
apiVersion: cilium.io/v2alpha1
kind: CiliumLoadBalancerIPPool
metadata:
  name: guestbook-pool
  labels:
    app: guestbook
spec:
  blocks:
  - cidr: <CIDR to advertise>
  serviceSelector:
    matchExpressions:
      - { key: app, operator: In, values: [ guestbook ] }
```

 **CiliumBGPAdvertisement** 

```
apiVersion: cilium.io/v2alpha1
kind: CiliumBGPAdvertisement
metadata:
  name: bgp-advertisements-guestbook
  labels:
    advertise: bgp
spec:
  advertisements:
    - advertisementType: "Service"
      service:
        addresses:
          - ExternalIP
          - LoadBalancerIP
      selector:
        matchExpressions:
          - { key: app, operator: In, values: [ guestbook ] }
```

 **Risoluzione dei problemi di Calico** 

Se riscontri problemi nell’esecuzione di Calico su nodi ibridi, consulta [troubleshooting steps](https://docs.tigera.io/calico/latest/operations/troubleshoot/) nella documentazione di Calico. Le sezioni seguenti trattano i problemi che potrebbero riguardare esclusivamente la distribuzione di Calico sui nodi ibridi.

La tabella seguente riassume i componenti di Calico e se funzionano di default sul nodo o sulla rete di pod. Se hai configurato Calico per utilizzare NAT per il traffico dei pod in uscita, la rete on-premises deve essere configurata per indirizzare il traffico verso il nodo on-premises CIDR e le tabelle di routing VPC devono essere configurate con una route per il nodo on-premises CIDR con il gateway di transito (TGW) o il gateway privato virtuale (VGW) come destinazione. Se non hai configurato Calico per utilizzare il NAT per il traffico dei pod in uscita, la rete on-premises deve essere configurata per indirizzare il traffico verso il pod on-premises CIDR e le tabelle di routing VPC devono essere configurate con una route per il pod on-premises CIDR con il gateway di transito (TGW) o il gateway privato virtuale (VGW) come destinazione.


| Componente | Rete | 
| --- | --- | 
|  Server API Calico  |  Nodo  | 
|  Controller per Kubernetes di Calico  |  Pod  | 
|  Agente del nodo di Calico  |  Nodo  | 
|  Calico `typha`   |  Nodo  | 
|  Driver del nodo CSI di Calico  |  Pod  | 
|  Operatore Calico  |  Nodo  | 

 **Le risorse di Calico sono pianificate o in esecuzione su nodi isolati** 

Per impostazione predefinita, le risorse Calico che non funzionano come unità DaemonSet hanno tolleranze flessibili che ne consentono la pianificazione su nodi isolati che non sono pronti per la pianificazione o l'esecuzione dei pod. È possibile inasprire le tolleranze per le risorse diverse da DaemonSet Calico modificando l'installazione dell'operatore in modo da includere quanto segue.

```
installation:
  ...
  controlPlaneTolerations:
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  calicoKubeControllersDeployment:
    spec:
      template:
        spec:
          tolerations:
          - effect: NoExecute
            key: node.kubernetes.io/unreachable
            operator: Exists
            tolerationSeconds: 300
          - effect: NoExecute
            key: node.kubernetes.io/not-ready
            operator: Exists
            tolerationSeconds: 300
  typhaDeployment:
    spec:
      template:
        spec:
          tolerations:
          - effect: NoExecute
            key: node.kubernetes.io/unreachable
            operator: Exists
            tolerationSeconds: 300
          - effect: NoExecute
            key: node.kubernetes.io/not-ready
            operator: Exists
            tolerationSeconds: 300
```

## Risoluzione dei problemi relativi alle credenziali
<a name="hybrid-nodes-troubleshooting-creds"></a>

Sia per le attivazioni ibride AWS SSM che per AWS IAM Roles Anywhere, puoi verificare che le credenziali per il ruolo IAM di Hybrid Nodes siano configurate correttamente sui tuoi nodi ibridi eseguendo il seguente comando dai tuoi nodi ibridi. Conferma che il nome del nodo e il nome del ruolo IAM dei nodi ibridi sono quelli che ti aspetti.

```
sudo aws sts get-caller-identity
```

```
{
    "UserId": "ABCDEFGHIJKLM12345678910:<node-name>",
    "Account": "<aws-account-id>",
    "Arn": "arn:aws: sts::<aws-account-id>:assumed-role/<hybrid-nodes-iam-role/<node-name>"
}
```

 **Risoluzione dei problemi di AWS Systems Manager (SSM)** 

Se utilizzi attivazioni ibride AWS SSM per le credenziali dei tuoi nodi ibridi, tieni presente le seguenti directory e artefatti SSM che vengono installati sui tuoi nodi ibridi da. `nodeadm` Per ulteriori informazioni sull'agente SSM, vedere [Working with the SSM agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) nella * AWS Systems Manager User* Guide.


| Description | Location (Ubicazione) | 
| --- | --- | 
|  Agente SSM  |  Ubuntu - `/snap/amazon-ssm-agent/current/amazon-ssm-agent` RHEL e 023 - AL2 `/usr/bin/amazon-ssm-agent`   | 
|  Log di SSM Agent  |   `/var/log/amazon/ssm`   | 
|   AWS credenziali  |   `/root/.aws/credentials`   | 
|  CLI di configurazione SSM  |   `/opt/ssm/ssm-setup-cli`   | 

 **Riavvio dell’agente SSM** 

Alcuni problemi possono essere risolti riavviando l’agente SSM. Puoi utilizzare i comandi seguenti per riavviarlo.

 **AL2023 e altri sistemi operativi** 

```
systemctl restart amazon-ssm-agent
```

 **Ubuntu** 

```
systemctl restart snap.amazon-ssm-agent.amazon-ssm-agent
```

 **Verifica la connettività agli endpoint SSM** 

Conferma di poter effettuare la connessione agli endpoint SSM dai nodi ibridi. Per un elenco degli endpoint SSM, consulta [AWS Systems Manager endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/ssm.html). Sostituisci `us-west-2` nel comando seguente con la AWS Regione per l'attivazione ibrida AWS SSM.

```
ping ssm.us-west-2.amazonaws.com
```

 **Visualizza lo stato della connessione delle istanze SSM registrate** 

Puoi controllare lo stato della connessione delle istanze registrate con le attivazioni ibride SSM con il seguente comando AWS CLI. Sostituisci l’ID della macchina con quello della macchina dell’istanza.

```
aws ssm get-connection-status --target mi-012345678abcdefgh
```

 **Mancata corrispondenza del checksum CLI di installazione SSM** 

Durante l’esecuzione di `nodeadm install`, se riscontri un problema relativo alla mancata corrispondenza del checksum `ssm-setup-cli`, dovresti confermare che non ci siano installazioni SSM precedenti esistenti sul tuo host. Se sul tuo host sono presenti installazioni SSM precedenti, rimuovile ed esegui di nuovo `nodeadm install` per risolvere il problema.

```
Failed to perform agent-installation/on-prem registration: error while verifying installed ssm-setup-cli checksum: checksum mismatch with latest ssm-setup-cli.
```

 **`InvalidActivation` SSM** 

Se vedi un errore durante la registrazione dell'istanza con AWS SSM, conferma che, e i tuoi dati sono `region` corretti`activationCode`. `activationId` `nodeConfig.yaml` La AWS regione del cluster EKS deve corrispondere alla regione dell'attivazione ibrida SSM. Se questi valori non sono configurati correttamente, potresti visualizzare un errore simile al seguente.

```
ERROR Registration failed due to error registering the instance with AWS SSM. InvalidActivation
```

 **`ExpiredTokenException` SSM: Il token di sicurezza incluso nella richiesta è scaduto** 

Se l’agente SSM non è in grado di aggiornare le credenziali, potresti visualizzare un `ExpiredTokenException`. In questo scenario, se riesci a connetterti agli endpoint SSM dai tuoi nodi ibridi, potresti dover riavviare l’agente SSM per forzare l’aggiornamento delle credenziali.

```
"msg":"Command failed","error":"operation error SSM: DescribeInstanceInformation, https response error StatusCode: 400, RequestID: eee03a9e-f7cc-470a-9647-73d47e4cf0be, api error ExpiredTokenException: The security token included in the request is expired"
```

 **Errore SSM nell’esecuzione del comando registra computer** 

Se vedi un errore durante la registrazione del computer con SSM, potresti dover eseguire di nuovo `nodeadm install` per assicurarti che tutte le dipendenze SSM siano installate correttamente.

```
"error":"running register machine command: , error: fork/exec /opt/aws/ssm-setup-cli: no such file or directory"
```

 **`ActivationExpired` SSM** 

Durante l’esecuzione di `nodeadm init`, se vedi un errore durante la registrazione dell’istanza con SSM a causa di un’attivazione scaduta, devi creare una nuova attivazione ibrida SSM, aggiornare `nodeConfig.yaml` con `activationCode` e `activationId` della nuova attivazione ibrida SSM ed eseguire di nuovo `nodeadm init`.

```
"msg":"Command failed","error":"SSM activation expired. Please use a valid activation"
```

```
ERROR Registration failed due to error registering the instance with AWS SSM. ActivationExpired
```

 **SSM non è riuscito ad aggiornare le credenziali memorizzate nella cache** 

Se riscontri un errore nell’aggiornamento delle credenziali memorizzate nella cache, il file `/root/.aws/credentials` potrebbe essere stato eliminato sul tuo host. Controlla innanzitutto l’attivazione ibrida SSM e assicurati che sia attiva e che i nodi ibridi siano configurati correttamente per utilizzare l’attivazione. Controlla l’accesso dell’agente SSM a `/var/log/amazon/ssm` ed esegui di nuovo il comando `nodeadm init` una volta risolto il problema sul lato SSM.

```
"Command failed","error":"operation error SSM: DescribeInstanceInformation, get identity: get credentials: failed to refresh cached credentials"
```

 **Pulisci la SSM** 

Per rimuovere l’agente SSM dal tuo host, puoi eseguire i seguenti comandi.

```
dnf remove -y amazon-ssm-agent
sudo apt remove --purge amazon-ssm-agent
snap remove amazon-ssm-agent
rm -rf /var/lib/amazon/ssm/Vault/Store/RegistrationKey
```

 **Risoluzione problemi AWS IAM Roles Anywhere** 

Se utilizzi AWS IAM Roles Anywhere per le credenziali dei tuoi nodi ibridi, tieni presente le seguenti directory e artefatti che vengono installati sui tuoi nodi ibridi da. `nodeadm` Per ulteriori informazioni sulla risoluzione dei problemi di identità e accesso a IAM Roles Anywhere, consulta [Risoluzione dei problemi di identità e accesso a AWS IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/security_iam_troubleshoot.html) nella Guida per l'utente di * AWS IAM Roles* Anywhere.


| Description | Location (Ubicazione) | 
| --- | --- | 
|  CLI IAM Roles Anywhere  |   `/usr/local/bin/aws_signing_helper`   | 
|  Ubicazione e nome predefiniti del certificato  |   `/etc/iam/pki/server.pem`   | 
|  Posizione e nome predefiniti della chiave  |   `/etc/iam/pki/server.key`   | 

 **IAM Roles Anywhere non è riuscito ad aggiornare le credenziali memorizzate nella cache** 

Se riscontri un errore nell’aggiornamento delle credenziali memorizzate nella cache, esamina il contenuto di `/etc/aws/hybrid/config` e conferma che IAM Roles Anywhere sia stato configurato correttamente nella tua configurazione `nodeadm`. Confermare l’esistenza di `/etc/iam/pki`. Ogni nodo deve avere un certificato e una chiave univoci. Per impostazione predefinita, quando si utilizza IAM Roles Anywhere come fornitore di credenziali, `nodeadm` utilizza `/etc/iam/pki/server.pem` per la posizione e il nome del certificato e `/etc/iam/pki/server.key` per la chiave privata. Potresti dover creare le directory prima di inserire i certificati e le chiavi nelle directory con `sudo mkdir -p /etc/iam/pki`. Puoi verificare il contenuto del certificato con il comando seguente.

```
openssl x509 -text -noout -in server.pem
```

```
open /etc/iam/pki/server.pem: no such file or directory
could not parse PEM data
Command failed {"error": "... get identity: get credentials: failed to refresh cached credentials, process provider error: error in credential_process: exit status 1"}
```

 **IAM Roles Anywhere non è autorizzato a eseguire `sts:AssumeRole`** 

Nei log `kubelet`, se riscontri un problema di accesso negato all’operazione `sts:AssumeRole` quando utilizzi IAM Roles Anywhere, controlla la policy di fiducia del tuo ruolo IAM dei nodi ibridi per confermare che il principale del servizio IAM Roles Anywhere sia autorizzato ad assumere il ruolo IAM dei nodi ibridi. Verifica inoltre che l’ancora di fiducia ARN sia configurato correttamente nella policy di fiducia del ruolo IAM dei nodi ibridi e che il ruolo IAM dei nodi ibridi sia aggiunto al tuo profilo IAM Roles Anywhere.

```
could not get token: AccessDenied: User: ... is not authorized to perform: sts:AssumeRole on resource: ...
```

 **IAM Roles Anywhere non è autorizzato a impostare `roleSessionName` ** 

Nei log `kubelet`, se riscontri un problema di accesso negato durante l’impostazione di `roleSessionName`, conferma che l’impostazione `acceptRoleSessionName` sia su true per il tuo profilo IAM Roles Anywhere.

```
AccessDeniedException: Not authorized to set roleSessionName
```

## Risoluzione dei problemi del sistema operativo
<a name="hybrid-nodes-troubleshooting-os"></a>

### RHEL
<a name="_rhel"></a>

 **Errori di registrazione del gestore dei diritti o degli entitlement** 

Se `nodeadm install` è in esecuzione e non è possibile installare le dipendenze dei nodi ibridi a causa di problemi di registrazione degli entitlement, assicurati di aver impostato correttamente il nome utente e la password di Red Hat sull’host.

```
This system is not registered with an entitlement server
```

### Ubuntu
<a name="_ubuntu"></a>

 **GLIBC non trovato** 

Se utilizzi Ubuntu per il sistema operativo e IAM Roles Anywhere per il provider di credenziali con nodi ibridi e riscontri un problema relativo a GLIBC non trovato, puoi installare la dipendenza manualmente per risolverlo.

```
GLIBC_2.32 not found (required by /usr/local/bin/aws_signing_helper)
```

Esegui i comandi riportati qui di seguito per installare la dipendenza:

```
ldd --version
sudo apt update && apt install libc6
sudo apt install glibc-source
```

### Bottlerocket
<a name="_bottlerocket"></a>

Se hai abilitato il container di amministrazione Bottlerocket, puoi accedervi con SSH per il debug avanzato e la risoluzione dei problemi con privilegi elevati. Le seguenti sezioni contengono comandi che devono essere eseguiti nel contesto dell’host Bottlerocket. Una volta che sei nel container di amministrazione, puoi eseguire `sheltie` per ottenere una shell root completa nell’host Bottlerocket.

```
sheltie
```

Puoi anche eseguire i comandi nelle seguenti sezioni dalla shell del container di amministrazione anteponendo a ogni comando il prefisso `sudo chroot /.bottlerocket/rootfs`.

```
sudo chroot /.bottlerocket/rootfs <command>
```

 **Utilizzo di logdog per la raccolta dei log** 

Bottlerocket fornisce l’utilità `logdog` per raccogliere in modo efficiente log e informazioni di sistema per la risoluzione dei problemi.

```
logdog
```

L’utilità `logdog` raccoglie i log da varie posizioni su un host Bottlerocket e li combina in un tarball. Per impostazione predefinita, il tarball viene creato in `/var/log/support/bottlerocket-logs.tar.gz` ed è accessibile dai contenitori host in `/.bottlerocket/support/bottlerocket-logs.tar.gz`.

 **Accesso ai log di sistema con journalctl** 

Puoi controllare lo stato dei vari servizi di sistema come `kubelet`, `containerd`, ecc. e visualizzarne i registri con i seguenti comandi. Il flag `-f` seguirà i log in tempo reale.

Per controllare lo stato del servizio `kubelet` e recuperare i log `kubelet`, puoi eseguire:

```
systemctl status kubelet
journalctl -u kubelet -f
```

Per controllare lo stato del servizio `containerd` e recuperare i log per l’istanza orchestrata `containerd`, puoi eseguire:

```
systemctl status containerd
journalctl -u containerd -f
```

Per controllare lo stato del servizio `host-containerd` e recuperare i log per l’istanza host `containerd`, puoi eseguire:

```
systemctl status host-containerd
journalctl -u host-containerd -f
```

Per recuperare i log per i container bootstrap e i container host, puoi eseguire:

```
journalctl _COMM=host-ctr -f
```