Todos os produtos
Search
Central de documentação

Container Compute Service:Configure CoreDNS não gerenciado

Última atualização: Jun 29, 2026

Clusters ACS usam o CoreDNS como servidor DNS padrão para descoberta de serviços do Kubernetes. Instale e opere um CoreDNS não gerenciado para personalizar recursos de DNS no cluster ACS.

Cenários

Nota

Este tópico aplica-se apenas ao CoreDNS não gerenciado. As configurações do CoreDNS gerenciado não ficam visíveis para os usuários e não podem ser alteradas manualmente. Para CoreDNS gerenciado, consulte Configuração de política de DNS e resolução de nomes de domínio. Para instalar o CoreDNS não gerenciado, consulte Usar CoreDNS não gerenciado em um cluster ACS.

O exemplo a seguir usa um pod com dnsPolicy: ClusterFirst na configuração da política de DNS:

apiVersion: v1
kind: Pod
metadata:
  name: alinux3
  namespace: default
spec:
  containers:
  - image: alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3
    command:
      - sleep
      - "10000"
    imagePullPolicy: Always
    name: alinux3
  dnsPolicy: ClusterFirst

Para configure o parâmetro dnsPolicy para diferentes cenários, consulte Configure resolução de DNS.

Configurações padrão do CoreDNS

O ConfigMap do CoreDNS no namespace kube-system define quais plug-ins estão ativados. Os ConfigMaps variam ligeiramente entre as versões do CoreDNS. Antes de fazer alterações, revise a documentação oficial do CoreDNS. O exemplo a seguir mostra a configuração padrão do CoreDNS 1.6.2:

  Corefile: |
    .:53 {
        errors
        log
        health {
           lameduck 15s
        }
        ready
        kubernetes {{.ClusterDomain}} in-addr.arpa ip6.arpa {
          pods verified
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf {
              prefer_udp
        }
        cache 30
        loop
        reload
        loadbalance
    }
Nota

Substitua ClusterDomain pelo nome de domínio do cluster especificado durante a criação do cluster. Nome de domínio padrão do cluster: cluster.local.

Parâmetro

Descrição

errors

Envia mensagens de erro para a saída padrão.

health

Relata o status de integridade do CoreDNS. A porta de escuta padrão é 8080, geralmente usada para verificações de integridade.

Obtenha o status de integridade em http://localhost:8080/health.

ready

Informa o status de prontidão dos plug-ins do CoreDNS. A porta de escuta padrão é 8181, normalmente utilizada para verificações de prontidão.

Consulte o status de prontidão em http://localhost:8181/ready. Um status 200 OK indica que todos os plug-ins estão em execução.

kubernetes

Fornece resolução de serviços dentro de um cluster Kubernetes.

prometheus

Disponibiliza um endpoint para métricas do CoreDNS.

Acesse dados de monitoramento no formato Prometheus via http://localhost:9153/metrics.

forward (ou proxy)

Encaminha consultas de nomes de domínio para servidores DNS predefinidos. Por padrão, se um nome de domínio não pertencer ao domínio do Kubernetes, a consulta é encaminhada para o resolvedor em /etc/resolv.conf. A configuração usa o arquivo /etc/resolv.conf do host por padrão.

cache

Cache de DNS.

loop

Detecta loops de encaminhamento. Caso um loop seja identificado, o CoreDNS para.

reload

Recarrega automaticamente o Corefile quando há alterações. Após editar o ConfigMap associado, as mudanças entram em vigor em até 2 minutos.

loadbalance

Habilita o balanceamento de carga de DNS randomizando a ordem dos registros A, AAAA e MX nas respostas.

Configure recursos estendidos com base no CoreDNS

Os cenários a seguir demonstram personalizações comuns do CoreDNS:

  • Cenário 1: Ative o Log Service simples

    Para registrar todos os registros de resolução de DNS, adicione o parâmetro log ao Corefile. Exemplo:

      Corefile: |
        .:53 {
            errors
            log
            health {
               lameduck 15s
            }
            ready
            kubernetes cluster.local in-addr.arpa ip6.arpa {
              pods insecure
              fallthrough in-addr.arpa ip6.arpa
              ttl 30
            }
            prometheus :9153
            forward . /etc/resolv.conf {
                  prefer_udp
            }
            cache 30
            loop
            reload
            loadbalance
        }
  • Cenário 2: Personalizar servidores DNS para nomes de domínio específicos

    Para resolver nomes de domínio com um sufixo específico (como example.com) por meio de um servidor DNS personalizado (como 10.10.0.10), adicione um bloco de resolução customizado. Exemplo:

    example.com:53 {
      errors
      cache 30
      forward . 10.10.0.10 {
      prefer_udp
      }
    }

    Configuração:

      Corefile: |
        .:53 {
            errors
            health {
               lameduck 15s
            }
            ready
            kubernetes cluster.local in-addr.arpa ip6.arpa {
              pods insecure
              fallthrough in-addr.arpa ip6.arpa
              ttl 30
            }
            prometheus :9153
            forward . /etc/resolv.conf {
              prefer_udp
            }
            cache 30
            loop
            reload
            loadbalance
        }
        example.com:53 {
            errors
            cache 30
            forward . 10.10.0.10 {
            prefer_udp
            }
        }
  • Cenário 3: Personalizar servidores DNS para nomes de domínio externos

    Quando os nomes de domínio que exigem resolução de DNS personalizada não compartilham um sufixo comum, encaminhe todas as consultas externas para seus servidores DNS personalizados.

    Por exemplo, para encaminhar consultas aos servidores DNS 10.10.0.10 e 10.10.0.20, modifique o parâmetro forward. Exemplo:

      Corefile: |
        .:53 {
            errors
            health {
               lameduck 15s
            }
            ready
            kubernetes cluster.local in-addr.arpa ip6.arpa {
              pods insecure
              fallthrough in-addr.arpa ip6.arpa
              ttl 30
            }
            prometheus :9153
            forward . 10.10.0.10 10.10.0.20 {
              prefer_udp
            }
            cache 30
            loop
            reload
            loadbalance
        }
  • Cenário 4: Personalizar hosts para nomes de domínio específicos

    Use o plug-in hosts para mapear nomes de domínio para endereços IP estáticos, de forma semelhante ao arquivo /etc/hosts. Por exemplo, para apontar www.example.com para 127.0.0.1:

      Corefile: |
        .:53 {
            errors
            health {
               lameduck 15s
            }
            ready
            
            hosts {
              127.0.0.1 www.example.com
              fallthrough
            }
          
            kubernetes cluster.local in-addr.arpa ip6.arpa {
              pods insecure
              fallthrough in-addr.arpa ip6.arpa
              ttl 30
            }
            prometheus :9153
            forward . /etc/resolv.conf {
              prefer_udp
            }
            cache 30
            loop
            reload
            loadbalance
        }
    Importante

    Especifique o parâmetro fallthrough em hosts. Caso contrário, nomes de domínio não listados podem falhar na resolução.

  • Cenário 5: Ative acesso externo a serviços em um cluster ACK

    Para permitir que um processo em uma instância ECS dentro de um cluster ACK acesse serviços no cluster, defina o nameserver no arquivo /etc/resolv.conf da instância ECS como o endereço IP do cluster do kube-dns. Não modifique outras configurações no arquivo /etc/resolv.conf.

    Para acesso à rede interna, use uma instância de Classic Load Balancer (CLB) voltada para a rede interna a fim de expor serviços no cluster ACS. Em seguida, faça login no console do Alibaba Cloud DNS PrivateZone e adicione um registro A que aponte para o endereço IP privado da instância CLB.

  • Cenário 6: Usar um nome de domínio para permitir acesso ao seu serviço em um cluster ACK ou ative resolução CNAME para um cluster ACK

    Use foo.example.com para expor seu serviço em um cluster ACK à Internet, redes internas e acesso intra-cluster. Para ative isso:

    • Seu serviço foo.default.svc.cluster.local está exposto a acessos externos usando uma instância CLB voltada para a Internet. O nome de domínio foo.example.com é resolvido para o endereço IP da instância CLB voltada para a Internet.

    • Seu serviço foo.default.svc.cluster.local está exposto a acessos internos usando uma instância CLB voltada para a rede interna. Acesse o console do Alibaba Cloud DNS PrivateZone para apontar foo.example.com para o endereço IP da instância CLB voltada para a rede interna na virtual private cloud (VPC) onde o cluster ACK está implantado. Consulte Configure CoreDNS não gerenciado.

    • Use o plug-in rewrite dentro do cluster ACK para adicionar um registro CNAME que aponte foo.example.com para foo.default.svc.cluster.local. Exemplo:

        Corefile: |
          .:53 {
              errors
              health {
                 lameduck 15s
              }
              ready
              
              rewrite stop {
                name exact foo.example.com foo.default.svc.cluster.local
                answer name foo.default.svc.cluster.local foo.example.com 
              }
      
              kubernetes cluster.local in-addr.arpa ip6.arpa {
                pods insecure
                fallthrough in-addr.arpa ip6.arpa
                ttl 30
              }
              prometheus :9153
              forward . /etc/resolv.conf {
                prefer_udp
              }
              cache 30
              loop
              reload
              loadbalance
          }
  • Cenário 7: Configure o CoreDNS para não retornar endereços IPv6 resolvidos com base em registros AAAA

    Se seus pods não precisarem de resolução IPv6 (registro AAAA), configure o CoreDNS para interceptar essas consultas e retornar NODATA, reduzindo assim a transferência desnecessária de dados. Exemplo:

      Corefile: |
        .:53 {
            errors
            health {
               lameduck 15s
            }
            # Add the following line to enable the template plug-in. Do not modify other settings. 
            template IN AAAA .
        }