View a markdown version of this page

Scalare i pod CoreDNS per un traffico DNS elevato - Amazon EKS

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 su che si trova 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

Quando avvii un cluster Amazon EKS con almeno un nodo, per impostazione predefinita viene distribuita una distribuzione 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 è in grado di gestire la scalabilità automatica della distribuzione CoreDNS nella versione EKS di CoreDNS. Add-on 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.

Per impostazione predefinita, il sistema gestisce automaticamente le repliche CoreDNS utilizzando una formula dinamica basata sia sul numero di nodi che sui core della CPU nel cluster. La formula calcola il numero massimo di (numberOfNodesdiviso per 16) e (numberOfCPUCoresdiviso per 256). Il sistema valuta la domanda in periodi di picco di 10 minuti e si adatta immediatamente quando necessario per gestire l'aumento del carico di query DNS. Il sistema si ridimensiona gradualmente riducendo le repliche del 33% ogni 3 minuti per mantenere la stabilità del sistema ed evitare interruzioni.

È possibile regolare i parametri nodesPerReplica e cpuCoresPerReplica ridimensionarli tramite la configurazione EKS: Add-on

  • nodesPerReplica: il numero di nodi per replica CoreDNS. Il valore predefinito è 16. Un valore inferiore aumenta il numero di repliche che la scalabilità automatica mantiene per un determinato numero di nodi.

  • cpuCoresPerReplica: il numero di core CPU per replica CoreDNS. Il valore predefinito è 256. Un valore inferiore aumenta il numero di repliche che la scalabilità automatica mantiene per un determinato numero di core della CPU.

La scalabilità automatica utilizza il numero maggiore delle due repliche calcolate e fissa il risultato tra e. minReplicas maxReplicas Per utilizzare nodesPerReplica orcpuCoresPerReplica, CoreDNS Add-on deve avere la versione minima per la versione Kubernetes del cluster. Per ulteriori informazioni, consulta Add-on Versione minima EKS per i parametri di scalabilità avanzati.

Consigliamo di utilizzare questa funzionalità insieme ad altre best practice di dimensionamento automatico dei cluster EKSper migliorare la disponibilità dell’applicazione e la scalabilità del cluster in generale.

Prerequisiti

Affinché Amazon EKS possa scalare la tua distribuzione CoreDNS, devi soddisfare i seguenti prerequisiti:

  • È necessario utilizzare la versione EKS Add-on di CoreDNS.

  • Per configurare nodesPerReplica ocpuCoresPerReplica, è necessario utilizzare la versione minima di CoreDNS basata sulla Add-on versione Kubernetes del cluster, come mostrato nella sezione seguente.

Versione minima EKS Add-on per parametri di scalabilità avanzati

La tabella seguente elenca la versione minima di CoreDNS richiesta per ogni Add-on versione di Kubernetes per utilizzare i parametri di scaling. nodesPerReplica cpuCoresPerReplica

Versione di Kubernetes Versione di CoreDNS

1.36

v1.14.3-eksbuild.16

1,35

v1.14.3-eksbuild.16

1,34

v1.13.2-eksbuild.24

1.33

v1.12.4-eksbuild.31

1,32

v1.11.4-eksbuild.53

1,31

v1.11.4-eksbuild.53

  1. Assicurati di disporre dell'EKS Add-on per CoreDNS, non della distribuzione 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 per sostituire la versione autogestita con il componente aggiuntivo EKS.

  2. Assicurati che la versione di EKS Add-on per CoreDNS sia uguale o superiore alla versione minima di EKS. Add-on

    Scopri qual è la versione del componente aggiuntivo attualmente installata sul cluster. Puoi effettuare il check-in Console di gestione AWS o eseguire 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

    Confronta questa versione con la Add-on versione minima EKS nella sezione precedente. Se necessario, aggiorna l'EKS Add-on a una versione superiore seguendo la procedura Aggiorna il componente aggiuntivo CoreDNS Amazon EKS.

  3. Aggiungi la configurazione di scalabilità automatica alle impostazioni di configurazione opzionali di EKS. Add-on

    1. Aprire la Console Amazon EKS.

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

    3. Scegli la scheda Add-ons.

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

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

      2. Scegliere Impostazioni di configurazione facoltative.

      3. 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 } }

        L'esempio seguente mostra la scalabilità automatica abilitata con valori di replica minimi e massimi. 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 } }

        L'esempio seguente imposta anche i parametri di scala nodesPerReplica ecpuCoresPerReplica. Queste chiavi richiedono una versione minima di CoreDNS Add-on . Per ulteriori informazioni, vedere Add-on Versione minima EKS per i parametri di scalabilità avanzati.

        { "autoScaling": { "enabled": true, "minReplicas": 2, "maxReplicas": 10, "nodesPerReplica": 5, "cpuCoresPerReplica": 256 } }
    6. Scegliere Salva modifiche per applicare la nuova configurazione sostituendo i pod CoreDNS.

      Amazon EKS applica le modifiche all'EKS Add-ons utilizzando un'implementazione di Kubernetes Deployment for CoreDNS. Puoi monitorare lo stato dell'implementazione nella cronologia degli aggiornamenti del componente aggiuntivo in e con. Console di gestione AWS 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.

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

  1. Assicurati di disporre dell'EKS Add-on per CoreDNS, non della distribuzione 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 per sostituire la versione autogestita con il componente aggiuntivo EKS.

  2. Assicurati che la versione di EKS Add-on per CoreDNS sia uguale o superiore alla versione minima di EKS. Add-on

    Scopri qual è la versione del componente aggiuntivo attualmente installata sul cluster. Puoi effettuare il check-in Console di gestione AWS o eseguire 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

    Confronta questa versione con la Add-on versione minima EKS nella sezione precedente. Se necessario, aggiorna l'EKS Add-on a una versione superiore seguendo la procedura Aggiorna il componente aggiuntivo CoreDNS Amazon EKS.

  3. Aggiungi la configurazione di scalabilità automatica alle impostazioni di configurazione opzionali di EKS. Add-on

    Esegui il seguente AWS comando CLI. Sostituire my-cluster con il nome del cluster e l’ARN del ruolo IAM con il ruolo che si sta 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 all'EKS Add-ons utilizzando un'implementazione di Kubernetes Deployment for CoreDNS. Puoi monitorare lo stato dell'implementazione nella cronologia degli aggiornamenti del componente aggiuntivo in e con. Console di gestione AWS 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.

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

    L'esempio seguente mostra la scalabilità automatica abilitata con valori di replica minimi e massimi. 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}}'
  5. (Facoltativo) È inoltre possibile impostare i parametri di scala nodesPerReplica ecpuCoresPerReplica. Queste chiavi richiedono una versione minima di CoreDNS Add-on . Per ulteriori informazioni, vedere Add-on Versione minima EKS per i parametri di scalabilità avanzati.

    aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true,"minReplicas":2,"maxReplicas":10,"nodesPerReplica":5,"cpuCoresPerReplica":256}}'
  6. 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.