Cluster-DNS-Provider konfigurieren
Jedem Service in Ihrem IBM Cloud® Kubernetes Service-Cluster wird ein DNS-Name (Domain Name System) zugeordnet, den der Cluster-DNS-Provider registriert, um DNS-Anforderungen aufzulösen. Weitere Informationen zu DNS für Dienste und Pods finden Sie in der Dokumentation Kubernetes.
Der Cluster-DNS-Anbieter ist CoreDNS, ein allgemeiner, autoritativer DNS-Server, der eine rückwärtskompatible, aber erweiterbare Integration mit Kubernetes bietet. Da CoreDNS eine
einzeln ausführbare Funktion und ein einzelner Prozess ist, weist CoreDNS weniger Abhängigkeiten und bewegliche Teile auf als andere Cluster-DNS-Provider und ist damit weniger fehleranfällig. Das Projekt wurde außerdem in derselben Sprache,
Go
, wie das Kubernetes-Projekt geschrieben, was den Schutz des Speichers erleichtert. Schließlich unterstützt CoreDNS flexiblere Anwendungsfälle als andere Cluster-DNS-Anbieter, da Sie benutzerdefinierte DNS-Einträge erstellen können,
wie z. B. die üblichen Konfigurationen in den CoreDNS-Dokumenten.
Automatische Skalierung für den Cluster-DNS-Provider
CoreDNS enthält standardmäßig eine Bereitstellung zur automatischen Skalierung der CoreDNS-Pods als Reaktion auf die Anzahl der Workerknoten und Cores im Cluster. Sie können die Parameter für die automatische CoreDNS-Skalierungsfunktion (DNS-Autoscaler) optimieren, indem Sie die Konfigurationszuordnung (Configmap) für die automatische CoreDNS-Skalierung bearbeiten. Wenn Ihre Apps den Cluster-DNS-Provider zum Beispiel intensiv nutzen, müssen Sie möglicherweise die Mindestanzahl der CoreDNS-Pods zur Unterstützung der App erhöhen. Weitere Informationen finden Sie in der Dokumentation Kubernetes.
Vorbereitende Schritte: Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
-
Überprüfen Sie, dass die Bereitstellung des CoreDNS-Autoscalers verfügbar ist. Stellen Sie in Ihrer CLI-Ausgabe sicher, dass eine Bereitstellung den Status AVAILABLE (verfügbar) hat.
kubectl get deployment -n kube-system coredns-autoscaler
Beispielausgabe
NAME READY UP-TO-DATE AVAILABLE AGE coredns-autoscaler 1/1 1 1 69d
-
Bearbeiten Sie die Standardeinstellungen für den CoreDNS-Autoscaler. Suchen Sie nach dem Feld
data.linear
, das standardmäßig einen CoreDNS-Pod pro 16 Workerknoten oder 256 Kerne enthält, mit mindestens zwei CoreDNS-Pods unabhängig von der Clustergröße (preventSinglePointFailure: true
). Weitere Informationen finden Sie in der Dokumentation zu Kubernetes.kubectl edit configmap -n kube-system coredns-autoscaler
Beispielausgabe
apiVersion: v1 data: linear: '{"coresPerReplica":256,"nodesPerReplica":16,"preventSinglePointFailure":true}' kind: ConfigMap metadata: ...
Cluster-DNS-Provider anpassen
CoreDNS kann durch entsprechende Bearbeitung der CoreDNS-Konfigurationszuordnung (Configmap) angepasst werden. Sie könnten zum Beispiel Stub-Domänen und vorgeordnete Namensserver (Upstream-Namensserver) zur Auflösung von Services konfigurieren, die auf externe Hosts verweisen. Zusätzlich können Sie mehrere Corefiles innerhalb der CoreDNS ConfigMap konfigurieren. Weitere Informationen finden Sie in der Dokumentation Kubernetes.
Das NodeLocal
-DNS-Caching stützt sich auf CoreDNS, um den Cache für DNS-Auflösungen zu verwalten. Halten Sie den entsprechenden NodeLocal
-DNS-Cache und die CoreDNS-Konfigurationen, wie z. B. Stubdomänen, für die Beibehaltung
der DNS-Auflösung konsistent.
Vorbereitende Schritte: Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
-
Überprüfen Sie, ob die CoreDNS-Bereitstellung verfügbar ist. Stellen Sie in Ihrer CLI-Ausgabe sicher, dass eine Bereitstellung den Status AVAILABLE (verfügbar) hat.
kubectl get deployment -n kube-system coredns
Beispielausgabe
NAME READY UP-TO-DATE AVAILABLE AGE coredns 3/3 3 3 69d
-
Bearbeiten Sie die Standardeinstellungen für die CoreDNS--Konfigurationszuordnung. Verwenden Sie eine Corefile im Abschnitt
data
der Konfigurationszuordnung, um Stub-Domänen und vorgeordnete Namensserver (Upstream-Namensserver) anzupassen. Weitere Informationen finden Sie in der Dokumentation Kubernetes.Das CoreDNS-Plug-in
proxy
wird nicht mehr verwendet und wird durch das Plug-inforward
ersetzt. Stellen Sie beim Aktualisieren der CoreDNS-Konfigurationszuordnung sicher, dass alle Instanzen vonproxy
durchforward
ersetzt werden.kubectl edit configmap -n kube-system coredns
CoreDNS-Beispielausgabe
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 }
-
Optional: Fügen Sie angepasste Corefiles zur CoreDNS-Konfigurationszuordnung hinzu. Im folgenden Beispiel fügen Sie
import <MyCoreFile>
in den Abschnittdata.Corefile
ein und ergänzen den Abschnittdata.<MyCorefile>
mit Ihren eigenen Corefile-Informationen. Weitere Informationen finden Sie in der Dokumentation zum Corefile-Import.Das CoreDNS-Plug-in
proxy
wird nicht mehr verwendet und wird durch das Plug-inforward
ersetzt. Stellen Sie beim Aktualisieren der CoreDNS-Konfigurationszuordnung sicher, dass alle Instanzen vonproxy
durchforward
ersetzt werden.kubectl edit configmap -n kube-system coredns
Beispielausgabe für angepasste Corefile
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 }
-
Nach einigen Minuten übernehmen die CoreDNS-Pods die in der Konfigurationszuordnung vorgenommenen Änderungen.
DNS-Cache 'NodeLocal' einrichten
Richten Sie den NodeLocal
-DNS-Caching-Agenten für ausgewählte Workerknoten ein, um eine verbesserte Cluster-DNS-Leistung und -Verfügbarkeit in Ihrem IBM Cloud Kubernetes Service-Cluster zu erzielen. Weitere Informationen finden
Sie in den Dokumenten von Kubernetes.
Standardmäßig werden Cluster-DNS-Anfragen für Pods, die eine ClusterFirst
DNS-Richtlinie verwenden,
an den Cluster-DNS-Dienst gesendet. Wenn Sie das DNS-Caching mit NodeLocal
auf einem Workerknoten aktivieren, werden die Cluster-DNS-Anforderungen für solche Pods, die sich auf dem Workerknoten befinden, stattdessen an den lokalen
DNS-Cache gesendet, der die 'link-local'-IP-Adresse 169.254.20.10 überwacht. Der DNS-Cache ist auch für die Cluster-IP des Service kube-dns
im Namensbereich kube-system
empfangsbereit.
Fügen Sie die DNS-Cache-Bezeichnung nicht hinzu, wenn Sie bereits zonenorientiertes DNS in Ihrem Cluster verwenden. Zudem stützt sich das NodeLocal
-DNS-Caching auf CoreDNS, um den Cache für DNS-Auflösungen
zu verwalten. Halten Sie den entsprechenden NodeLocal
-DNS-Cache und die CoreDNS-Konfigurationen, wie z. B. Stubdomänen, für die Beibehaltung der DNS-Auflösung konsistent.
Der NodeLocal
-DNS-Cache ist allgemein in Clustern verfügbar, die Kubernetes 1.18 oder höher ausführen; standardmäßig ist er jedoch inaktiviert.
NodeLocal-DNS-Cache aktivieren
Aktivieren Sie den NodeLocal
-DNS-Cache für einen oder mehrere Workerknoten in Ihrem Kubernetes-Cluster.
Mit den folgenden Schritten werden DNS-Pods aktualisiert, die auf bestimmten Workerknoten ausgeführt werden. Außerdem können Sie dem Worker-Pool eine Bezeichnung zuordnen, sodass später erstellte Knoten die Bezeichnung übernehmen.
Bevor Sie beginnen, aktualisieren Sie alle DNS-Egress-Netzwerkrichtlinien, die von dieser Funktion betroffen sind, z. B. Richtlinien, die auf Pod- oder Namespace-Selektoren für DNS-Egress angewiesen sind.
kubectl get networkpolicy --all-namespaces -o yaml
-
Wenn Sie Stubdomänen und vorgelagerte DNS-Server für CoreDNS angepasst haben, müssen Sie auch den
NodeLocal
-DNS-Cache anpassen, und zwar unter Angabe genau dieser Stubdomänen und vorgelagerten DNS-Server. -
Listen Sie die Knoten in Ihrem Cluster auf. Die Pods des
NodeLocal
-DNS-Caching-Agenten sind Teil einer Dämongruppe (DaemonSet), die auf jedem Knoten ausgeführt wird.kubectl get nodes
-
Fügen Sie die Bezeichnung
ibm-cloud.kubernetes.io/node-local-dns-enabled=true
zum Workerknoten hinzu. Die Bezeichnung startet den Pod des DNS-Caching-Agenten auf dem Workerknoten.-
Fügen Sie die Bezeichnung zu einem oder mehreren Workerknoten hinzu.
-
Gehen Sie wie folgt vor, um allen Workerknoten im Cluster eine Bezeichnung zuzuordnen: Fügen Sie die Bezeichnung allen vorhandenen Worker-Pools hinzu.
-
Gehen Sie wie folgt vor, um einem einzelnen Workerknoten eine Bezeichnung zuzuordnen:
kubectl label node <node_name> --overwrite "ibm-cloud.kubernetes.io/node-local-dns-enabled=true"
-
-
Überprüfen Sie, ob der Knoten mit der Bezeichnung versehen wurde, indem Sie prüfen, ob für das Feld
NODE-LOCAL-DNS-ENABLED
der Werttrue
festgelegt ist.kubectl get nodes -L "ibm-cloud.kubernetes.io/node-local-dns-enabled"
Beispielausgabe
NAME STATUS ROLES AGE VERSION NODE-LOCAL-DNS-ENABLED 10.xxx.xx.xxx Ready,SchedulingDisabled <none> 28h v1.32+IKS true
-
Stellen Sie sicher, dass der Pod des DNS-Caching-Agenten auf dem Workerknoten ausgeführt wird.
kubectl get pods -n kube-system -l k8s-app=node-local-dns -o wide
Beispielausgabe
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>
-
-
Wiederholen Sie die vorherigen Schritte für jeden Workerknoten, um das DNS-Caching zu aktivieren.
NodeLocal-DNS-Cache inaktivieren
Sie können den NodeLocal
-DNS-Cache für einen oder mehrere Workerknoten inaktivieren.
-
Entfernen Sie die Bezeichnung
ibm-cloud.kubernetes.io/node-local-dns-enabled
aus dem Workerknoten. Durch diese Aktion wird der Pod des DNS-Caching-Agenten auf dem Workerknoten beendet.Führen Sie den folgenden Befehl aus, um die Bezeichnung bei allen Workerknoten im Cluster zu entfernen.
kubectl label node --all --overwrite "ibm-cloud.kubernetes.io/node-local-dns-enabled-"
Führen Sie den folgenden Befehl aus, um die Bezeichnung bei einem einzelnen Workerknoten zu entfernen.
kubectl label node <node_name> "ibm-cloud.kubernetes.io/node-local-dns-enabled-"
-
Überprüfen Sie, dass die Bezeichnung entfernt wurde, indem Sie prüfen, ob das Feld
NODE-LOCAL-DNS-ENABLED
leer ist.kubectl get nodes -L "ibm-cloud.kubernetes.io/node-local-dns-enabled"
Beispielausgabe
NAME STATUS ROLES AGE VERSION NODE-LOCAL-DNS-ENABLED 10.xxx.xx.xxx Ready,SchedulingDisabled <none> 28h v1.32+IKS
-
Stellen Sie sicher, dass der Pod nicht mehr auf dem Knoten ausgeführt wird, auf dem der DNS-Cache inaktiviert ist. In der Ausgabe sind keine Pods enthalten.
kubectl get pods -n kube-system -l k8s-app=node-local-dns -o wide
Beispielausgabe
No resources found.
-
-
Wiederholen Sie die vorherigen Schritte für jeden Workerknoten, um das DNS-Caching zu inaktivieren.
DNS-Cache 'NodeLocal' anpassen
Sie können den DNS-Cache NodeLocal
anpassen, indem Sie eine der beiden Konfigurationszuordnungen bearbeiten.
- Konfigurationszuordnung
node-local-dns
: Anpassen derNodeLocal
-DNS-Cachekonfiguration. - ** Konfigurationszuordnung
node-local-dns-config
**: Erweitern derNodeLocal
-DNS-Cachekonfiguration durch Anpassen von Stubdomänen oder Upstream-DNS-Servern, um Services aufzulösen, die auf externe Hosts verweisen.
Das NodeLocal
-DNS-Caching stützt sich auf CoreDNS, um den Cache für DNS-Auflösungen zu verwalten. Halten Sie den entsprechenden NodeLocal
-DNS-Cache und die CoreDNS-Konfigurationen, wie z. B. Stubdomänen, für die Beibehaltung
der DNS-Auflösung konsistent.
Konfigurationszuordnung node-local-dns
für allgemeine Konfigurationsaktualisierungen bearbeiten
Sie können die Konfigurationszuordnung node-local-dns
, um die DNS-Cachekonfiguration NodeLocal
anzupassen.
Vorbereitende Schritte: Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
-
Überprüfen Sie, ob die Dämongruppe (DaemonSet) des DNS-Cache
NodeLocal
verfügbar ist.kubectl get ds -n kube-system node-local-dns
Beispielausgabe
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
-
Bearbeiten Sie die Standardeinstellungen oder fügen Sie angepasste Corefiles zur
NodeLocal
-Konfigurationszuordnung für den DNS-Cache hinzu. Jede Corefile, die Sie importieren, muss den Pfadcoredns
verwenden. Weitere Informationen finden Sie in der Dokumentation Kubernetes.Für den
NodeLocal
DNS-Cache wird nur eine begrenzte Anzahl von Plug-ins unterstützt.kubectl edit configmap -n kube-system node-local-dns
Beispielausgabe
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 ...
-
Nach einigen Minuten übernimmt der
NodeLocal
-DNS-Cache die in der Konfigurationszuordnung vorgenommenen Änderungen.
Konfigurationszuordnung node-local-dns-config
zur Erweiterung mit Stubdomänen oder Upstream-Servern bearbeiten
Bearbeiten Sie die Konfigurationszuordnung node-local-dns-config
, um die NodeLocal
-DNS-Cachekonfiguration zu erweitern, z. B. durch Anpassen von Stubdomänen oder Upstream-DNS-Servern. Weitere Informationen finden
Sie in der Dokumentation Kubernetes.
Vorbereitende Schritte: Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
-
Überprüfen Sie, ob die Dämongruppe (DaemonSet) des DNS-Cache
NodeLocal
verfügbar ist.kubectl get ds -n kube-system node-local-dns
Beispielausgabe
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
-
Stellen Sie sicher, dass der
NodeLocal
-DNS-Cache eine Konfigurationszuordnung (Configmap) besitzt.-
Stellen Sie fest, ob die Konfigurationszuordnung (Configmap) für den
NodeLocal
-DNS-Cache vorhanden ist.kubectl get cm -n kube-system node-local-dns-config
Beispiel für die Ausgabe bei nicht vorhandener Konfigurationszuordnung
Error from server (NotFound): ConfigMaps "node-local-dns-config" not found
-
Falls keine Konfigurationszuordnung vorhanden ist, erstellen Sie eine solche Zuordnung für den
NodeLocal
-DNS-Cache.kubectl create cm -n kube-system node-local-dns-config
Beispielausgabe
configmap/node-local-dns-config created
-
-
Bearbeiten Sie die Konfigurationszuordnung (Configmap) für den
NodeLocal
-DNS-Cache. Die Konfigurationszuordnung (Configmap) erfordert die Verwendung der KubeDNS-Syntax für die Anpassung von Stubdomänen und vorgelagerten DNS-Servern. Weitere Informationen finden Sie in der Dokumentation Kubernetes.kubectl edit cm -n kube-system node-local-dns-config
Beispielausgabe
apiVersion: v1 kind: ConfigMap metadata: name: node-local-dns-config namespace: kube-system data: stubDomains: | {"abc.com" : ["1.2.3.4"]}
-
Nach einigen Minuten übernimmt der
NodeLocal
-DNS-Cache die in der Konfigurationszuordnung vorgenommenen Änderungen.
Zonenorientiertes DNS einrichten
Richten Sie in Ihrem IBM Cloud Kubernetes Service-Mehrzonencluster zonenorientiertes DNS für eine verbesserte Cluster-DNS-Leistung und -Verfügbarkeit ein. Diese Einrichtung
erweitert den NodeLocal
-DNS-Cache, sodass Cluster-DNS-Datenverkehr innerhalb derselben Zone bevorzugt wird.
Standardmäßig wird Ihr Cluster mit clusterweiten DNS-Ressourcen und nicht mit zonenorientierten DNS-Ressourcen eingerichtet. Auch nach der Einrichtung des zonenorientierten DNS werden die clusterweiten DNS-Ressourcen weiterhin als Backup-DNS ausgeführt. Ihre zonenorientierten DNS-Ressourcen sind vom clusterweiten DNS getrennt und das Ändern des zonenorientierten DNS wirkt sich nicht auf das clusterweite DNS aus.
Verwenden Sie die DNS-Cache-Bezeichnung nicht, wenn Sie zonenorientiertes DNS in Ihrem Cluster verwenden.
Zonenorientiertes DNS einrichten
Führen Sie den folgenden Schritt aus, um zonenbewusster DNS in Ihrem Mehrzonencluster einzurichten.
-
Aktualisieren Sie alle DNS-Egress-Netzwerkrichtlinien, die von zonenspezifischem DNS betroffen sind, z. B. Richtlinien, die auf Pod- oder Namespace-Selektoren für DNS-Egress beruhen. Führen Sie den folgenden Befehl aus, um eine Liste Ihrer Netzwerkrichtlinien zu erhalten.
kubectl get networkpolicy --all-namespaces -o yaml
-
Beschriften Sie die
coredns
ConfigMap im Namensbereichkube-system
mitibm-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"
-
Aktualisieren Sie den Cluster-Master, um die zonenbasierten DNS-Ressourcen bereitzustellen.
ibmcloud ks cluster master refresh -c <cluster_name_or_ID>
-
Vergewissern Sie sich, dass der Aktualisierungsvorgang abgeschlossen wurde. Überprüfen Sie dazu, den Masterstatus (Master Health) in den Cluster-Details.
ibmcloud ks cluster get -c <cluster_name_or_ID>
-
Wenn Sie Stubdomänen und vorgelagerte DNS-Server für CoreDNS angepasst haben, müssen Sie auch den
NodeLocal
-DNS-Cache anpassen, und zwar unter Angabe genau dieser Stubdomänen und vorgelagerten DNS-Server. -
Legen Sie eine Umgebungsvariable für die Zonen des Clusters fest.
ZONES=$(kubectl get nodes --no-headers --ignore-not-found=true -o jsonpath='{range .items[*]}{.metadata.labels.topology\.kubernetes\.io/zone}{"\n"}{end}' | uniq)
-
Starten Sie CoreDNS und die CoreDNS-Autoscaler-Pods in allen Zonen.
for ZONE in ${ZONES}; do kubectl scale deployment -n kube-system "coredns-autoscaler-${ZONE}" --replicas=1 done
-
Überprüfen Sie, dass CoreDNS und die CoreDNS-Autoscaler-Pods in allen Zonen ausgeführt werden.
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
-
Starten Sie die Pods des
NodeLocal
-DNS-Cache in allen Workerknoten.kubectl label nodes --all --overwrite "ibm-cloud.kubernetes.io/zone-aware-dns-enabled=true"
-
Überprüfen Sie, dass die Pods des
NodeLocal
-DNS-Cache in allen Workerknoten ausgeführt werden.for ZONE in ${ZONES}; do kubectl get pods -n kube-system -l "k8s-app=node-local-dns-${ZONE}" -o wide done
-
Ordnen Sie Ihren Worker-Pools eine Bezeichnung zu, damit zukünftige Workerknoten die Bezeichnung
ibm-cloud.kubernetes.io/zone-aware-dns-enabled=true
übernehmen.
Zonenorientiertes DNS inaktivieren und löschen
Zum Entfernen von zonenorientiertem DNS müssen Sie zuerst das zonenorientierte DNS in jeder Zone Ihres Mehrzonenclusters inaktivieren. Anschließend löschen Sie die zonenorientierten DNS-Ressourcen.
-
Entfernen Sie die
ibm-cloud.kubernetes.io/zone-aware-dns-enabled=true
Label aus Ihren Worker-Pools. -
Legen Sie eine Umgebungsvariable für die Zonen im Cluster fest.
ZONES=$(kubectl get nodes --no-headers --ignore-not-found=true -o jsonpath='{range .items[*]}{.metadata.labels.topology\.kubernetes\.io/zone}{"\n"}{end}' | uniq)
-
Stoppen Sie die Pods des
NodeLocal
-DNS-Cache auf allen Workerknoten.kubectl label nodes --all --overwrite "ibm-cloud.kubernetes.io/zone-aware-dns-enabled-"
-
Stoppen Sie die CoreDNS-Autoscaler-Pods in allen Zonen.
for ZONE in ${ZONES}; do kubectl scale deployment -n kube-system "coredns-autoscaler-${ZONE}" --replicas=0 done
-
Überprüfen Sie, dass die CoreDNS-Autoscaler-Pods in allen Zonen nicht mehr ausgeführt werden.
for ZONE in ${ZONES}; do kubectl get pods -n kube-system -l "k8s-app=coredns-autoscaler-${ZONE}" done
-
Stoppen Sie die CoreDNS-Pods in allen Zonen.
for ZONE in ${ZONES}; do kubectl scale deployment -n kube-system "coredns-${ZONE}" --replicas=0 done
-
Entfernen Sie die Bezeichnung
ibm-cloud.kubernetes.io/deploy-zone-aware-dns=true
aus der Konfigurationszuordnungcoredns
im Namensbereichkube-system
.kubectl label cm -n kube-system coredns --overwrite "ibm-cloud.kubernetes.io/deploy-zone-aware-dns-"
-
Aktualisieren Sie den Cluster-Master, um die zonenorientierten DNS-Ressourcen zu löschen.
ibmcloud ks cluster master refresh --cluster <cluster-name-or-id>
-
Vergewissern Sie sich, dass der Aktualisierungsvorgang abgeschlossen wurde. Überprüfen Sie dazu, den Masterstatus (Master Health) in den Cluster-Details.
ibmcloud ks cluster get -c <cluster_name_or_ID>