Por que o Operador DNS mostra um erro RouteHealthDegraded
ou can't marshal DNS message
?
Virtual Private Cloud Infra-estrutura Classic
Você recebe uma mensagem de erro semelhante a uma das seguintes.
A mensagem de erro de exemplo a seguir é exibida ao instalar o IBM Cloud Pak for Data por meio do 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
Exemplo de erro " nslookup
.
# 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
A correção do bug 1953097 habilitou as respostas do plug-in CoreDNS ' bufsize
de bytes ' 1232
. Alguns resolvedores de
DNS não podem receber respostas maiores que 512
bytes. Observe que os resolvedores de DNS que tentam realizar as consultas novamente com TCP, como o Dig, não são impactados. Os clientes DNS que não exigem que as mensagens de DNS
UDP excedam 512 bytes não são impactados.
Atualize seu cluster mestre e nós do trabalhador.
-
ibmcloud oc cluster master update --cluster <clusterID> --version <4.6.38_openshift|4.7.19_openshift>
-
Depois de atualizar o mestre, execute o comando
cluster get
para obter o estado e a versão do cluster e verifique se o estado édeployed
.ibmcloud oc cluster get --cluster <clusterID>
-
Obtenha os detalhes do configmap
openshift-dns
e revise obufsize
executando o comando a seguir.oc get ConfigMap -n openshift-dns dns-default -o yaml
-
Se o
bufsize
ainda for1232
, obtenha o nome do pod do operador DNS.oc get pods -n openshift-dns-operator
Saída de exemplo
NAME READY STATUS RESTARTS AGE dns-operator-111aa1aaab-xxxx1 2/2 Running 0 5h49m
-
Exclua o pod do operador DNS.
oc delete pod <dns_operator_pod> -n openshift-dns-operator
-
Aguarde a reinicialização do pod DNS. Execute "
get pods
com a opção "--watch
para verificar se o pod está implantado.oc get pods -n openshift-dns --watch
-
Verifique se o pod do operador DNS está em execução.
oc get pods -n openshift-dns-operator
-
Obtenha o ConfigMap YAML e verifique se o '
bufsize
é '512
.oc get configmap -n openshift-dns dns-default -o yaml
-
Após alguns minutos, verifique se a resolução de DNS funciona. Se você vir um erro
nslookup
, tente executarnslookup
novamente./ # 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