Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Service discovery DNS

Última atualização: Aug 27, 2026

A resolução de DNS é um dos métodos de descoberta de serviço em clusters ACK Serverless. Este tópico descreve o funcionamento da resolução de DNS nos clusters ACK Serverless e as soluções compatíveis de descoberta de serviço baseadas em DNS.

Neste tópico

Observações de uso

  • Se você não ativar um componente de descoberta de serviço DNS ao criar um cluster ACK Serverless, os pods usarão por padrão o servidor DNS da Virtual Private Cloud (VPC) para resolução. Nesse modo, não há suporte para resolução de nomes de services do Kubernetes.

  • Em um cluster ACK Serverless existente, a ativação de uma solução de descoberta de serviço DNS afeta apenas os novos pods. Os pods criados antes da ativação não atualizam automaticamente seus arquivos de configuração de DNS. Recrie esses pods para aplicar a nova solução.

  • O CoreDNS gerenciado está substituindo gradualmente o CoreDNS não gerenciado, que será descontinuado. Futuramente, o CoreDNS não gerenciado poderá deixar de aparecer no console. Caso precise usar o CoreDNS não gerenciado, envie um ticket.

Cluster ACK Serverless: Funcionamento da resolução de DNS

Ao criar um pod em um cluster ACK Serverless, o arquivo /etc/resolv.conf apresenta o seguinte conteúdo por padrão. Esse arquivo especifica servidores DNS, domínios de busca e outros parâmetros.

# The IP address of the DNS server used by this pod.
nameserver 172.xx.x.xx
# The domain suffixes to append when resolving a service name. The following example is for a pod in the kube-system namespace.
search kube-system.svc.cluster.local svc.cluster.local cluster.local
# Other options
options ndots:5

Para mais informações sobre o arquivo de configuração de DNS e os campos DNSPolicy do pod, consulte DNS resolution and configurations.

Soluções de descoberta de serviço DNS com suporte no cluster ACK Serverless

Solução

Descrição

CoreDNS gerenciado

Método recomendado. Os pods usam o componente CoreDNS gerenciado para resolver nomes de domínio. O ACK Serverless cria e mantém o CoreDNS para garantir seu funcionamento adequado, o que elimina a necessidade de monitorar o status operacional ou executar manutenção manual. Além disso, essa solução não consome instâncias ECI no cluster.

CoreDNS não gerenciado

Os pods usam o componente CoreDNS não gerenciado para resolução de DNS. Configure corretamente o CoreDNS e monitore continuamente o status de suas réplicas.

PrivateZone

Os pods usam o componente PrivateZone para resolução de DNS. O ACK Serverless cria e atualiza automaticamente os registros DNS no PrivateZone.

CoreDNS Gerenciado

O componente CoreDNS gerenciado expõe o service DNS por meio do IP do cluster do service kube-dns no namespace kube-system. Os pods clientes usam o CoreDNS gerenciado conforme descrito abaixo.

image.png

Etapa

Descrição

Ao acessar um service upstream (TargetService), o pod cliente obtém primeiro o endereço do servidor DNS no arquivo de configuração local (/etc/resolv.conf). Em seguida, envia uma consulta DNS para esse endereço a fim de obter o IP do TargetService.

Nesta solução, o endereço do servidor DNS corresponde ao IP do cluster do Service kube-dns, localizado no namespace kube-system do cluster ACK Serverless. O cluster ACK Serverless gerencia dinamicamente os backends do IP do cluster kube-dns, sem exigir intervenção do usuário.

Quando um pod cliente solicita um nome de domínio externo, o CoreDNS gerenciado encaminha a consulta DNS para os servidores DNS da VPC (por exemplo, 100.100.2.136 e 100.100.2.138) para resolução.

Após receber o endereço IP do service upstream (TargetService) do servidor DNS, o pod cliente envia requisições para esse endereço.

Ativar o CoreDNS gerenciado

Importante
  • Após ativar o componente CoreDNS gerenciado, o cluster ACK Serverless cria automaticamente um Service ClusterIP chamado kube-dns no namespace kube-system. Não modifique este Service.

  • O componente CoreDNS gerenciado está sendo disponibilizado em mais regiões. Se o componente não aparecer no console, ele ainda não está disponível na sua região. O recurso de personalização das configurações do CoreDNS gerenciado também está sendo liberado gradualmente. Se precisar dessa funcionalidade, envie um ticket para obter assistência.

  • Método 1: Para um novo cluster ACK Serverless, selecione CoreDNS (Managed) em Service Discovery durante a criação do cluster para ativar o componente CoreDNS gerenciado.

    Na etapa Component Configuration, na configuração Service Discovery, selecione CoreDNS.

  • Método 2: Para um cluster ACK Serverless existente, acesse a página de detalhes do cluster e escolha Operations > Add-ons. Clique na aba Networking, localize o componente CoreDNS e clique em Install. Para mais informações, consulte Manage add-ons.

CoreDNS Não Gerenciado

O CoreDNS não gerenciado é um componente do cluster Kubernetes responsável pela resolução de DNS. Ele resolve tanto nomes de domínio de services internos personalizados quanto domínios externos. O CoreDNS não gerenciado oferece um conjunto abrangente de plug-ins que permitem personalizações no nível do cluster, como servidores DNS personalizados, hosts personalizados, registros CNAME e regras de reescrita. Assim como o Kubernetes, o projeto CoreDNS é hospedado pela Cloud Native Computing Foundation (CNCF). Para mais informações sobre a CNCF, visite o site da CNCF. Para detalhes específicos sobre o CoreDNS, consulte CoreDNS: DNS and Service Discovery.

O componente CoreDNS não gerenciado expõe o service DNS por meio do IP do cluster do Service kube-dns no namespace kube-system. O diagrama a seguir ilustra como um pod cliente usa o CoreDNS não gerenciado.

image.png

Etapa

Descrição

Ao acessar um service upstream (TargetService), o pod cliente recupera inicialmente o endereço do servidor DNS no arquivo de configuração local (/etc/resolv.conf). Depois, envia uma consulta DNS para esse endereço visando obter o IP do TargetService.

Nesta solução, o endereço do servidor DNS é o IP do cluster do Service kube-dns no namespace kube-system do cluster ACK Serverless.

Se o pod cliente solicitar um nome de domínio externo, o CoreDNS encaminhará a consulta DNS para os servidores DNS da VPC (como 100.100.2.136 e 100.100.2.138) para resolução.

Após receber o endereço IP do service upstream (TargetService) do servidor DNS, o pod cliente direciona as requisições para esse endereço.

Ativar o CoreDNS não gerenciado

  • Método 1: Para um novo cluster ACK Serverless, selecione CoreDNS em Service Discovery durante a criação do cluster para ativar o componente CoreDNS não gerenciado.

  • Método 2: Em um cluster ACK Serverless existente, acesse a página de detalhes do cluster e selecione Operations > Add-ons. Na aba Networking, localize o componente CoreDNS e clique em Install. Consulte Manage add-ons para mais detalhes.

PrivateZone

O Alibaba Cloud DNS PrivateZone é um service privado de resolução de nomes de domínio oferecido no ambiente da Alibaba Cloud Virtual Private Cloud (VPC). Use o controlador do PrivateZone para monitorar recursos de Service e Endpoint em cada namespace de um cluster ACK Serverless em tempo real. O controlador interage com o servidor de API para sincronizar automaticamente os nomes de domínio dos recursos com o PrivateZone. Os pods em um cluster ACK Serverless podem usar o service de resolução DNS do PrivateZone para habilitar a descoberta de services do Kubernetes. Para mais informações, consulte Cluster ACK ServerlessService discovery based on Alibaba Cloud DNS PrivateZone.

O PrivateZone expõe seu service DNS por meio dos servidores DNS da VPC (por exemplo, 100.100.2.136 e 100.100.2.138). O diagrama abaixo ilustra como um pod cliente usa o PrivateZone.

image.png

Etapa

Descrição

O controlador do PrivateZone conecta-se ao servidor de API para observar eventos de criação e atualização de Services no cluster.

Ao detectar um evento de criação ou atualização de Service, o controlador do PrivateZone sincroniza essa informação com os registros DNS da zona autoritativa no PrivateZone.

Quando um pod cliente acessa um service upstream (TargetService), ele recupera primeiramente o endereço do servidor DNS no arquivo de configuração local (/etc/resolv.conf). Em seguida, envia uma consulta DNS para esse endereço a fim de obter o IP do TargetService.

Nesta solução, os endereços dos servidores DNS correspondem aos IPs dos servidores DNS da VPC (como 100.100.2.136 e 100.100.2.138). O servidor DNS recupera o registro de resolução correto do PrivateZone e o retorna ao cliente.

Após receber o endereço IP do service upstream (TargetService) do servidor DNS, o pod cliente envia requisições para esse endereço.

Ativar o PrivateZone

  • Método 1: Ao criar um novo cluster ACK Serverless, selecione PrivateZone em Service Discovery para ativar o componente PrivateZone.

  • Método 2: Para um cluster ACK Serverless existente, ative o componente PrivateZone definindo o parâmetro enablePrivateZone como true no ConfigMap eci-profile.

Perguntas frequentes

Como verificar se o CoreDNS gerenciado, o CoreDNS não gerenciado ou o PrivateZone está ativado?

  • CoreDNS gerenciado e não gerenciado

    Faça login no console do ACK. Acesse a página de detalhes do cluster e escolha Operations > Add-ons. Clique na aba Network. Se Installed aparecer no canto superior direito do cartão do componente, ele estará ativado.

  • PrivateZone

    Faça login no console do Alibaba Cloud DNS PrivateZone. Na aba Authoritative Zone, pesquise uma Zone pelo ID do cluster. Se encontrar uma zona cujo nome termine com o ID do cluster, o componente PrivateZone estará ativado.

Como verificar se um pod está usando o componente CoreDNS gerenciado, CoreDNS não gerenciado ou PrivateZone?

  • CoreDNS gerenciado e não gerenciado

    Execute o comando kubectl exec para acessar o pod e, em seguida, execute cat /etc/resolv.conf. Se o campo nameserver apontar para o endereço IP do cluster do Service kube-dns no namespace kube-system, o pod estará usando o componente CoreDNS gerenciado ou não gerenciado.

  • PrivateZone

    Execute o comando kubectl exec para acessar o pod e depois execute cat /etc/resolv.conf. Se o campo nameserver apontar para 100.100.2.136 e 100.100.2.138, o pod estará usando o componente PrivateZone. Nota: Estes endereços IP são apenas exemplos; seus endereços IP reais podem variar.

Documentos relacionados