Aidez à améliorer cette page
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page qui se trouve dans le volet droit de chaque page.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Mise à l’échelle des pods CoreDNS pour un trafic DNS élevé
Lorsque vous lancez un cluster Amazon EKS avec au moins un nœud, un déploiement de deux répliques de l'image CoreDNS est déployé par défaut, quel que soit le nombre de nœuds déployés dans votre cluster. Les pods CoreDNS fournissent une résolution de noms pour tous les pods du cluster. Les applications utilisent la résolution de noms pour se connecter aux pods et services du cluster, ainsi qu’aux services externes situés hors du cluster. À mesure que le nombre de requêtes de résolution de noms (requêtes) émises par les pods augmente, les pods CoreDNS peuvent être surchargés, ce qui provoque un ralentissement et peut entraîner le rejet de certaines requêtes que les pods ne peuvent pas traiter.
Pour gérer cette augmentation de charge sur les pods CoreDNS, il est recommandé de mettre en place un système d’autoscaling pour CoreDNS. Amazon EKS peut gérer la mise à l'échelle automatique du déploiement CoreDNS dans la Add-on version EKS de CoreDNS. Cet autoscaler CoreDNS surveille en continu l’état du cluster, y compris le nombre de nœuds et le nombre de cœurs de processeur. En fonction de ces informations, le contrôleur ajuste dynamiquement le nombre de réplicas du déploiement CoreDNS dans le cluster EKS. Cette fonctionnalité est disponible pour CoreDNS en version v1.9 et ultérieure. Pour plus d’informations sur les versions compatibles avec la mise à l’échelle automatique de CoreDNS, consultez la section suivante.
Par défaut, le système gère automatiquement les répliques CoreDNS à l'aide d'une formule dynamique basée à la fois sur le nombre de nœuds et de cœurs de processeur du cluster. La formule calcule le maximum de (numberOfNodesdivisé par 16) et (numberOfCPUCoresdivisé par 256). Le système évalue la demande sur des périodes de pointe de 10 minutes et augmente immédiatement en cas de besoin pour gérer l'augmentation de la charge de requêtes DNS. Le système se réduit progressivement en réduisant le nombre de répliques de 33 % toutes les 3 minutes afin de maintenir la stabilité du système et d'éviter toute interruption.
Vous pouvez ajuster les paramètres nodesPerReplica et les paramètres de mise à l'cpuCoresPerReplicaéchelle via la Add-on configuration EKS :
-
nodesPerReplica: nombre de nœuds par réplique CoreDNS. La valeur par défaut est16. Une valeur inférieure augmente le nombre de répliques gérées par la mise à l'échelle automatique pour un nombre donné de nœuds. -
cpuCoresPerReplica: nombre de cœurs de processeur par réplique CoreDNS. La valeur par défaut est256. Une valeur inférieure augmente le nombre de répliques gérées par la mise à l'échelle automatique pour un nombre donné de cœurs de processeur.
La mise à l'échelle automatique utilise le plus grand des deux nombres de répliques calculés et classe le résultat entre et. minReplicas maxReplicas Pour utiliser nodesPerReplica oucpuCoresPerReplica, votre CoreDNS Add-on doit disposer de la version minimale de Kubernetes de votre cluster. Pour plus d'informations, consultez la section Add-on Version minimale d'EKS pour les paramètres de mise à l'échelle avancés.
Il est recommandé d’utiliser cette fonctionnalité conjointement avec les bonnes pratiques de mise à l’échelle automatique des clusters EKS
Conditions préalables
Pour qu'Amazon EKS puisse étendre votre déploiement CoreDNS, vous devez remplir les conditions préalables suivantes :
-
Vous devez utiliser la Add-on version EKS de CoreDNS.
-
Pour configurer
nodesPerReplicaoucpuCoresPerReplica, vous devez utiliser la version minimale de CoreDNS en fonction de Add-on la version Kubernetes de votre cluster, comme indiqué dans la section suivante.
Add-on Version EKS minimale pour les paramètres de mise à l'échelle avancés
Le tableau suivant répertorie la version minimale de CoreDNS requise pour chaque Add-on version de Kubernetes afin d'utiliser les paramètres de dimensionnement et. nodesPerReplica cpuCoresPerReplica
| Version de Kubernetes | Version de 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 |
-
Assurez-vous que vous disposez de l'EKS Add-on pour CoreDNS, et non du déploiement CoreDNS autogéré.
Selon l'outil avec lequel vous avez créé votre cluster, le type de module complémentaire Amazon EKS peut ne pas être actuellement installé sur votre cluster. Pour vérifier quel type de module complémentaire est installé sur votre cluster, exécutez la commande suivante. Remplacez
my-clusterpar le nom de votre cluster.aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output textSi un numéro de version est renvoyé, cela signifie que vous avez installé sur votre cluster le module complémentaire de type Amazon EKS, et vous pouvez passer à l’étape suivante. Si une erreur est renvoyée, cela signifie que le type de module complémentaire Amazon EKS n’est pas installé sur votre cluster. Suivez les étapes restantes de la procédure Création du module complémentaire CoreDNS Amazon EKS afin de remplacer la version autogérée par le module complémentaire Amazon EKS.
-
Assurez-vous que la version de votre EKS Add-on pour CoreDNS est identique ou supérieure à la version minimale d'EKS Add-on .
Déterminez la version du module complémentaire actuellement installée sur votre cluster. Vous pouvez enregistrer Console de gestion AWS ou exécuter la commande suivante :
kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3L'exemple qui suit illustre un résultat.
v1.10.1-eksbuild.13Comparez cette version avec la Add-on version minimale d'EKS dans la section précédente. Si nécessaire, mettez à niveau l'EKS Add-on vers une version supérieure en suivant la procédure Mettre à jour le module complémentaire CoreDNS Amazon EKS.
-
Ajoutez la configuration de mise à l'échelle automatique aux paramètres de configuration facultatifs de l'EKS Add-on.
-
Ouvrez la console Amazon EKS
. -
Dans le panneau de navigation de gauche, sélectionnez Clusters, puis sélectionnez le nom du cluster pour lequel vous souhaitez configurer le module complémentaire.
-
Cliquez sur l'onglet Add-ons.
-
Cochez la case située dans le coin supérieur droit du bloc CoreDNS, puis sélectionnez Modifier.
-
Sur la page Configurer CoreDNS :
-
Sélectionnez la version que vous souhaitez utiliser. Il est recommandé de conserver la même version que celle de l’étape précédente et d’effectuer la mise à jour de la version et de la configuration séparément.
-
Sélectionnez Paramètres de configuration facultatifs.
-
Dans le champ Valeurs de configuration, saisissez la clé JSON
"autoscaling":et la valeur d’un objet JSON imbriqué comportant une clé"enabled":et une valeurtrue. Le texte obtenu doit être un objet JSON valide. Si cette clé et cette valeur sont les seules données de la zone de texte, entourez-les d'accolades{ }. L’exemple suivant montre la mise à l’échelle automatique activée :{ "autoScaling": { "enabled": true } }L'exemple suivant montre que la mise à l'échelle automatique est activée avec des valeurs de réplica minimales et maximales. Il est recommandé que le nombre minimal de pods CoreDNS soit toujours supérieur à 2, afin d’assurer la résilience du service DNS dans le cluster.
{ "autoScaling": { "enabled": true, "minReplicas": 2, "maxReplicas": 10 } }L'exemple suivant définit également les paramètres de
cpuCoresPerReplicamise à l'échellenodesPerReplicaet. Ces clés nécessitent une version minimale de CoreDNS. Add-on Pour plus d'informations, consultez la section Add-on Version minimale d'EKS pour les paramètres de mise à l'échelle avancés.{ "autoScaling": { "enabled": true, "minReplicas": 2, "maxReplicas": 10, "nodesPerReplica": 5, "cpuCoresPerReplica": 256 } }
-
-
Pour appliquer la nouvelle configuration en remplaçant les pods CoreDNS, sélectionnez Enregistrer les modifications.
Amazon EKS applique les modifications à l'EKS Add-ons en déployant le déploiement de Kubernetes pour CoreDNS. Vous pouvez suivre l'état du déploiement dans l'historique des mises à jour du module complémentaire dans Console de gestion AWS et avec
kubectl rollout status deployment/coredns --namespace kube-system.L’outil
kubectl rolloutpropose les commandes suivantes :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 rolloutSi le déploiement prend trop de temps, Amazon EKS annule automatiquement le déploiement, et un message indiquant un type de Mise à jour du module complémentaire avec un état Échec est ajouté à l’Historique des mises à jour du module complémentaire. Pour analyser les problèmes, commencez par consulter l’historique du déploiement, puis exécutez la commande
kubectl logssur un pod CoreDNS afin d’afficher les journaux CoreDNS.
-
-
Si la nouvelle entrée de l’Historique des mises à jour affiche un état Réussi, cela signifie que le déploiement est terminé et que le module complémentaire utilise la nouvelle configuration sur l’ensemble des pods CoreDNS. Lorsque le nombre de nœuds et de cœurs du processeur du cluster varie, Amazon EKS ajuste dynamiquement le nombre de réplicas du déploiement CoreDNS en conséquence.
-
Assurez-vous que vous disposez de l'EKS Add-on pour CoreDNS, et non du déploiement CoreDNS autogéré.
Selon l'outil avec lequel vous avez créé votre cluster, le type de module complémentaire Amazon EKS peut ne pas être actuellement installé sur votre cluster. Pour vérifier quel type de module complémentaire est installé sur votre cluster, exécutez la commande suivante. Remplacez
my-clusterpar le nom de votre cluster.aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output textSi un numéro de version est renvoyé, le type de module complémentaire Amazon EKS est installé sur votre cluster. Si une erreur est renvoyée, cela signifie que le type de module complémentaire Amazon EKS n’est pas installé sur votre cluster. Suivez les étapes restantes de la procédure Création du module complémentaire CoreDNS Amazon EKS afin de remplacer la version autogérée par le module complémentaire Amazon EKS.
-
Assurez-vous que la version de votre EKS Add-on pour CoreDNS est identique ou supérieure à la version minimale d'EKS Add-on .
Déterminez la version du module complémentaire actuellement installée sur votre cluster. Vous pouvez enregistrer Console de gestion AWS ou exécuter la commande suivante :
kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3L'exemple qui suit illustre un résultat.
v1.10.1-eksbuild.13Comparez cette version avec la Add-on version minimale d'EKS dans la section précédente. Si nécessaire, mettez à niveau l'EKS Add-on vers une version supérieure en suivant la procédure Mettre à jour le module complémentaire CoreDNS Amazon EKS.
-
Ajoutez la configuration de mise à l'échelle automatique aux paramètres de configuration facultatifs de l'EKS Add-on.
Exécutez la commande AWS CLI suivante. Remplacez
my-clusterpar le nom de votre cluster et l'ARN du rôle IAM par le rôle que vous utilisez.aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true}}'Amazon EKS applique les modifications à l'EKS Add-ons en déployant le déploiement de Kubernetes pour CoreDNS. Vous pouvez suivre l'état du déploiement dans l'historique des mises à jour du module complémentaire dans Console de gestion AWS et avec
kubectl rollout status deployment/coredns --namespace kube-system.L’outil
kubectl rolloutpropose les commandes suivantes :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 rolloutSi le déploiement prend trop de temps, Amazon EKS annule automatiquement le déploiement, et un message indiquant un type de Mise à jour du module complémentaire avec un état Échec est ajouté à l’Historique des mises à jour du module complémentaire. Pour analyser les problèmes, commencez par consulter l’historique du déploiement, puis exécutez la commande
kubectl logssur un pod CoreDNS afin d’afficher les journaux CoreDNS. -
(Facultatif) Vous pouvez spécifier les valeurs minimales et maximales auxquelles l’autoscaling peut mettre à l’échelle le nombre de pods CoreDNS.
L'exemple suivant montre que la mise à l'échelle automatique est activée avec des valeurs de réplica minimales et maximales. Il est recommandé que le nombre minimal de pods CoreDNS soit toujours supérieur à 2, afin d’assurer la résilience du service DNS dans le cluster.
aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true,"minReplicas":2,"maxReplicas":10}}' -
(Facultatif) Vous pouvez également définir les paramètres de
cpuCoresPerReplicamise à l'échellenodesPerReplicaet. Ces clés nécessitent une version minimale de CoreDNS. Add-on Pour plus d'informations, consultez la section Add-on Version minimale d'EKS pour les paramètres de mise à l'échelle avancés.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}}' -
Pour vérifier l’état de la mise à jour du module complémentaire, exécutez la commande suivante :
aws eks describe-addon --cluster-name my-cluster --addon-name corednsSi vous voyez cette ligne :
"status": "ACTIVE", cela signifie que le déploiement est terminé et que le module complémentaire utilise la nouvelle configuration dans tous les pods CoreDNS. Lorsque le nombre de nœuds et de cœurs du processeur du cluster varie, Amazon EKS ajuste dynamiquement le nombre de réplicas du déploiement CoreDNS en conséquence.