Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure Kubernetes Service (AKS) utilise CoreDNS pour la gestion et la résolution DNS du cluster avec tous les clusters 1.12.x et versions ultérieures. AKS étant un service managé, vous ne pouvez pas modifier la configuration principale pour CoreDNS (fichier CoreFile). Au lieu de cela, vous utilisez un fichier ConfigMap Kubernetes pour remplacer les paramètres par défaut. Pour afficher les ConfigMaps CoreDNS AKS par défaut, utilisez la commande kubectl get configmaps --namespace=kube-system coredns --output yaml.
Cet article explique comment utiliser ConfigMaps pour les options de personnalisation CoreDNS de base dans Azure Kubernetes Service (AKS).
Remarque
Auparavant, AKS était utilisé kube-dns pour la gestion et la résolution DNS du cluster, mais il est désormais déconseillé.
kube-dns proposait différentes options de personnalisation via une carte de configuration Kubernetes. CoreDNS n’est pas rétrocompatible avec kube-dns. Vous devez mettre à jour toutes les personnalisations précédentes pour utiliser CoreDNS.
Prerequisites
- Cet article suppose que vous avez un cluster AKS existant. Si vous avez besoin d’un cluster AKS, vous pouvez en créer un en utilisant Azure CLI, Azure PowerShell ou le Portail Azure.
- Vérifiez la version de CoreDNS que vous exécutez. Les valeurs de configuration peuvent changer entre les versions.
Prise en charge des plug-ins
Tous les plug-ins CoreDNS intégrés sont pris en charge. Aucun module complémentaire/plug-in tiers n’est pris en charge.
Important
Lorsque vous créez des configurations comme celles de cet article, les noms que vous spécifiez dans la data section doivent se terminer .server par ou .override. La convention d’affectation de noms est définie dans la ConfigMap CoreDNS AKS par défaut, que vous pouvez voir à l’aide de la commande kubectl get configmaps --namespace=kube-system coredns --output yaml.
Configurer les réécritures de noms DNS
Créez un fichier nommé
corednsms.yamlet collez-le dans l’exemple de configuration suivant. Veillez à remplacer<domain to be rewritten>par votre propre nom de domaine complet (FQDN).apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: test.server: | <domain to be rewritten>.com:53 { log errors rewrite stop { name regex (.*)\.<domain to be rewritten>\.com {1}.default.svc.cluster.local answer name (.*)\.default\.svc\.cluster\.local {1}.<domain to be rewritten>.com } forward . /etc/resolv.conf # You can redirect this to a specific DNS server such as 10.0.0.10, but that server must be able to resolve the rewritten domain name }Important
Si vous redirigez vers un serveur DNS, tel que l’adresse IP du service CoreDNS, ce serveur DNS doit être en mesure de résoudre le nom de domaine réécrit.
Créez la ConfigMap à l’aide de la commande
kubectl apply configmapet spécifiez le nom de votre manifeste YAML.kubectl apply -f corednsms.yamlVérifiez que les personnalisations ont été appliquées à l’aide de la
kubectl get configmapscommande.kubectl get configmaps --namespace=kube-system coredns-custom -o yamlEffectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la
kubectl rollout restartcommande.kubectl --namespace kube-system rollout restart deployment coredns
Spécifier un serveur de transfert pour votre trafic réseau
Créez un fichier nommé
corednsms.yamlet collez-le dans l’exemple de configuration suivant. Veillez à remplacerforwardpar votre propre nom et<domain to be rewritten>par vos propres valeurs.apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: test.server: | # You can select any name here, but it must end with the .server file extension <domain to be rewritten>.com:53 { forward foo.com 1.1.1.1 }Créez configMap à l’aide de la
kubectl apply configmapcommande.kubectl apply -f corednsms.yamlEffectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la
kubectl rollout restartcommande.kubectl --namespace kube-system rollout restart deployment coredns
Utiliser des domaines personnalisés
Vous pouvez configurer des domaines personnalisés qui ne peuvent être résolus qu’en interne. Par exemple, vous souhaiterez peut-être résoudre le domaine personnalisé puglife.local, qui n’est pas un domaine de niveau supérieur valide. Sans un ConfigMap de domaine personnalisé, le cluster AKS ne peut pas résoudre l’adresse.
Créez un fichier nommé
corednsms.yamlet collez-le dans l’exemple de configuration suivant. Veillez à mettre à jour le domaine personnalisé et l’adresse IP avec vos propres valeurs.apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: puglife.server: | # You can select any name here, but it must end with the .server file extension puglife.local:53 { errors cache 30 forward . 192.11.0.1 # This is my test/dev DNS server }Créez configMap à l’aide de la
kubectl apply configmapcommande.kubectl apply -f corednsms.yamlEffectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la
kubectl rollout restartcommande.kubectl --namespace kube-system rollout restart deployment coredns
Configurer des domaines stub
Créez un fichier nommé
corednsms.yamlet collez l’exemple de configuration suivant. Veillez à mettre à jour les domaines et adresses IP personnalisés avec vos propres valeurs.apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: test.server: | # You can select any name here, but it must end with the .server file extension abc.com:53 { errors cache 30 forward . 1.2.3.4 } my.cluster.local:53 { errors cache 30 forward . 2.3.4.5 }Créez le ConfigMap à l’aide de la
kubectl apply configmapcommande et spécifiez.kubectl apply -f corednsms.yamlEffectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la
kubectl rollout restartcommande.kubectl --namespace kube-system rollout restart deployment coredns
Ajouter des mappages personnalisés d'hôte à IP
Créez un fichier nommé
corednsms.yamlet collez l’exemple de configuration suivant. Veillez à mettre à jour les adresses IP et les noms d’hôte avec vos propres valeurs.apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom # This is the name of the ConfigMap you can overwrite with your changes namespace: kube-system data: test.override: | # You can select any name here, but it must end with the .override file extension hosts { 10.0.0.1 example1.org 10.0.0.2 example2.org 10.0.0.3 example3.org fallthrough }Créez configMap à l’aide de la
kubectl apply configmapcommande.kubectl apply -f corednsms.yamlEffectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la
kubectl rollout restartcommande.kubectl --namespace kube-system rollout restart deployment coredns
Étapes suivantes
- Pour résoudre les problèmes de CoreDNS, consultez Résoudre les problèmes liés à CoreDNS sur Azure Kubernetes Service (AKS).
- Pour en savoir plus sur le comportement de mise à l'échelle automatique de CoreDNS, consultez Autoscaling CoreDNS dans Azure Kubernetes Service (AKS).