O que fazer se a resolução de nome de domínio falhar?
Item de verificação 1: se o complemento coredns foi instalado
- Efetue logon no console do CCE e clique no cluster.
- No painel de navegação, escolha Add-ons. Na área Add-ons Installed, verifique se o complemento coredns foi instalado.
- Caso contrário, instale o complemento. Para obter detalhes, consulte Por que um contêiner em um cluster do CCE falha ao executar a resolução de DNS?.
Item de verificação 2: se a instância coredns atinge o limite de desempenho
O QPS de CoreDNS está positivamente correlacionado com o uso da CPU. Se o QPS for alto, ajuste as especificações da instância de coredns com base no QPS. Se um cluster tiver mais de 100 nós, é aconselhável usar o DNSCache do NodeLocal para melhorar o desempenho do DNS. Para obter detalhes, consulte Uso de DNSCache do NodeLocal para melhorar o desempenho do DNS.
- Efetue logon no console do CCE e clique no cluster.
- No painel de navegação à esquerda, escolha Add-ons. Em Add-ons Installed, encontre o complemento coredns correspondente ao cluster e assegure-se de que o status do complemento esteja em Running.
- Clique no nome do complemento coredns para ver a lista de complementos.
- Clique em Monitor do complemento coredns para exibir o uso da CPU e da memória.
Se o desempenho do complemento atingir o gargalo, ajuste as especificações do complemento coredns.
- Na área Add-ons Installed, localize a linha que contém o complemento coredns e clique em Edit. A página de detalhes do complemento é exibida.
- Na área Specifications, configure as especificações do complemento coredns. Você pode usar o QPS de CoreDNS com base nos requisitos de serviço.
- Você também pode selecionar Custom qps e definir o número de pods, a cota de CPU e a cota de memória.
- Clique em OK.
Item de verificação 3: se a resolução de nome de domínio externo é lenta ou expira o tempo limite
Se a taxa de falha de resolução de nome de domínio for inferior a 1/10000, otimize os parâmetros consultando Como otimizar a configuração se a definição de nome de domínio externo é lenta ou expirar o tempo limite? ou adicione uma política de repetição no serviço.
Item de verificação 4: se UnknownHostException ocorre
Quando solicitações de serviço no cluster são enviadas para um servidor DNS externo, ocorre um erro de resolução de nome de domínio devido a UnknownHostException ocasional. UnknownHostException é uma exceção comum. Quando essa exceção ocorrer, verifique se há algum erro relacionado ao nome de domínio ou se você inseriu um nome de domínio correto.
Para localizar a falha, execute as seguintes etapas:
- Verifique o nome do host com cuidado (ortografia e espaços extras).
- Verifique as configurações do DNS. Antes de executar a aplicação, execute o comando ping hostname para garantir que o servidor DNS esteja iniciado e em execução. Se o nome do host for novo, você precisa esperar por um período de tempo antes que o servidor DNS seja acessado.
- Verifique o uso da CPU e da memória do complemento coredns para determinar se o gargalo de desempenho foi atingido. Para mais detalhes, consulte Item de verificação 2: se a instância coredns atinge o limite de desempenho.
- Verifique se a limitação de tráfego é executada no complemento coredns. Se a limitação de tráfego é acionada, o tempo de processamento de alguns pedidos pode ser prolongado. Nesse caso, você precisa ajustar as especificações adicionais do coredns.
Faça logon no nó onde o complemento coredns está instalado e visualize o seguinte conteúdo:
cat /sys/fs/cgroup/cpu/kubepods/pod {pod uid} / {coredns container ID} /cpu.stat
- {pod uid} indica o UID do pod do complemento coredns, que pode ser obtido executando o seguinte comando:
kubectl get po {pod name} -nkube-system -ojsonpath='{.metadata.uid}{"\n"}'
No comando anterior, {pod name} indica o nome do complemento coredns em execução no nó atual.
- {coredns container id} deve ser um ID do contêiner completo, que pode ser obtido executando o seguinte comando:
docker ps --no-trunc | grep k8s_coredns | awk '{print $1}'
Exemplo:
cat /sys/fs/cgroup/cpu/kubepods/pod27f58662-3979-448e-8f57-09b62bd24ea6/6aa98c323f43d689ac47190bc84cf4fadd23bd8dd25307f773df25003ef0eef0/cpu.stat
Preste atenção às seguintes métricas:
- nr_throttled: número de vezes que o tráfego é limitado.
- throttled_time: duração total da limitação de tráfego, em nanossegundos.
- {pod uid} indica o UID do pod do complemento coredns, que pode ser obtido executando o seguinte comando:
Se o nome de host e as configurações de DNS estiverem corretos, você poderá usar as seguintes políticas de otimização.
Políticas de otimização:
- Alterar o tempo de cache do coredns.
- Configure o domínio de stub.
- Modifique o valor dos ndots.

- Aumentar o tempo de cache de coredns ajuda a resolver o mesmo nome de domínio para o tempo N, reduzindo o número de solicitações de DNS em cascata.
- Configurar o domínio de stub pode reduzir o número de links de solicitação de DNS.
Como modificar:
- Modificar o tempo de cache do coredns e configurando o domínio de stub:
Configuração do domínio de stub para coredns
Reinicie o complemento coredns depois de modificar as configurações.
- Modificar ndots:
Exemplo:
dnsConfig: options: - name: timeout value: '2' - name: ndots value: '5' - name: single-request-reopen
É aconselhável alterar o valor dos ndots para 2.