As cargas de trabalho em um cluster Kubernetes usam o Domain Name System (DNS) para resolver nomes de serviço em endereços IP. Este tópico explica como funciona a resolução de DNS em clusters do Alibaba Cloud Container Compute Service (ACS) e apresenta o CoreDNS, resolvedor de DNS padrão pré-instalado em todos os clusters ACS.
Como funciona a resolução de DNS
Ao iniciar um pod, o kubelet define as configurações de DNS dele com dois parâmetros de inicialização: --cluster-dns=<dns-service-ip> especifica o endereço IP do servidor DNS do cluster, enquanto --cluster-domain=<default-local-domain> define o sufixo de domínio base.
O ACS implanta o CoreDNS como resolvedor DNS do cluster. Um Service chamado kube-dns expõe o CoreDNS a todos os pods do cluster, e dois pods denominados coredns processam as solicitações de resolução.
A configuração de DNS de cada pod é gravada no arquivo /etc/resolv.conf:
nameserver 172.xx.x.xx
search kube-system.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
Domínio de busca
O campo search permite que os pods resolvam nomes curtos de serviço sem especificar nomes de domínio totalmente qualificados. Por exemplo, um pod no namespace kube-system resolve nginx diretamente — o resolvedor expande automaticamente a consulta para nginx.kube-system.svc.cluster.local. A configuração options ndots:5 determina quando essa expansão ocorre: se uma consulta contiver menos de 5 pontos, o resolvedor tenta cada domínio de busca em ordem antes de recorrer a uma pesquisa absoluta.
Fluxo de resolução de DNS
Figura 1. Como funciona a resolução de DNS 
|
Número |
Descrição |
|
① |
Um pod cliente tenta acessar o Service Nginx e envia a consulta DNS ao nameserver definido em |
|
② |
O pod cliente conecta-se a |
Para obter detalhes sobre as opções de configuração, consulte Configure resolução de DNS.
Visão geral do CoreDNS
O CoreDNS opera com base em plug-ins. Cada plug-in executa uma função específica de DNS — desde a resolução de nomes de serviço internos do cluster até o encaminhamento de consultas externas, personalização de registros de host, configuração de registros CNAME e definição de regras de reescrita. Essa arquitetura baseada em plug-ins permite adaptar o comportamento do DNS às necessidades da carga de trabalho sem modificar o resolvedor principal.
O ACS usa o CoreDNS para implementar a descoberta de serviços nos clusters. O CoreDNS resolve tanto nomes de domínio internos (dentro do cluster) quanto externos.
A Cloud Native Computing Foundation (CNCF), mesma organização responsável pelo Kubernetes, mantém o CoreDNS.
Próximos passos
Configure resolução de DNS — personalize as configurações de
/etc/resolv.confe as políticas de DNS dos seus podsConfigure CoreDNS não gerenciado — ajuste as configurações e os plug-ins do CoreDNS para o seu cluster