IBM Cloud Docs
Por que o Operador DNS mostra um erro RouteHealthDegraded ou can't marshal DNS message?

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.

  1. Atualize seu cluster mestre.

    ibmcloud oc cluster master update --cluster <clusterID> --version <4.6.38_openshift|4.7.19_openshift>
    
  2. 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>
    
  3. Atualize seus nós do trabalhador.

  4. Obtenha os detalhes do configmap openshift-dns e revise o bufsize executando o comando a seguir.

    oc get ConfigMap -n openshift-dns dns-default -o yaml
    
  5. Se o bufsize ainda for 1232, 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
    
  6. Exclua o pod do operador DNS.

    oc delete pod <dns_operator_pod> -n openshift-dns-operator
    
  7. 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
    
  8. Verifique se o pod do operador DNS está em execução.

    oc get pods -n openshift-dns-operator
    
  9. Obtenha o ConfigMap YAML e verifique se o ' bufsize é ' 512.

    oc get configmap -n openshift-dns dns-default -o yaml
    
  10. Após alguns minutos, verifique se a resolução de DNS funciona. Se você vir um erro nslookup, tente executar nslookup 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