

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

# Gestione di CoreDNS per DNS nei cluster Amazon EKS
<a name="managing-coredns"></a>

**Suggerimento**  
Con la modalità automatica di Amazon EKS, non devi installare o aggiornare componenti aggiuntivi di rete. Auto Mode include funzionalità di pod networking e bilanciamento del carico.  
Per ulteriori informazioni, consulta [Automate cluster infrastructure with EKS Auto Mode](automode.md).

CoreDNS è un server DNS flessibile ed estensibile che può fungere da cluster DNS Kubernetes. Quando si avvia un cluster Amazon EKS con almeno un nodo, due repliche dell’immagine CoreDNS vengono distribuite per impostazione predefinita, indipendentemente dal numero di nodi distribuiti nel cluster. I contenitori CoreDNS forniscono la risoluzione dei nomi per tutti i pod del cluster. I pod CoreDNS possono essere distribuiti ai nodi Fargate se il cluster include un [profilo Fargate](fargate-profile.md) con un namespace che corrisponde al namespace del `deployment` CoreDNS. Per ulteriori informazioni su CoreDNS, consultare [Utilizzo di CoreDNS per l’individuazione dei servizi](https://kubernetes.io/docs/tasks/administer-cluster/coredns/) nella documentazione Kubernetes.

## Versioni di CoreDNS
<a name="coredns-versions"></a>

La tabella seguente elenca la versione più recente del componente aggiuntivo di Amazon EKS disponibile per ogni versione di Kubernetes.


| Versione di Kubernetes | Versione di CoreDNS | 
| --- | --- | 
|  1,35  |  v1.13.2-eksbuild.4  | 
|  1,34  |  v1.13.2-eksbuild.4  | 
|  1.33  |  v1.13.2-eksbuild.4  | 
|  1,32  |  v1.11.4-eksbuild.33  | 
|  1.31  |  v1.11.4-eksbuild.33  | 
|  1.30  |  v1.11.4-eksbuild.33  | 

**Importante**  
Se gestisci autonomamente questo componente aggiuntivo, le versioni nella tabella potrebbero non essere le stesse di quelle autogestite disponibili. Per ulteriori informazioni sull’aggiornamento del componente aggiuntivo del tipo autogestito, consulta [Aggiornamento del componente aggiuntivo CoreDNS autogestito di Amazon EKS](coredns-add-on-self-managed-update.md).

## Considerazioni importanti sull’aggiornamento di CoreDNS
<a name="coredns-upgrade"></a>
+ Gli aggiornamenti CoreDNS utilizzano PodDisruptionBudget un per aiutare a mantenere la disponibilità del servizio DNS durante il processo di aggiornamento.
+ Per migliorare la stabilità e la disponibilità di Implementazione di CoreDNS, le versioni `v1.9.3-eksbuild.6` e successive e `v1.10.1-eksbuild.3` vengono distribuite con un `PodDisruptionBudget`. Se hai implementato un `PodDisruptionBudget` esistente, l’aggiornamento a queste versioni potrebbe non riuscire. Se l’aggiornamento non riesce, il problema dovrebbe essere risolto eseguendo una delle seguenti operazioni:
  + Quando esegui l’aggiornamento del componente aggiuntivo Amazon EKS, scegli di sovrascrivere le impostazioni esistenti come opzione di risoluzione dei conflitti. Se hai effettuato altre impostazioni personalizzate su Implementazione, assicurati di eseguire il backup delle impostazioni prima dell’aggiornamento in modo da poter riapplicare le altre impostazioni personalizzate dopo l’aggiornamento.
  + Rimuovi `PodDisruptionBudget` esistente e riprova a eseguire l’aggiornamento.
+ Nelle versioni aggiuntive EKS `v1.9.3-eksbuild.3` e successive e `v1.10.1-eksbuild.6` e successive, Implementazione di CoreDNS imposta il `readinessProbe` per utilizzare l’endpoint `/ready`. Questo endpoint è abilitato nel file di configurazione `Corefile` per CoreDNS.

  Se utilizzi un dispositivo personalizzato `Corefile`, devi aggiungere il plug-in `ready` alla configurazione, in modo che l’endpoint `/ready` sia attivo in CoreDNS e possa essere utilizzato dalla sonda.
+ Nelle versioni aggiuntive EKS `v1.9.3-eksbuild.7` e successive e `v1.10.1-eksbuild.4` e successive, è possibile modificare il. `PodDisruptionBudget` È possibile modificare il componente aggiuntivo e modificare queste impostazioni nelle **configurazioni facoltative** utilizzando i campi dell’esempio seguente. Questo esempio mostra l’impostazione predefinita `PodDisruptionBudget`.

  ```
  {
      "podDisruptionBudget": {
          "enabled": true,
          "maxUnavailable": 1
          }
  }
  ```

  Puoi impostare `maxUnavailable` o `minAvailable`, ma non puoi impostare entrambi sullo stesso `PodDisruptionBudget`. *Per ulteriori informazioni su`PodDisruptionBudgets`, consulta [Specificare a nella documentazione di Kubernetes PodDisruptionBudget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget).*

  Tieni presente che, se imposti `enabled` su `false`, il `PodDisruptionBudget` non viene rimosso. Dopo aver impostato questo campo su `false`, è necessario eliminare l’oggetto `PodDisruptionBudget`. Allo stesso modo, se modifichi il componente aggiuntivo per utilizzarne una versione precedente (esegui il downgrade del componente aggiuntivo) dopo l’aggiornamento a una versione con un `PodDisruptionBudget`, questo non viene rimosso `PodDisruptionBudget`. Esegui il seguente comando per eliminare il `PodDisruptionBudget`:

  ```
  kubectl delete poddisruptionbudget coredns -n kube-system
  ```
+ Nelle versioni dei componenti aggiuntivi di EKS `v1.10.1-eksbuild.5` e successive, modifica la tolleranza predefinita da `node-role.kubernetes.io/master:NoSchedule` a `node-role.kubernetes.io/control-plane:NoSchedule` per conformarla a KEP 2067. *Per ulteriori informazioni su KEP 2067, consulta [KEP-2067: Rinomina l'etichetta «master» e il taint di kubeadm in Kubernetes](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/kubeadm/2067-rename-master-label-taint#renaming-the-node-rolekubernetesiomaster-node-taint) Enhancement Proposals () on. KEPs* GitHub

  Nelle versioni dei componenti aggiuntivi di EKS `v1.8.7-eksbuild.8` e successive e `v1.9.3-eksbuild.9` e successive, entrambe le tolleranze sono impostate per essere compatibili con tutte le versioni di Kubernetes.
+ Nelle versioni aggiuntive EKS `v1.9.3-eksbuild.11` e `v1.10.1-eksbuild.7` e successive, l’implementazione di CoreDNS imposta un valore predefinito per `topologySpreadConstraints`. Il valore predefinito garantisce che i pod CoreDNS siano distribuiti tra le zone di disponibilità se sono disponibili nodi in più zone di disponibilità. Puoi impostare un valore personalizzato che verrà utilizzato al posto di quello predefinito. Il valore predefinito è riportato di seguito:

  ```
  topologySpreadConstraints:
    - maxSkew: 1
      topologyKey: topology.kubernetes.io/zone
      whenUnsatisfiable: ScheduleAnyway
      labelSelector:
        matchLabels:
          k8s-app: kube-dns
  ```

### Considerazioni sugli aggiornamenti `v1.11` di CoreDNS
<a name="coredns-upgrade-1"></a>
+ Nelle versioni `v1.11.1-eksbuild.4` e successive del componente aggiuntivo di EKS, l’immagine del container è basata su [un’immagine di base minima](https://gallery.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base) gestita da Amazon EKS Distro, che contiene pacchetti minimi e non ha shell. Per ulteriori informazioni, consulta [Amazon EKS Distro](https://distro.eks.amazonaws.com/). L’utilizzo e la risoluzione dei problemi dell’immagine CoreDNS rimangono gli stessi.

# Creazione del componente aggiuntivo CoreDNS di Amazon EKS
<a name="coredns-add-on-create"></a>

Creazione del componente aggiuntivo CoreDNS di Amazon EKS. Prima di creare il componente aggiuntivo, è necessario disporre di un cluster. Per ulteriori informazioni, consulta [Crea un cluster Amazon EKS.](create-cluster.md).

1. Scopri qual è la versione del componente aggiuntivo attualmente installata sul cluster.

   ```
   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
   ```

1. Scopri qual è il tipo di componente aggiuntivo attualmente installato sul cluster. 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. 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 componente aggiuntivo del tipo Amazon EKS e non è necessario completare i passaggi rimanenti di questa procedura. Se viene restituito un errore, sul cluster non è installato il componente aggiuntivo del tipo Amazon EKS. Completa i passaggi rimanenti di questa procedura per installarlo.

1. Salva la configurazione del componente aggiuntivo attualmente installato.

   ```
   kubectl get deployment coredns -n kube-system -o yaml > aws-k8s-coredns-old.yaml
   ```

1. Creare il componente aggiuntivo utilizzando AWS CLI. Se desideri utilizzare la Console di gestione AWS o il `eksctl` per creare il componente aggiuntivo, consulta [Creare un componente aggiuntivo Amazon EKS](creating-an-add-on.md) e indica `coredns` come nome del componente aggiuntivo. Copia il comando seguente sul tuo dispositivo. Apporta le seguenti modifiche al comando, se necessario, quindi esegui il comando modificato.
   + Sostituisci *my-cluster* con il nome del tuo cluster.
   + Sostituire *v1.11.3-eksbuild.1* con la versione più recente indicata nella [tabella delle versioni più recenti](managing-coredns.md#coredns-versions) per la versione del cluster.

     ```
     aws eks create-addon --cluster-name my-cluster --addon-name coredns --addon-version v1.11.3-eksbuild.1
     ```

     Se al componente aggiuntivo attuale sono state applicate impostazioni personalizzate in conflitto con le impostazioni predefinite del componente aggiuntivo di Amazon EKS, la creazione potrebbe non andare a buon fine. Se la creazione non riesce, riceverai un errore che può aiutare a risolvere il problema. In alternativa, puoi aggiungere `--resolve-conflicts OVERWRITE` al comando precedente. Ciò consente al componente aggiuntivo di sovrascrivere le impostazioni personalizzate esistenti. Una volta creato il componente aggiuntivo, è possibile aggiornarlo con impostazioni personalizzate.

1. Verificare che la versione più recente del componente aggiuntivo per la versione Kubernetes del cluster sia stata aggiunta al cluster. Sostituisci *my-cluster* con il nome del tuo cluster.

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

   La creazione del componente aggiuntivo potrebbe richiedere alcuni secondi.

   Di seguito viene riportato un output di esempio:

   ```
   v1.11.3-eksbuild.1
   ```

1. Se hai creato impostazioni personalizzate per il componente aggiuntivo originale, prima di creare il componente aggiuntivo di Amazon EKS, utilizza la configurazione che hai salvato precedentemente per aggiornare il componente aggiuntivo di Amazon EKS con le tue impostazioni personalizzate. Per istruzioni sull’aggiornamento del componente aggiuntivo, consultare la pagina [Aggiornamento del componente aggiuntivo CoreDNS di Amazon EKS](coredns-add-on-update.md).

# Aggiornamento del componente aggiuntivo CoreDNS di Amazon EKS
<a name="coredns-add-on-update"></a>

Aggiorna il componente aggiuntivo del tipo Amazon EKS. Se al cluster non è stato aggiunto il componente aggiuntivo Amazon EKS, [aggiungerlo](coredns-add-on-create.md) o consultare [Aggiornamento del componente aggiuntivo CoreDNS autogestito di Amazon EKS](coredns-add-on-self-managed-update.md).

Prima di iniziare, consultare le considerazioni sull’aggiornamento. Per ulteriori informazioni, consulta [Considerazioni importanti sull’aggiornamento di CoreDNS](managing-coredns.md#coredns-upgrade).

1. Scopri qual è la versione del componente aggiuntivo attualmente installata sul cluster. Sostituire *my-cluster* con il nome del cluster.

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

   Di seguito viene riportato un output di esempio:

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

   Se la versione restituita è la stessa della versione Kubernetes del cluster presente nella [tabella delle versioni più recenti](managing-coredns.md#coredns-versions), la versione più recente è già installata nel cluster e non è necessario completare il resto di questa procedura. Se nell’output viene restituito un errore invece di un numero di versione, il componente aggiuntivo del tipo Amazon EKS non è installato sul cluster. È necessario [creare il componente aggiuntivo](coredns-add-on-create.md) prima di poterlo aggiornare con questa procedura.

1. Salva la configurazione del componente aggiuntivo attualmente installato.

   ```
   kubectl get deployment coredns -n kube-system -o yaml > aws-k8s-coredns-old.yaml
   ```

1. Aggiornare il componente aggiuntivo utilizzando AWS CLI. Se desideri utilizzare la Console di gestione AWS o il `eksctl` per aggiornare il componente aggiuntivo, consulta [Aggiornamento di un componente aggiuntivo di Amazon EKS](updating-an-add-on.md). Copia il comando seguente sul tuo dispositivo. Apporta le seguenti modifiche al comando, se necessario, quindi esegui il comando modificato.
   + Sostituisci *my-cluster* con il nome del tuo cluster.
   + Sostituire *v1.11.3-eksbuild.1* con la versione più recente indicata nella [tabella delle versioni più recenti](managing-coredns.md#coredns-versions) per la versione del cluster.
   + L’opzione `--resolve-conflictsPRESERVE ` mantiene i valori di configurazione esistenti per il componente aggiuntivo. Se sono stati configurati valori personalizzati per le impostazioni del componente aggiuntivo e non si utilizza questa opzione, Amazon EKS sovrascrive i valori personalizzati con quelli predefiniti. Se utilizzi questa opzione, è preferibile testare eventuali modifiche ai campi e ai valori su un cluster non di produzione prima di aggiornare il componente aggiuntivo sul cluster di produzione. Se modifichi questo valore in `OVERWRITE`, tutte le impostazioni vengono modificate nei valori predefiniti di Amazon EKS. Se sono stati configurati valori personalizzati per un’impostazione qualunque, è possibile che vengano sovrascritti con i valori predefiniti di Amazon EKS. Se questo valore viene modificato in `none`, Amazon EKS non modifica il valore di alcuna impostazione, ma l’aggiornamento potrebbe non andare a buon fine. Se l'aggiornamento non riesce, riceverai un messaggio di errore che ti aiuterà a risolvere il conflitto.
   + Se non viene aggiornata un’impostazione di configurazione, rimuovere `--configuration-values '{"replicaCount":3}'` dal comando. Se viene aggiornata un’impostazione di configurazione, sostituire *“replicaCount”:3* con l’impostazione desiderata. In questo esempio, il numero di repliche di CoreDNS è impostato su `3`. Il valore specificato deve essere valido per lo schema di configurazione. Se non si conosce lo schema di configurazione, è possibile eseguire `aws eks describe-addon-configuration --addon-name coredns --addon-version v1.11.3-eksbuild.1 ` sostituendo *v1.11.3-eksbuild.1* con il numero di versione del componente aggiuntivo di cui si desidera visualizzare la configurazione. Lo schema viene restituito nell'output. Se disponi di una configurazione personalizzata, desideri rimuoverla e reimpostare i valori di tutte le impostazioni ai valori predefiniti di Amazon EKS, rimuovi *"replicaCount":3* dal comando in modo da avere delle `{}` vuote. Per ulteriori informazioni sulle impostazioni di CoreDNS, consultare la pagina [Customizing DNS Service](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/) della documentazione di Kubernetes.

     ```
     aws eks update-addon --cluster-name my-cluster --addon-name coredns --addon-version v1.11.3-eksbuild.1 \
         --resolve-conflicts PRESERVE --configuration-values '{"replicaCount":3}'
     ```

     Il completamento dell'aggiornamento potrebbe richiedere alcuni secondi.

1. Conferma che la versione del componente aggiuntivo sia stata aggiornata. Sostituisci *my-cluster* con il nome del tuo cluster.

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

   Il completamento dell'aggiornamento potrebbe richiedere alcuni secondi.

   Di seguito viene riportato un output di esempio:

   ```
   {
       "addon": {
           "addonName": "coredns",
           "clusterName": "my-cluster",
           "status": "ACTIVE",
           "addonVersion": "v1.11.3-eksbuild.1",
           "health": {
               "issues": []
           },
           "addonArn": "arn:aws:eks:region:111122223333:addon/my-cluster/coredns/d2c34f06-1111-2222-1eb0-24f64ce37fa4",
           "createdAt": "2023-03-01T16:41:32.442000+00:00",
           "modifiedAt": "2023-03-01T18:16:54.332000+00:00",
           "tags": {},
           "configurationValues": "{\"replicaCount\":3}"
       }
   }
   ```

# Aggiornamento del componente aggiuntivo CoreDNS autogestito di Amazon EKS
<a name="coredns-add-on-self-managed-update"></a>

**Importante**  
Consigliamo di aggiungere al cluster il componente aggiuntivo del tipo Amazon EKS anziché quello del tipo autogestito. In caso di dubbi sulle differenze tra i due tipi, consultare la pagina [Componenti aggiuntivi Amazon EKS](eks-add-ons.md). Per ulteriori informazioni sull'aggiunta di un componente aggiuntivo di Amazon EKS al cluster, consulta [Creare un componente aggiuntivo Amazon EKS](creating-an-add-on.md). Se non è possibile utilizzare il componente aggiuntivo di Amazon EKS, si consiglia di segnalare il problema nel [repository GitHub delle roadmap dei container](https://github.com/aws/containers-roadmap/issues).

Prima di iniziare, consultare le considerazioni sull’aggiornamento. Per ulteriori informazioni, consulta [Considerazioni importanti sull’aggiornamento di CoreDNS](managing-coredns.md#coredns-upgrade).

1. Verifica che sul cluster sia installato il componente aggiuntivo del tipo autogestito. Sostituisci *my-cluster* con il nome del tuo cluster.

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

   Se viene restituito un messaggio di errore, sul cluster è installato il componente aggiuntivo del tipo autogestito. Completa i passaggi rimanenti di questa procedura. Se viene restituito il numero di versione, sul cluster è installato il tipo Amazon EKS del componente aggiuntivo. Per aggiornare il componente aggiuntivo del tipo Amazon EKS, utilizzare la procedura descritta alla pagina [Update the CoreDNS Amazon EKS add-on](coredns-add-on-update.md) anziché quella qui indicata. In caso di dubbi sulle differenze tra i tipi di componente aggiuntivo, consultare la pagina [Componenti aggiuntivi Amazon EKS](eks-add-ons.md).

1. Scopri qual è la versione dell'immagine di container attualmente installata sul cluster.

   ```
   kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
   ```

   Di seguito viene riportato un output di esempio:

   ```
   v1.8.7-eksbuild.2
   ```

1. Se la versione corrente di CoreDNS è `v1.5.0` o successiva, ma precedente alla versione indicata nella tabella [Versioni CoreDNS](managing-coredns.md#coredns-versions), saltare questa fase. Se la versione corrente è precedente alla `1.5.0`, è necessario modificare `ConfigMap` per CoreDNS al fine di utilizzare il componente aggiuntivo avanzato, anziché il componente aggiuntivo proxy.

   1. Aprire il file `ConfigMap` con il comando seguente:

      ```
      kubectl edit configmap coredns -n kube-system
      ```

   1. Sostituire `proxy` nella linea seguente con `forward`. Salvare il file e uscire dall'editor.

      ```
      proxy . /etc/resolv.conf
      ```

1. Se il cluster è stato originariamente implementato su Kubernetes `1.17` o versioni precedenti, potrebbe essere necessario rimuovere una riga obsoleta dal manifesto CoreDNS.
**Importante**  
È necessario completare questo passaggio prima di eseguire l’aggiornamento alla versione `1.7.0` di CoreDNS, ma è preferibile completarlo anche si esegue l’aggiornamento a una versione precedente.

   1. Controllare se il manifesto CoreDNS presenta la riga di inserimento.

      ```
      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream
      ```

      Se non viene restituito alcun output, nel manifesto non è presente la riga ed è possibile passare direttamente alla fase successiva per aggiornare CoreDNS. Se viene restituito l'output, è necessario rimuovere la riga di inserimento.

   1. Modificare `ConfigMap` con il seguente comando, rimuovendo la riga nel file che ha la parola `upstream` in esso. Non apportare ulteriori modifiche al file. Una volta rimossa la riga di inserimento, salvare le modifiche.

      ```
      kubectl edit configmap coredns -n kube-system -o yaml
      ```

1. Recuperare la versione attuale dell’immagine CoreDNS:

   ```
   kubectl describe deployment coredns -n kube-system | grep Image
   ```

   Di seguito viene riportato un output di esempio:

   ```
   602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
   ```

1. Se si esegue l’aggiornamento a CoreDNS versione `1.8.3` o successive, è necessario aggiungere l’autorizzazione `endpointslices` al `system:coredns` del `clusterrole` Kubernetes.

   ```
   kubectl edit clusterrole system:coredns -n kube-system
   ```

   Aggiungere le seguenti righe sotto le righe di autorizzazioni esistenti nella sezione `rules` del file.

   ```
   [...]
   - apiGroups:
     - discovery.k8s.io
     resources:
     - endpointslices
     verbs:
     - list
     - watch
   [...]
   ```

1. Aggiornare il componente aggiuntivo CoreDNS sostituendo*602401143452* e *region-code* con i valori dell’output restituiti in una fase precedente. Sostituire *v1.11.3-eksbuild.1* con la versione CoreDNS indicata nella [tabella delle versioni più recenti](managing-coredns.md#coredns-versions) per la versione Kubernetes.

   ```
   kubectl set image deployment.apps/coredns -n kube-system  coredns=602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.11.3-eksbuild.1
   ```

   Di seguito viene riportato un output di esempio:

   ```
   deployment.apps/coredns image updated
   ```

1. Controlla nuovamente la versione dell'immagine del container per accertarti che sia stata aggiornata alla versione specificata nel passaggio precedente.

   ```
   kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
   ```

   Di seguito viene riportato un output di esempio:

   ```
   v1.11.3-eksbuild.1
   ```

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

# Monitorare la risoluzione DNS di Kubernetes con parametri CoreDNS
<a name="coredns-metrics"></a>

CoreDNS come componente aggiuntivo EKS espone i parametri di CoreDNS sulla porta `9153` nel formato Prometheus nel servizio `kube-dns`. Puoi usare Prometheus, l'agente Amazon CloudWatch o qualsiasi altro sistema compatibile per eseguire lo scraping (raccogliere) questi parametri.

Per un esempio di *configurazione di scraping* compatibile sia con Prometheus che con l'agente CloudWatch, consulta [Configurazione dell'agente CloudWatch per Prometheus](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights-Prometheus-Setup-configure.html) nella *Guida per l'utente di Amazon CloudWatch*.