Aidez à améliorer cette page
Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.
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.
Utilisation du module complémentaire CoreDNS Amazon EKS
CoreDNS est un serveur DNS flexible et extensible qui peut servir de DNS de cluster Kubernetes. Lorsque vous lancez un cluster Amazon EKS avec au moins un nœud, deux réplicas de l'image CoreDNS sont déployés 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 Pods CoreDNS peuvent être déployés sur les nœuds Fargate si votre cluster inclut un Définissez quelle Pods utilisation AWS Fargate lors du lancement avec un espace de noms qui correspond à l'espace de noms pour le CoreDNS deployment
. Pour plus d'informations sur CoreDNS, consultez Utilisation de CoreDNS pour la découverte des services
Le tableau suivant répertorie la dernière version du module complémentaire Amazon EKS pour chaque version de Kubernetes.
Version de Kubernetes | 1.30 |
1.29 |
1.28 |
1.27 |
1.26 |
1.25 |
1.24 |
1.23 |
---|---|---|---|---|---|---|---|---|
v1.11.1-eksbuild.9 |
v1.11.1-eksbuild.9 |
v1.10.1-eksbuild.11 |
v1.10.1-eksbuild.11 |
v1.9.3-eksbuild.15 |
v1.9.3-eksbuild.15 |
v1.9.3-eksbuild.15 |
v1.8.7-eksbuild.10 |
Important
Si vous gérez vous-même ce module complémentaire, les versions répertoriées dans le tableau peuvent ne pas être les mêmes que les versions autogérées disponibles. Pour plus d'informations sur la mise à jour du type autogéré de ce module complémentaire, consultez la rubrique Mise à jour du module complémentaire autogéré.
Considérations importantes concernant la mise à niveau de CoreDNS
-
Pour améliorer la stabilité et la disponibilité de CoreDNSDeployment, des versions
v1.9.3-eksbuild.6
et des versions ultérieures et,v1.10.1-eksbuild.3
elles sont déployées avec unPodDisruptionBudget
. Si vous avez déployé une version existantePodDisruptionBudget
, la mise à niveau vers ces versions risque d'échouer. Si la mise à niveau échoue, l'exécution de l'une des tâches suivantes devrait résoudre le problème :-
Lors de la mise à niveau du module complémentaire Amazon EKS, choisissez de remplacer les paramètres existants comme option de résolution des conflits. Si vous avez défini d'autres paramètres personnalisés pour le Deployment, assurez-vous de les sauvegarder avant de procéder à la mise à niveau afin de pouvoir réappliquer vos autres paramètres personnalisés après la mise à niveau.
-
Supprimez votre version existante
PodDisruptionBudget
et réessayez d'effectuer la mise à niveau.
-
-
Dans les versions
v1.9.3-eksbuild.3
et ultérieures, etv1.10.1-eksbuild.6
et ultérieures des modules complémentaires EKS, le Deployment CoreDNS définitreadinessProbe
pour utiliser le point de terminaison/ready
. Ce point de terminaison est activé dans le fichier de configurationCorefile
pour CoreDNS.Si vous utilisez un
Corefile
personnalisé, vous devez ajouter le plug-inready
à la configuration, afin que le point de terminaison/ready
soit actif dans CoreDNS pour que la sonde puisse l'utiliser. -
Dans les versions
v1.9.3-eksbuild.7
et ultérieures, etv1.10.1-eksbuild.4
et ultérieures des modules complémentaires EKS, vous pouvez modifier lePodDisruptionBudget
. Vous pouvez modifier le module complémentaire et modifier ces paramètres dans les paramètres de configuration facultatifs à l'aide des champs de l'exemple suivant. Cet exemple montre la valeurPodDisruptionBudget
par défaut.{ "podDisruptionBudget": { "enabled": true, "maxUnavailable": 1 } }
Vous pouvez définir
maxUnavailable
ouminAvailable
, mais vous ne pouvez pas définir les deux dans un mêmePodDisruptionBudget
. Pour plus d'informations surPodDisruptionBudgets
, consultez la rubrique Spécification d'unPodDisruptionBudget
de la documentation Kubernetes. Notez que si vous définissez
enabled
surfalse
, lePodDisruptionBudget
n'est pas supprimé. Après avoir défini ce champ surfalse
, vous devez supprimer l'objetPodDisruptionBudget
. De même, si vous modifiez le module complémentaire pour utiliser une ancienne version du module complémentaire (rétrogradage) après la mise à niveau vers une version avec unPodDisruptionBudget
, lePodDisruptionBudget
n'est pas supprimé. Pour supprimer lePodDisruptionBudget
, exécutez la commande suivante :kubectl delete poddisruptionbudget coredns -n kube-system
-
Dans les versions complémentaires d'EKS
v1.10.1-eksbuild.5
et versions ultérieures, modifiez la tolérance par défaut denode-role.kubernetes.io/master:NoSchedule
à pour vous conformernode-role.kubernetes.io/control-plane:NoSchedule
à KEP 2067. Pour plus d’informations sur KEP 2067, consultez KEP-2067: Reame the kubeadm "master" label and taintdans Kubernetes Enhancement Proposals (KEPs) sur GitHub. Dans les versions
v1.8.7-eksbuild.8
complémentaires d'EKSv1.9.3-eksbuild.9
et les versions ultérieures, les deux tolérances sont définies pour être compatibles avec chaque Kubernetes version. -
Dans les versions complémentaires d'EKS
v1.9.3-eksbuild.11
v1.10.1-eksbuild.7
et versions ultérieures, CoreDNS Deployment définit une valeur par défaut pourtopologySpreadConstraints
. La valeur par défaut garantit qu'CoreDNSPodsils sont répartis entre les zones de disponibilité s'il existe des nœuds disponibles dans plusieurs zones de disponibilité. Vous pouvez définir une valeur personnalisée qui sera utilisée à la place de la valeur par défaut. La valeur par défaut est la suivante :topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: k8s-app: kube-dns
CoreDNSconsidérations relatives 1.11
à la mise à niveau
-
Dans les versions complémentaires d'EKS
v1.11.1-eksbuild.4
et versions ultérieures, l'image du conteneur est basée sur une image de base minimalegérée par Amazon EKS Distro, qui contient un minimum de packages et ne possède pas de shell. Pour plus d'informations, consultez Amazon EKS Distro . L'utilisation et le dépannage de l'CoreDNSimage restent les mêmes.
Création du module complémentaire Amazon EKS
Créez le type Amazon EKS du module complémentaire. Check
Prérequis
-
Un cluster Amazon EKS existant. Pour en déployer un, consultez Commencez avec Amazon EKS.
-
Déterminez la version du module complémentaire actuellement installée sur votre cluster.
kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3
L'exemple qui suit illustre un résultat.
v1.10.1-eksbuild.11
-
Déterminez le type de module complémentaire installé sur votre cluster. 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. Remplacez
my-cluster
par 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, et vous n'avez donc pas besoin de suivre les étapes restantes de cette procédure. 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 cette procédure pour l'installer.
-
Enregistrez la configuration du module complémentaire actuellement installé.
kubectl get deployment coredns -n kube-system -o yaml >
aws-k8s-coredns-old.yaml
-
Créez le module complémentaire à l'aide de la AWS CLI. Si vous souhaitez utiliser le AWS Management Console ou
eksctl
pour créer le module complémentaire, consultez Création d'un EKS module complémentaire Amazon et spécifiezcoredns
le nom du module complémentaire. Copiez la commande qui suit sur votre appareil. Si nécessaire, apportez les modifications suivantes à la commande, puis exécutez la commande modifiée.-
Remplacez
par le nom de votre cluster.my-cluster
aws eks create-addon --cluster-name
my-cluster
--addon-name coredns --addon-versionv1.11.1-eksbuild.9
Si vous avez appliqué à votre module complémentaire actuel des paramètres personnalisés qui entrent en conflit avec les paramètres par défaut du module complémentaire Amazon EKS, la création peut échouer. Si la création échoue, vous recevez un message d'erreur qui peut vous aider à résoudre le problème. Vous pouvez également ajouter
--resolve-conflicts OVERWRITE
à la commande précédente. Cela permet au module complémentaire de remplacer les paramètres personnalisés existants. Une fois que vous avez créé le module complémentaire, vous pouvez le mettre à jour avec vos paramètres personnalisés. -
-
Assurez-vous que la dernière version du module complémentaire correspondant à la version de Kubernetes de votre cluster a été ajoutée à votre cluster. Remplacez
par le nom de votre cluster.my-cluster
aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query addon.addonVersion --output textLa création du module complémentaire peut prendre plusieurs secondes.
L'exemple qui suit illustre un résultat.
v1.11.1-eksbuild.9
-
Si vous avez personnalisé les paramètres du module complémentaire, avant de créer le module complémentaire Amazon EKS, utilisez la configuration que vous avez enregistrée lors d'une étape précédente pour mettre à jour le module complémentaire Amazon EKS avec vos paramètres personnalisés.
Mise à jour du module complémentaire Amazon EKS
Mettez à jour le type de module complémentaire Amazon EKS. Si vous n'avez pas ajouté le type de module complémentaire Amazon EKS à votre cluster, ajoutez-le ou consultez la rubrique Mise à jour du module complémentaire autogéré au lieu de terminer cette procédure.
-
Déterminez la version du module complémentaire actuellement installée sur votre cluster. Remplacez
par le nom de votre cluster.my-cluster
aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query "addon.addonVersion" --output textL'exemple qui suit illustre un résultat.
v1.10.1-eksbuild.11
Si la version renvoyée est identique à la version de Kubernetes de votre cluster dans le tableau des dernières versions, cela signifie que la dernière version est déjà installée sur votre cluster, et vous n'avez donc pas besoin de terminer cette procédure. Si vous recevez une erreur au lieu d'un numéro de version dans votre sortie, cela signifie que le type de module complémentaire Amazon EKS n'est pas installé sur votre cluster. Vous devez créer le module complémentaire avant de pouvoir le mettre à jour à l'aide de cette procédure.
-
Enregistrez la configuration du module complémentaire actuellement installé.
kubectl get deployment coredns -n kube-system -o yaml >
aws-k8s-coredns-old.yaml
-
Mettez à jour votre module complémentaire à l'aide de la AWS CLI. Si vous souhaitez utiliser AWS Management Console ou mettre
eksctl
à jour le module complémentaire, consultezMettre à jour un EKS module complémentaire Amazon. Copiez la commande qui suit sur votre appareil. Si nécessaire, apportez les modifications suivantes à la commande, puis exécutez la commande modifiée.-
Remplacez
par le nom de votre cluster.my-cluster
-
L'option
--resolve-conflicts
PRESERVE
conserve les valeurs de configuration existantes pour le module complémentaire. Si vous avez défini des valeurs personnalisées pour les paramètres des modules complémentaires et que vous n'utilisez pas cette option, Amazon EKS remplace vos valeurs par ses valeurs par défaut. Si vous utilisez cette option, nous vous recommandons de tester les modifications de champ et de valeur sur un cluster hors production avant de mettre à jour le module complémentaire sur votre cluster de production. Si vous remplacez cette valeur parOVERWRITE
, tous les paramètres sont remplacés par les valeurs par défaut d'Amazon EKS. Si vous avez défini des valeurs personnalisées pour certains paramètres, il est possible qu'elles soient remplacées par les valeurs par défaut d'Amazon EKS. Si vous remplacez cette valeur parnone
, Amazon EKS ne modifie la valeur d'aucun paramètre, mais la mise à jour risque d'échouer. Si la mise à jour échoue, vous recevez un message d'erreur pour vous aider à résoudre le conflit. -
Si vous ne mettez à jour aucun paramètre de configuration, supprimez
--configuration-values '{
de la commande. Si vous mettez à jour un paramètre de configuration, remplacez"replicaCount":3
}'"replicaCount":3
par le paramètre que vous voulez définir. Dans cet exemple, le nombre de réplicas de CoreDNS est défini sur3
. La valeur que vous spécifiez doit être valide pour le schéma de configuration. Si vous ne connaissez pas le schéma de configurationaws eks describe-addon-configuration --addon-name coredns --addon-version
, lancez-le en remplaçantv1.11.1-eksbuild.9
v1.11.1-eksbuild.9
par le numéro de version du module complémentaire dont vous souhaitez consulter la configuration. Le schéma est renvoyé dans la sortie. Si vous disposez déjà d'une configuration personnalisée et vous voulez la supprimer et rétablir les valeurs par défaut d'Amazon EKS pour tous les paramètres, supprimez"replicaCount":3
de la commande, de sorte que le champ
soit vide. Pour plus d'informations sur les paramètres CoreDNS, consultez la section Personnalisation du service DNS{}
(français non garanti) dans la documentation Kubernetes. aws eks update-addon --cluster-name
my-cluster
--addon-name coredns --addon-versionv1.11.1-eksbuild.9
\ --resolve-conflictsPRESERVE
--configuration-values '{"replicaCount":3
}'La mise à jour peut prendre plusieurs secondes.
-
-
Assurez-vous que la version du module complémentaire a été mise à jour. Remplacez
par le nom de votre cluster.my-cluster
aws eks describe-addon --cluster-name
my-cluster
--addon-name corednsLa mise à jour peut prendre plusieurs secondes.
L'exemple qui suit illustre un résultat.
{ "addon": { "addonName": "coredns", "clusterName": "
my-cluster
", "status": "ACTIVE", "addonVersion": "v1.11.1-eksbuild.9
", "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}"
} }
Mise à jour du module complémentaire autogéré
Important
Nous recommandons d'ajouter le type Amazon EKS du module complémentaire à votre cluster au lieu d'utiliser le type autogéré du module complémentaire. Si la différence entre les types ne vous est pas familière, consultez EKSModules complémentaires Amazon. Pour plus d'informations sur l'ajout d'un module complémentaire Amazon EKS à votre cluster, consultez Création d'un EKS module complémentaire Amazon. Si vous ne parvenez pas à utiliser le module complémentaire Amazon EKS, nous vous encourageons à signaler les raisons pour lesquelles vous ne pouvez pas utiliser le module complémentaire Amazon EKS dans le GitHub référentiel de feuilles de route pour les conteneurs
-
Vérifiez que le type autogéré du module complémentaire est installé sur votre cluster. Remplacez
my-cluster
par le nom de votre cluster.aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query addon.addonVersion --output textSi un message d'erreur est renvoyé, le type autogéré du module complémentaire est installé sur votre cluster. Suivez les étapes restantes de cette procédure. Si un numéro de version est renvoyé, le type de module complémentaire Amazon EKS est installé sur votre cluster. Pour mettre à jour le type Amazon EKS du module complémentaire, suivez la procédure décrite dans la rubrique Mise à jour du module complémentaire Amazon EKS plutôt que cette procédure. Si les différences entre les types de modules complémentaires ne vous sont pas familières, consultez EKSModules complémentaires Amazon.
-
Découvrez quelle version de l'image de conteneur est actuellement installée sur votre cluster.
kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
L'exemple qui suit illustre un résultat.
v1.8.7-eksbuild.2
-
Si votre version actuelle de CoreDNS est
v1.5.0
ou ultérieure, mais qu'elle est antérieure à la version répertoriée dans le tableau Versions de CoreDNS, ignorez cette étape. Si votre version actuelle est antérieure à la version1.5.0
, vous devez modifier laConfigMap
pour que CoreDNS utilise le module complémentaire, plutôt que le module complémentaire proxy.-
Ouvrez la carte de configuration avec la commande suivante.
kubectl edit configmap coredns -n kube-system
-
Remplacez
proxy
dans la ligne suivante parforward
. Enregistrez le fichier et quittez l'éditeur.
. /etc/resolv.confproxy
-
-
Si vous avez initialement déployé votre cluster sur Kubernetes version
1.17
ou antérieure, vous devrez peut-être supprimer une ligne abandonnée de votre manifeste CoreDNS.Important
Vous devez effectuer cette étape avant la mise à jour vers la version
1.7.0
de CoreDNS, mais il est recommandé d'effectuer cette étape même en cas de mise à jour vers une version antérieure.-
Vérifiez si votre manifeste CoreDNS possède la ligne.
kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream
Si aucune sortie n'est renvoyée, votre manifeste ne dispose pas de la ligne et vous pouvez passer à l'étape suivante pour mettre à jour CoreDNS. Si la sortie est renvoyée, vous devez supprimer la ligne.
-
Modifiez la
ConfigMap
en utilisant la commande suivante, en supprimant la ligne dans le fichier contenant le motupstream
. Ne modifiez rien d'autre dans le fichier. Une fois la ligne supprimée, enregistrez les modifications.kubectl edit configmap coredns -n kube-system -o yaml
-
-
Récupérez la version de votre image CoreDNS actuelle :
kubectl describe deployment coredns -n kube-system | grep Image
L'exemple qui suit illustre un résultat.
602401143452
.dkr.ecr.region-code
.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
-
Si vous effectuez une mise à jour vers de CoreDNS vers la version
1.8.3
ou une version ultérieure, vous devez ajouter l'autorisationendpointslices
ausystem:coredns
Kubernetesclusterrole
.kubectl edit clusterrole system:coredns -n kube-system
Ajoutez les lignes suivantes sous les lignes d'autorisation existantes dans la section
rules
du fichier.[...]
- apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch
[...] -
Mettez à jour le module complémentaire CoreDNS en remplaçant
et602401143452
par les valeurs obtenues à l'étape précédente. Remplacezregion-code
par la version de CoreDNS répertoriée dans le tableau des dernières versions pour votre version de Kubernetes.v1.11.1-eksbuild.9
kubectl set image deployment.apps/coredns -n kube-system coredns=
602401143452
.dkr.ecr.region-code
.amazonaws.com/eks/coredns:v1.11.1-eksbuild.9
L'exemple qui suit illustre un résultat.
deployment.apps/coredns image updated
-
Vérifiez à nouveau la version d'image de conteneur pour confirmer qu'elle a été mise à jour vers la version que vous avez spécifiée à l'étape précédente.
kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
L'exemple qui suit illustre un résultat.
v1.11.1-eksbuild.9