Gestione di CoreDNS per DNS nei cluster Amazon EKS - Amazon EKS

Contribuisci a migliorare questa pagina

Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.

Gestione di CoreDNS per DNS nei cluster Amazon EKS

Suggerimento

Con Amazon EKS Auto Mode, 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.

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 con un namespace che corrisponde al namespace del deployment CoreDNS. Per ulteriori informazioni su CoreDNS, consultare Utilizzo di CoreDNS per l’individuazione dei servizi nella documentazione Kubernetes.

Versioni di CoreDNS

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

v1.12.4-eksbuild.1

1.32

v1.11.4-eksbuild.22

1.31

v1.11.4-eksbuild.22

1.30

v1.11.4-eksbuild.22

1.29

v1.11.4-eksbuild.22

1.28

v1.10.1-eksbuild.38

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.

Considerazioni importanti sull’aggiornamento di CoreDNS

  • Gli aggiornamenti di CoreDNS utilizzano un PodDisruptionBudget 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 Specifying a PodDisruptionBudget nella documentazione di Kubernetes.

    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: Rename the kubeadm "master" label and taint in Kubernetes Enhancement Proposals (KEPs) su 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

  • 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 gestita da Amazon EKS Distro, che contiene pacchetti minimi e non ha shell. Per ulteriori informazioni, consulta Amazon EKS Distro. L’utilizzo e la risoluzione dei problemi dell’immagine CoreDNS rimangono gli stessi.