

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

# Gruppi di nodi gestiti da EKS
<a name="nodegroup-managed"></a>

 I [gruppi di nodi gestiti di Amazon EKS sono](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) una funzionalità che automatizza il provisioning e la gestione del ciclo di vita dei nodi (istanze EC2) per i cluster Amazon EKS Kubernetes. I clienti possono fornire gruppi di nodi ottimizzati per i propri cluster ed EKS manterrà i nodi aggiornati con le ultime versioni di Kubernetes e del sistema operativo host.

Un gruppo di nodi gestiti EKS è un gruppo con scalabilità automatica e istanze EC2 associate gestite da AWS per un cluster Amazon EKS. Ogni gruppo di nodi utilizza l'AMI Amazon Linux 2 ottimizzata per Amazon EKS. Amazon EKS semplifica l'applicazione di correzioni di bug e patch di sicurezza ai nodi, nonché l'aggiornamento alle versioni più recenti di Kubernetes. Ogni gruppo di nodi avvia un gruppo di scalabilità automatica per il cluster, che può estendersi su più zone di disponibilità e sottoreti AWS VPC per un'elevata disponibilità.

 **NOVITÀ** [Supporto di Launch Template per gruppi di nodi](launch-template-support.md) gestiti 

**Nota**  
Il termine «gruppi di nodi non gestiti» è stato usato per riferirsi ai gruppi di nodi che eksctl ha supportato sin dall'inizio (rappresentati tramite il campo). `nodeGroups` Il `ClusterConfig` file continua a utilizzare il `nodeGroups` campo per definire i gruppi di nodi non gestiti e i gruppi di nodi gestiti vengono definiti con il campo. `managedNodeGroups`

## Creazione di gruppi di nodi gestiti
<a name="_creating_managed_nodegroups"></a>

```
$ eksctl create nodegroup
```

### Nuovi cluster
<a name="_new_clusters"></a>

Per creare un nuovo cluster con un gruppo di nodi gestito, esegui

```
eksctl create cluster
```

Per creare più gruppi di nodi gestiti e avere un maggiore controllo sulla configurazione, è possibile utilizzare un file di configurazione.

**Nota**  
I gruppi di nodi gestiti non hanno una parità di funzionalità completa con i gruppi di nodi non gestiti.

```
# cluster.yaml
# A cluster with two managed nodegroups
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: managed-cluster
  region: us-west-2

managedNodeGroups:
  - name: managed-ng-1
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    volumeSize: 20
    ssh:
      allow: true
      publicKeyPath: ~/.ssh/ec2_id_rsa.pub
      # new feature for restricting SSH access to certain AWS security group IDs
      sourceSecurityGroupIds: ["sg-00241fbb12c607007"]
    labels: {role: worker}
    tags:
      nodegroup-role: worker
    iam:
      withAddonPolicies:
        externalDNS: true
        certManager: true

  - name: managed-ng-2
    instanceType: t2.large
    minSize: 2
    maxSize: 3
```

[Un altro esempio di file di configurazione per la creazione di un gruppo di nodi gestito è disponibile qui.](https://github.com/eksctl-io/eksctl/blob/main/examples/15-managed-nodes.yaml)

È possibile avere un cluster con gruppi di nodi gestiti e non gestiti. I gruppi di nodi non gestiti non vengono visualizzati nella console AWS EKS ma `eksctl get nodegroup` elencheranno entrambi i tipi di gruppi di nodi.

```
# cluster.yaml
# A cluster with an unmanaged nodegroup and two managed nodegroups.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: managed-cluster
  region: us-west-2

nodeGroups:
  - name: ng-1
    minSize: 2

managedNodeGroups:
  - name: managed-ng-1
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    volumeSize: 20
    ssh:
      allow: true
      publicKeyPath: ~/.ssh/ec2_id_rsa.pub
      # new feature for restricting SSH access to certain AWS security group IDs
      sourceSecurityGroupIds: ["sg-00241fbb12c607007"]
    labels: {role: worker}
    tags:
      nodegroup-role: worker
    iam:
      withAddonPolicies:
        externalDNS: true
        certManager: true

  - name: managed-ng-2
    instanceType: t2.large
    privateNetworking: true
    minSize: 2
    maxSize: 3
```

 **NUOVO** Supporto per AMI personalizzate, gruppi di sicurezza `instancePrefix``instanceName`,`ebsOptimized`,`volumeType`,`volumeName`,`volumeEncrypted`,`volumeKmsKeyID`,`volumeIOPS`,`maxPodsPerNode`,`preBootstrapCommands`,`overrideBootstrapCommand`, e `disableIMDSv1` 

```
# cluster.yaml
# A cluster with a managed nodegroup with customization.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: managed-cluster
  region: us-west-2

managedNodeGroups:
  - name: custom-ng
    ami: ami-0e124de4755b2734d
    securityGroups:
      attachIDs: ["sg-1234"]
    maxPodsPerNode: 80
    ssh:
      allow: true
    volumeSize: 100
    volumeName: /dev/xvda
    volumeEncrypted: true
    # defaults to true, which enforces the use of IMDSv2 tokens
    disableIMDSv1: false
    overrideBootstrapCommand: |
      #!/bin/bash
      /etc/eks/bootstrap.sh managed-cluster --kubelet-extra-args '--node-labels=eks.amazonaws.com/nodegroup=custom-ng,eks.amazonaws.com/nodegroup-image=ami-0e124de4755b2734d'
```

Se stai richiedendo un tipo di istanza disponibile solo in una zona (e la configurazione eksctl richiede la specificazione di due) assicurati di aggiungere la zona di disponibilità alla richiesta del tuo gruppo di nodi:

```
# cluster.yaml
# A cluster with a managed nodegroup with "availabilityZones"
---

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: flux-cluster
  region: us-east-2
  version: "1.23"

availabilityZones: ["us-east-2b", "us-east-2c"]
managedNodeGroups:
  - name: workers
    instanceType: hpc6a.48xlarge
    minSize: 64
    maxSize: 64
    labels: { "fluxoperator": "true" }
    availabilityZones: ["us-east-2b"]
    efaEnabled: true
    placement:
      groupName: eks-efa-testing
```

Questo può essere vero, ad esempio, per tipi come [la famiglia Hpc6](https://aws.amazon.com/ec2/instance-types/hpc6/) che sono disponibili solo in una zona.

### Cluster esistenti
<a name="_existing_clusters"></a>

```
eksctl create nodegroup --managed
```

Suggerimento: se utilizzi un `ClusterConfig` file per descrivere l'intero cluster, descrivi il nuovo gruppo di nodi gestiti nel `managedNodeGroups` campo ed esegui:

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

## Aggiornamento dei gruppi di nodi gestiti
<a name="_upgrading_managed_nodegroups"></a>

Puoi aggiornare un nodegroup all'ultima versione di release AMI ottimizzata per EKS per il tipo di AMI che stai utilizzando in qualsiasi momento.

Se il tuo nodegroup è la stessa versione di Kubernetes del cluster, puoi eseguire l'aggiornamento all'ultima versione dell'AMI per quella versione di Kubernetes del tipo di AMI che stai utilizzando. Se il tuo nodegroup è la versione di Kubernetes precedente alla versione Kubernetes del cluster, puoi aggiornare il nodegroup all'ultima versione dell'AMI che corrisponde alla versione Kubernetes del nodegroup o eseguire l'aggiornamento all'ultima versione dell'AMI che corrisponde alla versione Kubernetes del cluster. Non puoi ripristinare un nodegroup a una versione precedente di Kubernetes.

Per aggiornare un nodegroup gestito all'ultima versione dell'AMI release:

```
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster
```

Il nodegroup può essere aggiornato all'ultima versione AMI per una versione di Kubernetes specificata utilizzando:

```
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --kubernetes-version=<kubernetes-version>
```

Per eseguire l'aggiornamento a una versione di rilascio AMI specifica anziché alla versione più recente, passa`--release-version`:

```
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --release-version=1.19.6-20210310
```

**Nota**  
Se i nodi gestiti vengono distribuiti utilizzando l'AMI personalizzata AMIs, è necessario seguire il seguente flusso di lavoro per distribuire una nuova versione dell'AMI personalizzata.
+ la distribuzione iniziale del nodegroup deve essere eseguita utilizzando un modello di avvio. ad es.

  ```
  managedNodeGroups:
    - name: launch-template-ng
      launchTemplate:
        id: lt-1234
        version: "2" #optional (uses the default version of the launch template if unspecified)
  ```
+ crea una nuova versione dell'AMI personalizzata (utilizzando la console AWS EKS).
+ crea una nuova versione del modello di lancio con il nuovo ID AMI (utilizzando la console AWS EKS).
+ aggiorna i nodi alla nuova versione del modello di lancio. ad es.

  ```
  eksctl upgrade nodegroup --name nodegroup-name --cluster cluster-name --launch-template-version new-template-version
  ```

## Gestione degli aggiornamenti paralleli per i nodi
<a name="_handling_parallel_upgrades_for_nodes"></a>

È possibile aggiornare più nodi gestiti contemporaneamente. Per configurare gli aggiornamenti paralleli, definisci il nodegroup durante la creazione `updateConfig` del nodegroup. [Un esempio `updateConfig` può essere trovato qui.](https://github.com/eksctl-io/eksctl/blob/main/examples/15-managed-nodes.yaml)

Per evitare interruzioni dei carichi di lavoro dovute all'aggiornamento di più nodi contemporaneamente, puoi limitare il numero di nodi che possono diventare non disponibili durante un aggiornamento specificandolo nel campo di un. `maxUnavailable` `updateConfig` In alternativa, usa`maxUnavailablePercentage`, che definisce il numero massimo di nodi non disponibili come percentuale del numero totale di nodi.

Nota che `maxUnavailable` non può essere superiore a`maxSize`. Inoltre, `maxUnavailable` `maxUnavailablePercentage` non può essere utilizzato contemporaneamente.

Questa funzionalità è disponibile solo per i nodi gestiti.

## Aggiornamento dei gruppi di nodi gestiti
<a name="_updating_managed_nodegroups"></a>

 `eksctl`consente di aggiornare la [UpdateConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-updateconfig.html)sezione di un gruppo di nodi gestito. Questa sezione definisce due campi. `MaxUnavailable`e`MaxUnavailablePercentage`. I tuoi gruppi di nodi non vengono modificati durante l'aggiornamento, quindi non dovrebbero essere previsti tempi di inattività.

Il comando `update nodegroup` deve essere usato con un file di configurazione usando il flag. `--config-file` Il nodegroup deve contenere una sezione. `nodeGroup.updateConfig` [Ulteriori informazioni possono essere trovate qui.](https://geoffcline.github.io/eksctl-schema-demo/#nodeGroups-updateConfig)

## Problemi di Nodegroup Health
<a name="_nodegroup_health_issues"></a>

EKS Managed Nodegroups controlla automaticamente la configurazione del gruppo di nodi e dei nodi per rilevare eventuali problemi di salute e li segnala tramite l'API e la console EKS. Per visualizzare i problemi di salute di un nodegroup:

```
eksctl utils nodegroup-health --name=managed-ng-1 --cluster=managed-cluster
```

## Gestione delle etichette
<a name="_managing_labels"></a>

EKS Managed Nodegroups supporta l'aggiunta di etichette applicate ai nodi Kubernetes nel nodegroup. Questo viene specificato tramite il `labels` campo in eksctl durante la creazione di cluster o gruppi di nodi.

Per impostare nuove etichette o aggiornare le etichette esistenti su un gruppo di nodi:

```
eksctl set labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by=eks,kubernetes.io/role=worker
```

Per annullare l'impostazione o rimuovere le etichette da un gruppo di nodi:

```
eksctl unset labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by,kubernetes.io/role
```

Per visualizzare tutte le etichette impostate su un gruppo di nodi:

```
eksctl get labels --cluster managed-cluster --nodegroup managed-ng-1
```

## Ridimensionamento dei gruppi di nodi gestiti
<a name="_scaling_managed_nodegroups"></a>

 `eksctl scale nodegroup`supporta anche i gruppi di nodi gestiti. La sintassi per scalare un gruppo di nodi gestito o non gestito è la stessa.

```
eksctl scale nodegroup --name=managed-ng-1 --cluster=managed-cluster --nodes=4 --nodes-min=3 --nodes-max=5
```

## Ulteriori informazioni
<a name="_further_information"></a>
+  [Gruppi di nodi gestiti da EKS](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) 