Configuration du fournisseur DNS de cluster
Un nom DNS (Domain Name System) est affecté à chaque service dans votre cluster IBM Cloud® Kubernetes Service et est enregistré par le fournisseur DNS de cluster pour résoudre les demandes DNS. Pour plus d’informations sur le DNS pour les services et les pods, consultez la documentation Kubernetes.
Le fournisseur DNS du cluster est CoreDNS, un serveur DNS polyvalent et de référence qui offre une intégration rétrocompatible, mais extensible, avec Kubernetes. Etant donné que
CoreDNS est un simple fichier exécutable et un processus unique, il a moins de dépendances et de pièces mobiles susceptibles de présenter des problèmes que les précédents fournisseurs DSN de cluster. Le projet est également écrit dans le même
langage que le projet Kubernetes, Go, ce qui contribue à protéger la mémoire. Enfin, CoreDNS prend en charge des cas d'utilisation plus flexibles que les autres fournisseurs de DNS en cluster, car vous pouvez créer des entrées DNS
personnalisées, telles que les configurations courantes décrites dans la documentation CoreDNS.
- CoreDNS et modifications de la configuration NodeLocal du cache DNS dans la version 1.34 et les versions ultérieures
- Le délai de mise en cache DNS par défaut dans les configurations DNS NodeLocal et CoreDNS a été augmenté de 30 à 120 secondes. Cette modification s'applique aux ConfigMap paramètres de mise en cache DNS. Certains utilisateurs atteignaient les limites de trafic de pDNS (ou UDP ) en raison des fréquentes recherches DNS causées par des durées de cache courtes. Un intervalle de mise en cache de 30 secondes est rarement nécessaire, sauf pour les enregistrements DNS qui changent très fréquemment, par exemple les points de contrôle d'état. Pour la plupart des charges de travail, un cache par défaut de 120 secondes offre de meilleures performances et réduit le trafic DNS inutile. Les utilisateurs qui ont besoin de temps de cache plus courts pour des cas d'utilisation spécifiques peuvent remplacer ce paramètre.
Mise à l'échelle automatique du fournisseur DNS de cluster
Par défaut, CoreDNS comprend un déploiement pour la mise à l'échelle automatique des pods CoreDNS en réponse au nombre de noeuds worker et de coeurs présents dans le cluster. Vous pouvez affiner les paramètres du programme de mise à l'échelle automatique de CoreDNS en modifiant l'élément configmap correspondant à la mise à l'échelle automatique de CoreDNS. Par exemple, si vos applications utilisent beaucoup le fournisseur DNS de cluster, vous devrez peut-être augmenter le nombre minimal de pods CoreDNS pour prendre en charge ces applications. Pour plus d'informations, consultez la documentation d' Kubernetes.
Avant de commencer : Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
-
Vérifiez que le déploiement du programme de mise à l'échelle automatique de CoreDNS est disponible. Dans votre sortie CLI, vérifiez que la colonne AVAILABLE contient la valeur 1 (un déploiement est disponible).
kubectl get deployment -n kube-system coredns-autoscalerExemple de sortie
NAME READY UP-TO-DATE AVAILABLE AGE coredns-autoscaler 1/1 1 1 69d -
Editez les paramètres par défaut du programme de mise à l'échelle automatique de CoreDNS. Recherchez la zone
data.linear, qui correspond par défaut à un pod CoreDNS par 16 noeuds worker ou 256 coeurs, avec un minimum de deux pods CoreDNS, quelle que soit la taille du cluster (preventSinglePointFailure: true). Pour plus d'informations, voir la documentation Kubernetes.kubectl edit configmap -n kube-system coredns-autoscalerExemple de sortie
apiVersion: v1 data: linear: '{"coresPerReplica":256,"nodesPerReplica":16,"preventSinglePointFailure":true}' kind: ConfigMap metadata: ...
Personnalisation du fournisseur DNS de cluster
Vous pouvez personnaliser CoreDNS en éditant la mappe de configuration de CoreDNS. Par exemple, vous souhaiterez peut-être configurer des domaines de module de remplacement et des serveurs DNS en amont pour résoudre les services qui pointent vers des hôtes externes. De plus, vous pouvez configurer plusieurs fichiers Corefiles dans l' CoreDNS ConfigMap. Pour plus d'informations, consultez la documentation d' Kubernetes.
Le cache DNS NodeLocal repose sur CoreDNS pour gérer le cache de la résolution DNS. Conservez en l'état les configurations applicables du cache DNS NodeLocal et de CoreDNS, comme les domaines de module de remplacement,
pour garantir la cohérence de la résolution DNS.
Avant de commencer : Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
-
Vérifiez que le déploiement de CoreDNS est disponible. Dans votre sortie CLI, vérifiez que la colonne AVAILABLE contient la valeur 1 (un déploiement est disponible).
kubectl get deployment -n kube-system corednsExemple de sortie
NAME READY UP-TO-DATE AVAILABLE AGE coredns 3/3 3 3 69d -
Editez les paramètres par défaut pour la mappe de configuration de CoreDNS. Utilisez un fichier Corefile dans la section
datade la mappe de configuration pour personnaliser des domaines de module de remplacement et des serveurs DNS en amont. Pour plus d'informations, consultez la documentation d' Kubernetes.Le plug-in CoreDNS
proxyest obsolète et remplacé par le plug-inforward. Si vous mettez à jour la mappe de configuration (configmap) de CoreDNS, veillez à remplacer toutes les instances deproxyparforward.kubectl edit configmap -n kube-system corednsExemple de sortie pour CoreDNS
apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube-system data: Corefile: | import <MyCorefile> .:53 { errors health { lameduck 10s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa ttl 30 } prometheus :9153 forward . /etc/resolv.conf { max_concurrent 1000 } cache 30 { disable success cluster.local disable denial cluster.local } loop reload loadbalance } <MyCorefile>: | abc.com:53 { errors cache 30 loop forward . 1.2.3.4 } -
Facultatif : ajoutez des fichiers Corefile personnalisés à la mappe de configuration de CoreDNS. Dans l'exemple suivant, incluez le dans
import <MyCoreFile>la sectiondata.Corefileet complétez la sectiondata.<MyCorefile>avec vos informations Corefile personnalisées. Pour plus d'informations, consultez la documentation relative à l'importation de fichiers Corefile.Le plug-in CoreDNS
proxyest obsolète et remplacé par le plug-inforward. Si vous mettez à jour la mappe de configuration (configmap) de CoreDNS, veillez à remplacer toutes les instances deproxyparforward.kubectl edit configmap -n kube-system corednsExemple de sortie de fichier Corefile personnalisé
apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube-system data: Corefile: | import <MyCorefile> .:53 { errors health kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream 172.16.0.1 fallthrough in-addr.arpa ip6.arpa } prometheus :9153 forward . /etc/resolv.conf { max_concurrent 1000 } cache 30 { disable success cluster.local disable denial cluster.local } loop reload loadbalance } <MyCorefile>: | abc.com:53 { errors cache 30 loop forward . 1.2.3.4 } -
Au bout de quelques minutes, les pods CoreDNS récupèrent les modifications de mappe de configuration.
Configuration du cache DNS NodeLocal
Configurez l'agent de mise en cache DNS NodeLocal sur certains noeuds worker afin d'améliorer les performances et la disponibilité DNS de cluster dans votre cluster IBM Cloud Kubernetes Service. Pour plus d'informations, consultez
la documentation d' Kubernetes.
Par défaut, les requêtes DNS du cluster pour les pods utilisant une politique DNSClusterFirst sont envoyées au service DNS du cluster. Si vous activez la mise en cache DNS NodeLocal sur un noeud worker, les demandes DNS de cluster pour les pods qui se trouvent sur le noeud worker sont envoyées au cache DNS local, qui est
à l'écoute sur l'adresse IP de lien local 169.254.20.10. Le cache DNS écoute également l'adresse IP de cluster du service kube-dns dans l'espace de noms kube-system.
N'ajoutez pas le libellé de cache DNS lorsque vous utilisez déjà zone-aware DNS dans votre cluster. De plus, le cache DNS NodeLocal repose sur CoreDNS pour gérer le cache de la résolution DNS. Conservez
en l'état les configurations applicables du cache DNS NodeLocal et de CoreDNS, comme les domaines de module de remplacement, pour garantir la cohérence de la résolution DNS.
- 1.34 s de version et versions antérieures
NodeLocalLe cache DNS est facultatif. Vous devez l'activer manuellement en ajoutant l'étiquetteibm-cloud.kubernetes.io/node-local-dns-enabled=trueaux nœuds de travail.- 1.35 s de version et versions ultérieures
NodeLocalLe cache DNS est activé par défaut sur tous les nœuds de travail. Les clusters qui sont mis à niveau vers la version 1.35 ont NodeLocal DNS activé automatiquement à moins que vous ne choisissiez de ne pas le faire. Pour empêcher l'activation automatique, appliquez l'étiquetteibm-cloud.kubernetes.io/node-local-dns-disabled=trueà vos nœuds de travail avant de procéder à la mise à niveau.
Pour plus d'informations sur les changements de version 1.35, voir 1.35 information sur la version.
Activation du cache DNS NodeLocal
Activez le cache DNS NodeLocal pour un ou plusieurs des noeuds worker figurant dans votre cluster Kubernetes.
- 1.35 s de version et versions ultérieures
- NodeLocal Le DNS est activé par défaut sur tous les nœuds de travail. Suivez ces étapes uniquement si vous avez désactivé NodeLocal DNS ou si vous ajoutez de nouveaux nœuds de travail avec NodeLocal DNS désactivé.
- 1.34 s de version et versions antérieures
- NodeLocal Le DNS est opt-in. Suivez les étapes suivantes pour l'activer sur vos nœuds de travail.
Les étapes suivantes mettent à jour les pods DNS qui s'exécutent sur des noeuds worker particuliers. Vous pouvez également affecter un libellé au pool de noeuds worker pour que de futurs noeuds héritent de ce libellé.
Avant de commencer, mettez à jour toutes les politiques de réseau de sortie DNS concernées par cette fonctionnalité, telles que celles qui s'appuient sur des sélecteurs de pod ou d'espace de noms pour la sortie DNS.
kubectl get networkpolicy --all-namespaces -o yaml
-
Si vous avez personnalisé les domaines de module de remplacement et les serveurs DNS en amont pour CoreDNS, vous devez également personnaliser le cache DNS
NodeLocalavec ces domaines de module de remplacement et ces serveurs DNS en amont. -
Répertoriez les noeuds présents dans votre cluster. Les pods d'agent de mise en cache DNS
NodeLocalfont partie d'un ensemble de démons qui s'exécutent sur chaque noeud.kubectl get nodes -
Ajoutez le libellé
ibm-cloud.kubernetes.io/node-local-dns-enabled=trueau noeud worker. Le libellé démarre le pod d'agent de mise en cache DNS sur le noeud worker.- Ajoutez le libellé à un ou plusieurs noeuds worker.
-
Pour libeller tous les noeuds worker du cluster : Ajoutez le libellé à tous les pools de noeuds worker existants.
-
Pour libeller un noeud worker en particulier :
kubectl label node <node_name> --overwrite "ibm-cloud.kubernetes.io/node-local-dns-enabled=true"
-
- Vérifiez que le noeud comporte le libellé en vous assurant que la zone
NODE-LOCAL-DNS-ENABLEDa pour valeurtrue.
kubectl get nodes -L "ibm-cloud.kubernetes.io/node-local-dns-enabled" ``` Exemple de sortie ```sh {: screen} NAME STATUS ROLES AGE VERSION NODE-LOCAL-DNS-ENABLED 10.xxx.xx.xxx Ready,SchedulingDisabled <none> 28h v1.35+IKS true ``` 3. Assurez-vous que le pod d'agent de mise en cache DNS s'exécute sur le noeud worker. ```sh {: pre} kubectl get pods -n kube-system -l k8s-app=node-local-dns -o wide ``` Exemple de sortie ```sh {: screen} NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES node-local-dns-pvnjn 1/1 Running 0 1m 10.xxx.xx.xxx 10.xxx.xx.xxx <none> <none> ``` - Ajoutez le libellé à un ou plusieurs noeuds worker.
-
Répétez les étapes précédentes pour chaque noeud worker afin d'activer la mise en cache DNS.
Désactivation du cache DNS NodeLocal
Vous pouvez désactiver le cache DNS NodeLocal pour un ou plusieurs noeuds worker.
- 1.35 s de version et versions ultérieures
-
Pour désactiver NodeLocal DNS, qui est activé par défaut, ajoutez l'étiquette
ibm-cloud.kubernetes.io/node-local-dns-disabled=trueà vos nœuds de travail.kubectl label node --all --overwrite "ibm-cloud.kubernetes.io/node-local-dns-disabled=true" - 1.34 s de version et versions antérieures
-
Pour désactiver NodeLocal DNS, supprimez l'étiquette
ibm-cloud.kubernetes.io/node-local-dns-enabledde vos nœuds de travail.
-
Retirez le libellé
ibm-cloud.kubernetes.io/node-local-dns-enableddu noeud worker. Cette action met fin au pod de l'agent de mise en cache DNS sur le noeud worker.Pour retirer le libellé de tous les noeuds worker du cluster, exécutez la commande suivante :
kubectl label node --all --overwrite "ibm-cloud.kubernetes.io/node-local-dns-enabled-"Pour retirer le libellé d'un noeud worker en particulier, exécutez la commande suivante :
kubectl label node <node_name> "ibm-cloud.kubernetes.io/node-local-dns-enabled-"- Vérifiez que le libellé est retiré en vous assurant que la zone
NODE-LOCAL-DNS-ENABLEDest vide.
kubectl get nodes -L "ibm-cloud.kubernetes.io/node-local-dns-enabled" ``` Exemple de sortie ```sh {: screen} NAME STATUS ROLES AGE VERSION NODE-LOCAL-DNS-ENABLED 10.xxx.xx.xxx Ready,SchedulingDisabled <none> 28h v1.35+IKS ``` 2. Vérifiez que le pod ne s'exécute plus sur le noeud sur lequel le cache DNS est désactivé. La sortie ne contient aucun pod. ```sh {: pre} kubectl get pods -n kube-system -l k8s-app=node-local-dns -o wide ``` Exemple de sortie ```sh {: screen} No resources found. ``` - Vérifiez que le libellé est retiré en vous assurant que la zone
-
Répétez les étapes précédentes pour chaque noeud worker afin de désactiver la mise en cache DNS.
Personnalisation du cache DNS NodeLocal
Vous pouvez personnaliser le cache DNS NodeLocal en éditant l'une des deux mappes de configuration.
node-local-dnsConfigMap: personnalisez la configuration du cache DNSNodeLocal.node-local-dns-configConfigMap: étendez la configuration du cache DNSNodeLocalen personnalisant les domaines stub ou les serveurs DNS en amont afin de résoudre les services pointant vers des hôtes externes.
Le cache DNS NodeLocal repose sur CoreDNS pour gérer le cache de la résolution DNS. Conservez en l'état les configurations applicables du cache DNS NodeLocal et de CoreDNS, comme les domaines de module de remplacement,
pour garantir la cohérence de la résolution DNS.
Edition de la mappe de configuration node-local-dns pour les mises à jour de configuration générales
Editez la mappe de configuration node-local-dns pour personnaliser la configuration du cache DNS NodeLocal.
Avant de commencer : Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
-
Vérifiez que le démon du cache DNS
NodeLocalest disponible.kubectl get ds -n kube-system node-local-dnsExemple de sortie
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE node-local-dns 4 4 4 4 4 ibm-cloud.kubernetes.io/node-local-dns-enabled=true 82d -
Editez les paramètres par défaut ou ajouter des fichiers Corefile personnalisés à la mappe de configuration du cache DNS
NodeLocal. Chaque fichier Corefile que vous importez doit utiliser le chemincoredns. Pour plus d’informations, consultez la documentation d’ Kubernetes.Seul un ensemble limité de plug-ins est pris en charge pour le cache DNS
NodeLocal.kubectl edit configmap -n kube-system node-local-dnsExemple de sortie
apiVersion: v1 kind: ConfigMap metadata: name: node-local-dns namespace: kube-system data: Corefile: | # Add your NodeLocal DNS customizations as import files under ./coredns directory. # Refer to /docs/containers?topic=containers-cluster_dns for details. import ./coredns/<MyCorefile> cluster.local:53 abc.com:53 { errors cache { success 9984 30 denial 9984 5 } reload loop bind 169.254.20.10 172.21.0.10 forward . __PILLAR__CLUSTER__DNS__ { force_tcp } prometheus :9253 health 169.254.20.10:8080 } in-addr.arpa:53 { errors cache 30 reload loop bind 169.254.20.10 172.21.0.10 forward . __PILLAR__CLUSTER__DNS__ { force_tcp } prometheus :9253 } ip6.arpa:53 { errors cache 30 reload loop bind 169.254.20.10 172.21.0.10 forward . __PILLAR__CLUSTER__DNS__ { force_tcp } prometheus :9253 } .:53 { errors cache 30 { disable success cluster.local disable denial cluster.local } reload loop bind 169.254.20.10 172.21.0.10 forward . __PILLAR__UPSTREAM__SERVERS__ { force_tcp } prometheus :9253 } <MyCorefile>: | # Add custom corefile content ... -
Au bout de quelques minutes, les pods de cache DNS
NodeLocalrécupèrent les modifications de mappe de configuration.
Edition de la mappe de configuration node-local-dns-config pour une extension à l'aide de domaines de module de remplacement ou de serveurs en amont
Editez la mappe de configuration node-local-dns-config pour étendre la configuration du cache DNS NodeLocal, par exemple en personnalisant les domaines de module de remplacement ou les serveurs DNS en amont. Pour
plus d’informations, consultez la documentation d’ Kubernetes.
Avant de commencer : Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
-
Vérifiez que le démon du cache DNS
NodeLocalest disponible.kubectl get ds -n kube-system node-local-dnsExemple de sortie
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE node-local-dns 4 4 4 4 4 ibm-cloud.kubernetes.io/node-local-dns-enabled=true 82d -
Confirmez que le cache DNS
NodeLocalcomporte une mappe de configuration.- Déterminez si la mappe de configuration du cache DNS
NodeLocalexiste.
kubectl get cm -n kube-system node-local-dns-config ``` Exemple de sortie s'il n'existe aucune mappe de configuration ```sh {: screen} Error from server (NotFound): ConfigMaps "node-local-dns-config" not found ``` 2. Si la mappe de configuration n'existe pas, créez une mappe de configuration de cache DNS `NodeLocal`. ```sh {: pre} kubectl create cm -n kube-system node-local-dns-config ``` Exemple de sortie ```sh {: screen} configmap/node-local-dns-config created ``` - Déterminez si la mappe de configuration du cache DNS
-
Editez la mappe de configuration du cache DNS
NodeLocal. La mappe de configuration utilise la syntaxe KubeDNS pour personnaliser les domaines de module de remplacement et les serveurs DNS en amont. Pour plus d'informations, consultez la documentation d' Kubernetes.kubectl edit cm -n kube-system node-local-dns-configExemple de sortie
apiVersion: v1 kind: ConfigMap metadata: name: node-local-dns-config namespace: kube-system data: stubDomains: | {"abc.com" : ["1.2.3.4"]} -
Au bout de quelques minutes, les pods de cache DNS
NodeLocalrécupèrent les modifications de mappe de configuration.
Configuration du service DNS reconnaissant les zones
Configurez le service DNS reconnaissant les zones pour améliorer les performances et la disponibilité DNS de cluster dans votre cluster IBM Cloud Kubernetes Service multizone.
Cette configuration étend le cache DNS NodeLocal pour privilégier le passage du trafic DNS de cluster au sein de la même zone.
Par défaut, votre cluster est configuré avec des ressources de service DNS à l'échelle du cluster et non avec des ressources de service DNS reconnaissant les zones. Même après que vous avez configuré le service DNS reconnaissant les zones, les ressources de service DNS à l'échelle du cluster restent en cours d'exécution en tant que service DNS de sauvegarde. Les ressources de service DNS reconnaissant les zones sont distinctes des ressources de service DNS à l'échelle du cluster, et le changement du service DNS reconnaissant les zones n'a aucun impact sur le service DNS à l'échelle du cluster.
N'utilisez pas le libellé de cache DNS lorsque vous utilisez le service DNS reconnaissant les zones dans votre cluster.
Configuration du service DNS reconnaissant les zones
Procédez comme suit pour configurer un serveur de noms de domaine prenant en compte les zones dans votre cluster multizone.
-
Mettez à jour toutes les politiques de réseau de sortie DNS concernées par le DNS sensible à la zone, telles que les politiques qui s'appuient sur des sélecteurs de pod ou d'espace de noms pour la sortie DNS. Exécutez la commande suivante pour obtenir la liste de vos politiques réseau.
kubectl get networkpolicy --all-namespaces -o yaml -
Libellez
corednsConfigMap dans l'espace de nomkube-systemavecibm-cloud.kubernetes.io/deploy-zone-aware-dns=true.kubectl label cm -n kube-system coredns --overwrite "ibm-cloud.kubernetes.io/deploy-zone-aware-dns=true" -
Actualisez le maître cluster pour déployer les ressources DNS sensibles aux zones.
ibmcloud ks cluster master refresh -c CLUSTER_NAME_OR_ID -
Surveillez l'achèvement de l'opération d'actualisation en examinant la zone Santé du maître dans les détails du cluster.
ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID -
Si vous avez personnalisé les domaines de module de remplacement et les serveurs DNS en amont pour CoreDNS, vous devez également personnaliser le cache DNS
NodeLocalavec ces domaines de module de remplacement et ces serveurs DNS en amont. -
Définissez une variable d'environnement pour les zones du cluster.
ZONES=$(kubectl get nodes --no-headers --ignore-not-found=true -o jsonpath='{range .items[*]}{.metadata.labels.topology\.kubernetes\.io/zone}{"\n"}{end}' | uniq) -
Démarrez les pods de CoreDNS et du programme de mise à l'échelle automatique de CoreDNS dans toutes les zones.
for ZONE in ${ZONES}; do kubectl scale deployment -n kube-system "coredns-autoscaler-${ZONE}" --replicas=1 done -
Vérifiez que les pods de CoreDNS et du programme de mise à l'échelle automatique de CoreDNS sont en cours d'exécution dans toutes les zones.
for ZONE in ${ZONES}; do kubectl get pods -n kube-system -l "k8s-app=coredns-autoscaler-${ZONE}" -o wide kubectl get pods -n kube-system -l "k8s-app=coredns-${ZONE}" -o wide done -
Démarrez les pods du cache DNS
NodeLocalsur tous les noeuds worker.kubectl label nodes --all --overwrite "ibm-cloud.kubernetes.io/zone-aware-dns-enabled=true" -
Vérifiez que les pods du cache DNS
NodeLocalsont en cours d'exécution sur tous les noeuds worker.for ZONE in ${ZONES}; do kubectl get pods -n kube-system -l "k8s-app=node-local-dns-${ZONE}" -o wide done -
Libellez vos pools de noeuds worker de sorte que les futurs noeuds worker héritent du libellé
ibm-cloud.kubernetes.io/zone-aware-dns-enabled=true.
Désactivation et suppression du service DNS reconnaissant les zones
Pour retirer le service DNS reconnaissant les zones, vous devez d'abord le désactiver dans chaque zone de votre cluster multizone. Ensuite, vous pouvez supprimer les ressources du service DNS reconnaissant les zones.
-
Supprimer le.
ibm-cloud.kubernetes.io/zone-aware-dns-enabled=trueétiquette de vos pools de travailleurs -
Définissez une variable d'environnement pour les zones du cluster.
ZONES=$(kubectl get nodes --no-headers --ignore-not-found=true -o jsonpath='{range .items[*]}{.metadata.labels.topology\.kubernetes\.io/zone}{"\n"}{end}' | uniq) -
Arrêtez les pods du cache DNS
NodeLocalsur tous les noeuds worker.kubectl label nodes --all --overwrite "ibm-cloud.kubernetes.io/zone-aware-dns-enabled-" -
Arrêtez les pods du programme de mise à l'échelle automatique de CoreDNS dans toutes les zones.
for ZONE in ${ZONES}; do kubectl scale deployment -n kube-system "coredns-autoscaler-${ZONE}" --replicas=0 done -
Vérifiez que les pods du programme de mise à l'échelle automatique de CoreDNS ne sont plus en cours d'exécution dans toutes les zones.
for ZONE in ${ZONES}; do kubectl get pods -n kube-system -l "k8s-app=coredns-autoscaler-${ZONE}" done -
Arrêtez les pods de CoreDNS dans toutes les zones.
for ZONE in ${ZONES}; do kubectl scale deployment -n kube-system "coredns-${ZONE}" --replicas=0 done -
Retirez le libellé
ibm-cloud.kubernetes.io/deploy-zone-aware-dns=truede la mappe de configurationcorednsdans l'espace de nomskube-system.kubectl label cm -n kube-system coredns --overwrite "ibm-cloud.kubernetes.io/deploy-zone-aware-dns-" -
Actualisez le maître cluster sur les ressources de service DNS reconnaissant les zones qui sont supprimées.
ibmcloud ks cluster master refresh --cluster CLUSTER_NAME_OR_ID -
Surveillez l'achèvement de l'opération d'actualisation en examinant la zone Santé du maître dans les détails du cluster.
ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID