Perché l'operatore DNS mostra un errore RouteHealthDegraded o can't marshal DNS message ?
Virtual Private Cloud Infrastruttura classica
Imparare a risolvere gli errori dell'operatore DNS relativi a RouteHealthDegraded o can't marshal DNS message.
Viene visualizzato un messaggio di errore simile a uno dei seguenti.
Il seguente messaggio di errore di esempio viene visualizzato quando si installa IBM Cloud Pak for Data dalla console.
XXX.us-south.containers.appdomain.cloud: Get "http://image-registry-openshift-image-registry.ocp-data-privacy-prod-c-XXX.us-south.containers.appdomain.cloud/v2/": dial tcp: lookup image-registry-openshift-image-registry.ocp-data-privacy-prod-c-XXX.us-south.containers.appdomain.cloud on XXX.XX.X.XX:XX: can't marshal DNS message
Errore nslookup di esempio.
# nslookup XXX.XXX.databases.appdomain.cloud
Server: XXX.XX.X.XX
Address: XXX.XX.X.XX:XX
Non-authoritative answer:
*** Can't find XXX.XXX.databases.appdomain.cloud: Parse error
Non-authoritative answer:
*** Can't find XXX.XXX.databases.appdomain.cloud: Parse error
La correzione del bug 1953097 ha abilitato le risposte del plugin CoreDNS bufsize di 1232 byte. Alcuni resolver DNS non
possono ricevere risposte superiori a 512 byte. Si noti che i resolver DNS che riprovano le ricerche utilizzando TCP, come Dig, non sono interessati. I client DNS che non richiedono che i messaggi DNS UDP superino i 512 byte non
sono interessati.
Aggiorna il tuo master cluster e i nodi di lavoro.
-
Aggiorna il tuo master cluster.
ibmcloud oc cluster master update --cluster <clusterID> --version <4.6.38_openshift|4.7.19_openshift> -
Dopo aver aggiornato il tuo master, esegui il comando
cluster getper ottenere lo stato e la versione del cluster e verificare che lo stato siadeployed.ibmcloud oc cluster get --cluster <clusterID> -
Ottieni i dettagli della configmap
openshift-dnse riesaminabufsizeimmettendo il seguente comando.oc get ConfigMap -n openshift-dns dns-default -o yaml -
Se
bufsizeè ancora1232, ottieni il nome del pod Operatore DNS.oc get pods -n openshift-dns-operatorOutput di esempio:
NAME READY STATUS RESTARTS AGE dns-operator-111aa1aaab-xxxx1 2/2 Running 0 5h49m -
Elimina il pod Operatore DNS.
oc delete pod <dns_operator_pod> -n openshift-dns-operator -
Attendere il riavvio del pod DNS. Esegui il comando
get podscon l'opzione--watchper verificare che il pod sia stato distribuito.oc get pods -n openshift-dns --watch -
Verificare che il pod dell'operatore DNS sia in esecuzione.
oc get pods -n openshift-dns-operator -
Ottenere l'YAML ConfigMap e verificare che
bufsizesia512.oc get configmap -n openshift-dns dns-default -o yaml -
Dopo pochi minuti, verifica che la risoluzione DNS funzioni. Se viene visualizzato un errore
nslookup, provare a eseguire di nuovonslookup./ # nslookup XXX.XXX.databases.appdomain.cloud Server: XXX.XX.X.XX Address: XXX.XX.X.XX:XX Non-authoritative answer: XXX.XXX.databases.appdomain.cloud canonical name = icd-prod-us-south-db-lm0sr.us-south.containers.appdomain.cloud icd-prod-us-south-db-lm0sr.us-south.containers.appdomain.cloud canonical name = icd-prod-us-south-db-lm0sr.XXX.akadns.net Non-authoritative answer: XXX.XXX.databases.appdomain.cloud canonical name = icd-prod-us-south-db-lm0sr.us-south.containers.appdomain.cloud icd-prod-us-south-db-lm0sr.us-south.containers.appdomain.cloud canonical name = icd-prod-us-south-db-lm0sr.XXX.akadns.net Name: icd-prod-us-south-db-lm0sr.XXX.akadns.net Address: XXX.XX.XXX.XX Name: icd-prod-us-south-db-lm0sr.XXX.akadns.net Address: XXX.XX.X.XX Name: icd-prod-us-south-db-lm0sr.XXX.akadns.net Address: XXX.XX.XXX.XXX