

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

# Scalare i pod CoreDNS per un traffico DNS elevato
<a name="coredns-autoscaling"></a>

Quando si avvia un cluster Amazon EKS con almeno un nodo, viene distribuita per impostazione predefinita un’implementazione di due repliche dell’immagine CoreDNS, indipendentemente dal numero di nodi distribuiti nel cluster. I contenitori CoreDNS forniscono la risoluzione dei nomi per tutti i pod del cluster. Le applicazioni utilizzano la risoluzione dei nomi per connettersi a pod e servizi nel cluster, nonché a servizi esterni al cluster. Con l’aumentare del numero di richieste di risoluzione dei nomi (query) provenienti dai pod, i pod CoreDNS possono sovraccaricarsi, rallentare e rifiutare le richieste che i pod non sono in grado di gestire.

Per gestire il carico maggiore sui pod CoreDNS, valutare l’implementazione di un sistema di dimensionamento automatico per CoreDNS. Amazon EKS può gestire il dimensionamento automatico dell’implementazione CoreDNS nella versione del componente aggiuntivo EKS di CoreDNS. Questo autoscaler di CoreDNS monitora continuamente lo stato del cluster, incluso il numero di nodi e core CPU. Sulla base di tali informazioni, il controller adatterà dinamicamente il numero di repliche dell’implementazione CoreDNS in un cluster EKS. Questa funzionalità è disponibile per CoreDNS versione `v1.9` e successive. Per ulteriori informazioni sulle versioni compatibili con il dimensionamento automatico di CoreDNS, consultare la sezione di seguito.

Il sistema gestisce automaticamente le repliche di CoreDNS utilizzando una formula dinamica basata sia sul numero di nodi che di core CPU nel cluster, calcolato come il massimo di (numberOfNodes diviso 16) e (numberOfCPUCores diviso 256). Valuta la domanda su periodi di picco di 10 minuti e aumenta verticalmente in modo immediato quando necessario per gestire l’aumento del carico di query DNS, mentre riduce verticalmente in modo graduale tramite la riduzione delle repliche del 33% ogni 3 minuti per mantenere la stabilità del sistema ed evitare interruzioni.

Consigliamo di utilizzare questa funzionalità insieme ad altre [best practice](https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/) di dimensionamento automatico dei cluster EKSper migliorare la disponibilità dell’applicazione e la scalabilità del cluster in generale.

## Prerequisiti
<a name="coredns-autoscaling-prereqs"></a>

Esistono tre prerequisiti affinché Amazon EKS possa scalare l’implementazione CoreDNS:
+ È necessario utilizzare la versione *componente aggiuntivo EKS* di CoreDNS.
+ Il cluster deve eseguire almeno le versioni minime del cluster e della piattaforma.
+ Il cluster deve eseguire almeno la versione minima del componente aggiuntivo EKS di CoreDNS.

### Versione minima del cluster
<a name="coredns-autoscaling-cluster-version"></a>

Il dimensionamento automatica di CoreDNS viene eseguito da un nuovo componente nel piano di controllo (control-plane) del cluster, gestito da Amazon EKS. Per questo, è necessario aggiornare il cluster a una versione EKS che supporti la versione minima della piattaforma che include il nuovo componente.

Un nuovo cluster Amazon EKS. Per implementarne uno, consulta [Nozioni di base su Amazon EKS](getting-started.md). Il cluster deve eseguire una delle versioni di Kubernetes e della piattaforma elencate nella tabella seguente o versioni successive. Sono supportate anche tutte le versioni di Kubernetes e della piattaforma successive a quelle elencate. È possibile verificare la versione corrente di Kubernetes sostituendo {{my-cluster}} nel seguente comando con il nome del cluster e quindi eseguendo il comando modificato:

```
aws eks describe-cluster --name my-cluster --query cluster.version --output text
```


| Versione di Kubernetes 1.15 | Versione della piattaforma | 
| --- | --- | 
| Non elencata | Tutte le versioni della piattaforma | 
|  `1.29.3`  |  `eks.7`  | 
|  `1.28.8`  |  `eks.13`  | 
|  `1.27.12`  |  `eks.17`  | 
|  `1.26.15`  |  `eks.18`  | 

**Nota**  
Sono supportate anche tutte le versioni della piattaforma delle versioni successive di Kubernetes, ad esempio la versione Kubernetes `1.30` da `eks.1` in poi.

### Versione minima del componente aggiuntivo EKS
<a name="coredns-autoscaling-coredns-version"></a>


| Versione di Kubernetes 1.15 | 1.29 | 1.28 | 
| --- | --- | --- | 
|  |  `v1.11.1-eksbuild.9`  |  `v1.10.1-eksbuild.11`  | 

#### Configurazione del dimensionamento automatico di CoreDNS nella Console di gestione AWS
<a name="coredns-autoscaling-console"></a>

1. Assicurarsi che il cluster disponga della versione minima del cluster o successiva.

   Amazon EKS aggiorna automaticamente i cluster tra le versioni della piattaforma della stessa versione di Kubernetes e non è possibile avviare questo processo autonomamente. È invece possibile aggiornare il cluster alla versione successiva di Kubernetes e ciò comporterà l’aggiornamento del cluster alla versione K8s e alla versione della piattaforma più recente.

   Le nuove versioni di Kubernetes hanno introdotto modifiche significative. Pertanto consigliamo di verificare il comportamento delle applicazioni utilizzando un cluster separato con la nuova versione di Kubernetes prima di eseguire l’aggiornamento sui cluster di produzione.

   Per aggiornare un cluster a una nuova versione di Kubernetes, seguire la procedura descritta alla pagina [Update existing cluster to new Kubernetes version](update-cluster.md).

1. Assicurarsi di disporre del componente aggiuntivo EKS per CoreDNS, non dell’implementazione CoreDNS autogestita.

   A seconda dello strumento con cui hai creato il cluster, al momento potresti non avere il componente aggiuntivo del tipo Amazon EKS installato sul cluster. Eseguire il comando seguente per verificare quale tipo di componente aggiuntivo è installato sul cluster. Sostituisci `my-cluster` con il nome del cluster.

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text
   ```

   Se viene restituito un numero di versione, sul cluster è installato il tipo Amazon EKS del componente aggiuntivo ed è possibile procedere al passaggio successivo. Se viene restituito un errore, sul cluster non è installato il componente aggiuntivo del tipo Amazon EKS. Completare i passaggi rimanenti della procedura descritta alla pagina [Create the CoreDNS Amazon EKS add-on](coredns-add-on-create.md) per sostituire la versione autogestita con il componente aggiuntivo EKS.

1. Assicurarsi che il componente aggiuntivo EKS per CoreDNS disponga di una versione uguale o successiva rispetto alla versione minima del componente aggiuntivo EKS.

   Scopri qual è la versione del componente aggiuntivo attualmente installata sul cluster. È possibile verificarla nella Console di gestione AWS o eseguendo il seguente comando:

   ```
   kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3
   ```

   Di seguito viene riportato un output di esempio:

   ```
   v1.10.1-eksbuild.13
   ```

   Confrontare questa versione con quella minima del componente aggiuntivo EKS riportata nella sezione precedente. Se necessario, aggiornare il componente aggiuntivo EKS a una versione successiva seguendo la procedura descritta alla pagina [Update the CoreDNS Amazon EKS add-on](coredns-add-on-update.md).

1. Aggiungere la configurazione del dimensionamento automatico alle **Opzioni di configurazione facoltative** del componente aggiuntivo EKS.

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

   1. Nel riquadro di navigazione a sinistra, seleziona **Cluster**, quindi seleziona il nome del cluster per cui configurare il componente aggiuntivo.

   1. Seleziona la scheda **Componenti aggiuntivi**.

   1. Selezionare la casella nella parte superiore destra della casella del componente aggiuntivo CoreDNS e scegliere **Modifica**.

   1. Nella pagina **Configurazione di CoreDNS**:

      1. Selezionare la **Versione** da utilizzare. Si consiglia di mantenere la stessa versione rispetto al passaggio precedente e di aggiornare la versione e la configurazione con operazioni separate.

      1. Scegli **Impostazioni di configurazione facoltative**.

      1. Inserire la chiave JSON `"autoscaling":` e il valore di un oggetto JSON annidato con una chiave `"enabled":` e un valore `true` nei **Valori di configurazione**. Il testo risultante deve essere un oggetto JSON valido. Se questa chiave e questo valore sono gli unici dati nella casella di testo, racchiudi la chiave e il valore tra parentesi graffe `{ }`. Il seguente esempio mostra che il dimensionamento automatico è abilitato:

         ```
         {
           "autoScaling": {
             "enabled": true
           }
         }
         ```

      1. (Facoltativo) È possibile fornire valori minimi e massimi a cui il dimensionamento automatico può scalare il numero di pod CoreDNS.

         Il seguente esempio mostra che il dimensionamento automatico è abilitato e tutte le chiavi facoltative hanno dei valori. Si consiglia di utilizzare un numero minimo di pod CoreDNS sempre superiore a 2 per garantire la resilienza del servizio DNS nel cluster.

         ```
         {
           "autoScaling": {
             "enabled": true,
             "minReplicas": 2,
             "maxReplicas": 10
           }
         }
         ```

   1. Scegliere **Salva modifiche** per applicare la nuova configurazione sostituendo i pod CoreDNS.

      Amazon EKS applica le modifiche ai componenti aggiuntivi EKS utilizzando un *rollout* dell’implementazione Kubernetes per CoredNS. È possibile monitorare lo stato del rollout nella **Cronologia degli aggiornamenti** del componente aggiuntivo nella Console di gestione AWS e con `kubectl rollout status deployment/coredns --namespace kube-system`.

       `kubectl rollout` dispone dei seguenti comandi:

      ```
      kubectl rollout
      
      history  -- View rollout history
      pause    -- Mark the provided resource as paused
      restart  -- Restart a resource
      resume   -- Resume a paused resource
      status   -- Show the status of the rollout
      undo     -- Undo a previous rollout
      ```

      Se il rollout richiede troppo tempo, Amazon EKS annullerà l’operazione e un messaggio contenente il tipo di **Aggiornamento del componente aggiuntivo** e lo stato **Non riuscito** sarà aggiunto alla **Cronologia degli aggiornamenti** del componente aggiuntivo. Per esaminare eventuali problemi, iniziare dalla cronologia del rollout ed eseguire `kubectl logs` su un pod CoreDNS per visualizzare i log di CoreDNS.

1. Se la nuova voce nella **Cronologia degli aggiornamenti** ha lo stato **Operazione riuscita**, il rollout è stato completato e il componente aggiuntivo utilizza la nuova configurazione in tutti i pod CoreDNS. Con la modifica del numero di nodi e core CPU dei nodi nel cluster, Amazon EKS scala il numero di repliche dell’implementazione CoreDNS.

#### Configurazione del dimensionamento automatico nell’Interfaccia della linea di comando AWS
<a name="coredns-autoscaling-cli"></a>

1. Assicurarsi che il cluster disponga della versione minima del cluster o successiva.

   Amazon EKS aggiorna automaticamente i cluster tra le versioni della piattaforma della stessa versione di Kubernetes e non è possibile avviare questo processo autonomamente. È invece possibile aggiornare il cluster alla versione successiva di Kubernetes e ciò comporterà l’aggiornamento del cluster alla versione K8s e alla versione della piattaforma più recente.

   Le nuove versioni di Kubernetes hanno introdotto modifiche significative. Pertanto consigliamo di verificare il comportamento delle applicazioni utilizzando un cluster separato con la nuova versione di Kubernetes prima di eseguire l’aggiornamento sui cluster di produzione.

   Per aggiornare un cluster a una nuova versione di Kubernetes, seguire la procedura descritta alla pagina [Update existing cluster to new Kubernetes version](update-cluster.md).

1. Assicurarsi di disporre del componente aggiuntivo EKS per CoreDNS, non dell’implementazione CoreDNS autogestita.

   A seconda dello strumento con cui hai creato il cluster, al momento potresti non avere il componente aggiuntivo del tipo Amazon EKS installato sul cluster. Eseguire il comando seguente per verificare quale tipo di componente aggiuntivo è installato sul cluster. Sostituisci `my-cluster` con il nome del cluster.

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text
   ```

   Se viene restituito il numero di versione, sul cluster è installato il tipo Amazon EKS del componente aggiuntivo. Se viene restituito un errore, sul cluster non è installato il componente aggiuntivo del tipo Amazon EKS. Completare i passaggi rimanenti della procedura descritta alla pagina [Create the CoreDNS Amazon EKS add-on](coredns-add-on-create.md) per sostituire la versione autogestita con il componente aggiuntivo EKS.

1. Assicurarsi che il componente aggiuntivo EKS per CoreDNS disponga di una versione uguale o successiva rispetto alla versione minima del componente aggiuntivo EKS.

   Scopri qual è la versione del componente aggiuntivo attualmente installata sul cluster. È possibile verificarla nella Console di gestione AWS o eseguendo il seguente comando:

   ```
   kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3
   ```

   Di seguito viene riportato un output di esempio:

   ```
   v1.10.1-eksbuild.13
   ```

   Confrontare questa versione con quella minima del componente aggiuntivo EKS riportata nella sezione precedente. Se necessario, aggiornare il componente aggiuntivo EKS a una versione successiva seguendo la procedura descritta alla pagina [Update the CoreDNS Amazon EKS add-on](coredns-add-on-update.md).

1. Aggiungere la configurazione del dimensionamento automatico alle **Opzioni di configurazione facoltative** del componente aggiuntivo EKS.

   Esegui il seguente comando AWS CLI. Sostituisci `my-cluster` con il nome del cluster e l'ARN del ruolo IAM con il ruolo che stai utilizzando.

   ```
   aws eks update-addon --cluster-name my-cluster --addon-name coredns \
       --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true}}'
   ```

   Amazon EKS applica le modifiche ai componenti aggiuntivi EKS utilizzando un *rollout* dell’implementazione Kubernetes per CoredNS. È possibile monitorare lo stato del rollout nella **Cronologia degli aggiornamenti** del componente aggiuntivo nella Console di gestione AWS e con `kubectl rollout status deployment/coredns --namespace kube-system`.

    `kubectl rollout` dispone dei seguenti comandi:

   ```
   kubectl rollout
   
   history  -- View rollout history
   pause    -- Mark the provided resource as paused
   restart  -- Restart a resource
   resume   -- Resume a paused resource
   status   -- Show the status of the rollout
   undo     -- Undo a previous rollout
   ```

   Se il rollout richiede troppo tempo, Amazon EKS annullerà l’operazione e un messaggio contenente il tipo di **Aggiornamento del componente aggiuntivo** e lo stato **Non riuscito** sarà aggiunto alla **Cronologia degli aggiornamenti** del componente aggiuntivo. Per esaminare eventuali problemi, iniziare dalla cronologia del rollout ed eseguire `kubectl logs` su un pod CoreDNS per visualizzare i log di CoreDNS.

1. (Facoltativo) È possibile fornire valori minimi e massimi a cui il dimensionamento automatico può scalare il numero di pod CoreDNS.

   Il seguente esempio mostra che il dimensionamento automatico è abilitato e tutte le chiavi facoltative hanno dei valori. Si consiglia di utilizzare un numero minimo di pod CoreDNS sempre superiore a 2 per garantire la resilienza del servizio DNS nel cluster.

   ```
   aws eks update-addon --cluster-name my-cluster --addon-name coredns \
       --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true,"minReplicas":2,"maxReplicas":10}}'
   ```

1. Verificare lo stato dell’aggiornamento del componente aggiuntivo eseguendo il seguente comando:

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name coredns
   ```

   Se viene visualizzata la riga `"status": "ACTIVE"`, il rollout è stato completato e il componente aggiuntivo utilizza la nuova configurazione in tutti i pod CoreDNS. Con la modifica del numero di nodi e core CPU dei nodi nel cluster, Amazon EKS scala il numero di repliche dell’implementazione CoreDNS.