Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Diagnose DNS resolution errors with ACK CoreDNS DNSTAP Analyser

Última atualização: Sep 18, 2026

Capture mensagens DNS em cada estágio de resolução para identificar onde ocorrem falhas em clusters ACK Pro.

Pré-requisitos

Antes de começar, verifique se você tem:

Contexto

dnstap é um formato de log para mensagens DNS. O CoreDNS inclui um plugin dnstap nativo que captura todas as mensagens DNS. O ACK CoreDNS DNSTAP Analyser recebe essas mensagens via TCP e as agrega em registros de diagnóstico por sessão.

Consulte dnstap para detalhes sobre o formato de log.

Etapa 1: Instale o ACK CoreDNS DNSTAP Analyser

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, localize o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Applications > Helm.

  3. Na página Helm, clique em Deploy. Na etapa Basic Information, configure os parâmetros a seguir. Selecione ack-coredns-dnstap-analyser e clique em Next.

    Parâmetro

    Valor

    Application Name

    ack-coredns-dnstap-analyser

    Namespace

    kube-system

    Source

    Marketplace (padrão)

    Chart — Use Scenarios

    All

    Chart — Supported Architecture

    amd64

    Chart — Search box

    ack-coredns-dnstap-analyser

  4. Na etapa Parameters, configure a Chart Version e clique em OK.

Etapa 2: Configure o plugin dnstap no CoreDNS

O CoreDNS inclui o plugin dnstap. Ative-o e aponte-o para o ACK CoreDNS DNSTAP Analyser para encaminhar mensagens DNS automaticamente.

  1. Obtenha o endereço IP do cluster do service DNSTAP Analyser. Anote esse endereço para a próxima etapa.

    kubectl -n kube-system get svc dnstap-analyser

    Neste exemplo, o endereço IP do cluster é 172.21.0.10.

  2. Abra o ConfigMap do CoreDNS para edição.

    kubectl -n kube-system edit cm coredns -o yaml
  3. Adicione a diretiva dnstap ao Corefile. Substitua 172.21.0.10 pelo endereço IP do cluster obtido na Etapa 1.

    Corefile: |
        .:53 {
            # ... other plugins ...
            ready
    
            # Add this line. The "full" flag includes the complete wire-format DNS
            # message in each record, which provides richer diagnostic data.
            dnstap tcp://172.21.0.10:6000 full
    
            kubernetes cluster.local in-addr.arpa ip6.arpa {
            # ... other settings ...
            }
            # ... other plugins ...
            reload
            loadbalance
        }
  4. Verifique se o CoreDNS recarregou a configuração.

    1. Liste todos os Pods do CoreDNS.

      kubectl -n kube-system get pod | grep coredns

      Saída esperada:

      coredns-7d56l         1/1     Running   0          30m
      coredns-s7m2t         1/1     Running   0          30m
    2. Acompanhe o log de um Pod do CoreDNS. Substitua coredns-7d56l pelo nome de um Pod exibido na saída anterior.

      kubectl -n kube-system logs -f --tail=500 coredns-7d56l

      Aguarde até um minuto. Um recarregamento bem-sucedido produz:

      [INFO] Reloading complete

Etapa 3: Visualize o log do ACK CoreDNS DNSTAP Analyser

  1. Liste todos os Pods do ACK CoreDNS DNSTAP Analyser.

    kubectl -n kube-system get pod | grep dnstap-analyser

    Saída esperada:

    dnstap-analyser-bbdf879-g****         1/1     Running   0          30m
  2. Transmita o log em tempo real. Substitua dnstap-analyser-bbdf879-g**** pelo nome do Pod exibido na saída anterior.

    kubectl -n kube-system logs -f dnstap-analyser-bbdf879-g****

Etapa 4: Analise o log

Cada linha do log representa uma sessão DNS — um ciclo completo de requisição e resposta entre um cliente, o CoreDNS e o servidor DNS upstream.

Como interpretar uma entrada de sessão: Verifique o campo Status para confirmar sucesso ou falha. Examine o campo BitMap para identificar em qual estágio de resolução ocorreu a falha. Inspecione o campo Messages para visualizar os payloads DNS brutos.

Campo Status

Status

Descrição

Succeeded

Consulta DNS concluída. A resposta contém um código de status NXDOMAIN ou NOERROR.

Failed

Resolução falhou. A resposta contém um código de status de erro ou a conexão upstream expirou.

SampleLoss

O CoreDNS ou o analyser descartou mensagens dnstap por sobrecarga. Dimensione o componente sobrecarregado para melhorar a precisão do diagnóstico.

Entradas SampleLoss indicam que algumas sessões DNS não foram capturadas. Se entradas SampleLoss forem frequentes, dimensione os Pods do CoreDNS ou do analyser antes de continuar.

Campo BitMap

Máscara de bits que indica quais tipos de mensagem foram capturados na sessão. Use-a para identificar em qual ponto da cadeia de resolução a falha ocorreu.

BitMap

Descrição

1

O CoreDNS recebeu uma consulta do cliente, mas não retornou resposta.

3

Domínio interno resolvido. A consulta atingiu o cache do CoreDNS ou um registro DNS do Kubernetes, e o resultado foi retornado ao cliente.

5

Servidor DNS upstream inacessível. O CoreDNS encaminhou a consulta, mas não recebeu resposta.

15

Domínio externo resolvido. O CoreDNS encaminhou a consulta ao servidor upstream, recebeu uma resposta e a devolveu ao cliente.

Campo Messages

O campo Messages contém consultas e respostas DNS em JSON. Analise-as com base na referência de parâmetros DNS da IANA para inspecionar códigos de resposta e tipos de registro.

(Opcional) Etapa 5: Desinstale o ACK CoreDNS DNSTAP Analyser

Após concluir a investigação, remova o analyser para evitar custos desnecessários.

  1. Remova a diretiva dnstap do ConfigMap do CoreDNS.

    1. Abra o ConfigMap para edição.

      kubectl -n kube-system edit cm coredns -o yaml
    2. Exclua a linha que contém dnstap.

      Corefile: |
          .:53 {
              # ... other plugins ...
              ready
      
              # Delete the following line.
              dnstap tcp://10.10.10.10:6000 full
      
              kubernetes cluster.local in-addr.arpa ip6.arpa {
              # ... other settings ...
              }
              # ... other plugins ...
              reload
              loadbalance
          }
    3. Verifique se o CoreDNS recarregou a configuração. Liste todos os Pods do CoreDNS.

      kubectl -n kube-system get pod | grep coredns

      Saída esperada:

      coredns-7d56l         1/1     Running   0          30m
      coredns-s7m2t         1/1     Running   0          30m
    4. Acompanhe o log de um Pod do CoreDNS. Substitua coredns-7d56l pelo nome de um Pod exibido na saída anterior.

      kubectl -n kube-system logs -f --tail=500 coredns-7d56l

      Aguarde até um minuto. Um recarregamento bem-sucedido produz:

      [INFO] Reloading complete
  2. Exclua o release Helm do ACK CoreDNS DNSTAP Analyser.

    1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, localize o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Applications > Helm.

    3. Na página Helm, localize ack-coredns-dnstap-analyser e clique em Delete na coluna Actions.

Próximas etapas