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.
Scalare i pod CoreDNS per un traffico DNS elevato
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
Prerequisiti
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
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. 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 |
|
|
|
|
|
|
|
|
|
|
|
|
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
| Versione di Kubernetes 1.15 | 1.29 | 1.28 |
|---|---|---|
|
|
|
-
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.
-
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-clustercon il nome del cluster.aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output textSe 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 per sostituire la versione autogestita con il componente aggiuntivo EKS.
-
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 3Di seguito viene riportato un output di esempio:
v1.10.1-eksbuild.13Confrontare 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.
-
Aggiungere la configurazione del dimensionamento automatico alle Opzioni di configurazione facoltative del componente aggiuntivo EKS.
-
Aprire la Console Amazon EKS
. -
Nel riquadro di navigazione a sinistra, seleziona Cluster, quindi seleziona il nome del cluster per cui configurare il componente aggiuntivo.
-
Seleziona la scheda Componenti aggiuntivi.
-
Selezionare la casella nella parte superiore destra della casella del componente aggiuntivo CoreDNS e scegliere Modifica.
-
Nella pagina Configurazione di CoreDNS:
-
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.
-
Scegli Impostazioni di configurazione facoltative.
-
Inserire la chiave JSON
"autoscaling":e il valore di un oggetto JSON annidato con una chiave"enabled":e un valoretruenei 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 } } -
(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 } }
-
-
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 rolloutdispone 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 rolloutSe 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 logssu un pod CoreDNS per visualizzare i log di CoreDNS.
-
-
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.
-
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.
-
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-clustercon il nome del cluster.aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output textSe 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 per sostituire la versione autogestita con il componente aggiuntivo EKS.
-
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 3Di seguito viene riportato un output di esempio:
v1.10.1-eksbuild.13Confrontare 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.
-
Aggiungere la configurazione del dimensionamento automatico alle Opzioni di configurazione facoltative del componente aggiuntivo EKS.
Esegui il seguente comando AWS CLI. Sostituisci
my-clustercon 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 rolloutdispone 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 rolloutSe 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 logssu un pod CoreDNS per visualizzare i log di CoreDNS. -
(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}}' -
Verificare lo stato dell’aggiornamento del componente aggiuntivo eseguendo il seguente comando:
aws eks describe-addon --cluster-name my-cluster --addon-name corednsSe 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.