Todos os produtos
Search
Central de documentação

Container Compute Service:Políticas de resolução DNS e políticas de cache

Última atualização: Jun 29, 2026

Este tópico descreve as políticas de resolução do Domain Name System (DNS) e as políticas de cache para clusters do Alibaba Cloud Container Compute Service (ACS).

Pipelines de resolução DNS

Os diagramas a seguir ilustram o pipeline de resolução DNS para dois cenários.

Aplicações não containerizadas em instâncias do Elastic Compute Service (ecs)

Por exemplo, uma aplicação chamada App executa em uma instância ecs, conforme mostra a figura abaixo.

DNS解析链路1.png

Aplicações containerizadas em pods com a política DNS ClusterFirst

Neste cenário, uma aplicação chamada App roda dentro de um pod em um cluster Kubernetes, como apresentado na imagem seguinte.

DNS解析链路2.png

Políticas de resolução

Lado do cliente

As interfaces fornecidas pela glibc processam as consultas DNS originadas dos pods. O arquivo /etc/resolv.conf controla a forma como a glibc realiza a resolução DNS. A tabela a seguir lista os parâmetros configuráveis e seus valores padrão em diferentes ambientes.

Parâmetro

Descrição

Padrão (glibc)

ecs

Pod ClusterFirst

Pod Default

Rede do host + Pod Default

nameserver

Servidor DNS responsável por resolver nomes de domínio.

Nenhum

Servidores DNS da VPC ②

IP do cluster CoreDNS ③

Servidores DNS da VPC

Servidores DNS da VPC

search

Sufixos adicionados a nomes de domínio não FQDN antes da resolução.

Nenhum

Nenhum

<ns>.svc.cluster.local svc.cluster.local cluster.local

Nenhum

Nenhum

ndots:n

Adiciona sufixos de busca antes da resolução se o nome de domínio tiver menos pontos que este valor. Caso tenha mais pontos, o sistema trata o nome como um domínio totalmente qualificado (FQDN) e o resolve diretamente.

1

1

5

1

1

timeout:n

Tempo limite em segundos para cada tentativa de resolução DNS.

5

2

5

5

2

attempts:n

Número máximo de tentativas quando ocorre falha na resolução DNS.

2

3

2

2

3

rotate

Envia consultas DNS aos nameservers em ordem round-robin.

Desativado

Ativado

Desativado

Desativado

Ativado

single-request-reopen

Fecha o socket após a primeira solicitação e abre um novo para a segunda, caso duas requisições DNS usem o mesmo socket.

Desativado

Ativado

Desativado

Desativado

Ativado

A tabela abaixo detalha o comportamento de roteamento de consultas para cada política DNS.

Política DNS

Comportamento

ClusterFirst

Envia consultas DNS ao CoreDNS. O CoreDNS resolve consultas correspondentes ao sufixo de domínio do cluster e encaminha todas as demais para nameservers upstream. Esta é a política padrão quando não há especificação de dnsPolicy.

Default

O pod herda as configurações DNS da instância ecs onde executa. As consultas DNS vão diretamente aos servidores DNS da VPC, sem passar pelo CoreDNS.

Nota

"Default" não é a política DNS padrão. O Kubernetes utiliza ClusterFirst quando dnsPolicy não está definido.

① O parâmetro attempts aplica-se apenas quando o servidor retorna SERVFAIL, NOTIMP ou REFUSED, ou quando retorna NOERROR sem resultados de resolução. Para mais detalhes, consulte Introdução ao parâmetro attempts.

② Os servidores DNS da VPC atuam como nameservers padrão para instâncias ecs na virtual private cloud (VPC). Seus endereços IP são 100.100.2.136 e 100.100.2.138. Eles resolvem nomes de domínio autoritativos e domínios adicionados ao Alibaba Cloud DNS PrivateZone.

③ O IP do cluster CoreDNS corresponde ao endereço IP do Serviço kube-dns no namespace kube-system. O Serviço kube-dns encaminha consultas DNS ao CoreDNS para nomes de domínio internos, domínios autoritativos e domínios registrados no Alibaba Cloud DNS PrivateZone.

Nota

Para obter mais informações sobre a configuração do resolv.conf, consulte resolv.conf.

Ambientes não padronizados

A configuração DNS do lado do cliente descrita acima vale para ambientes que utilizam glibc. Os ambientes listados a seguir apresentam comportamentos distintos.

Alpine Linux (musl libc)

O Alpine Linux substitui a glibc pela musl libc, o que introduz diversas diferenças na resolução DNS:

  • O /etc/resolv.conf não suporta single-request nem single-request-reopen.

  • Versões até o Alpine 3.3 não aceitam o parâmetro search para domínios de busca, causando falhas na descoberta de serviços.

  • A musl libc envia consultas paralelamente a todos os nameservers definidos no /etc/resolv.conf, impedindo que o NodeLocal DNSCache otimize a resolução DNS.

  • Consultas A e AAAA são enviadas simultaneamente pela musl libc através do mesmo socket. Em versões mais antigas do kernel, isso resulta em perda de pacotes na porta conntrack.

Para mais informações, acesse Diferenças funcionais da musl libc em relação à glibc.

Golang e Node.js

Aplicações desenvolvidas em Golang ou Node.js podem utilizar um resolvedor DNS nativo em vez da glibc. Isso pode gerar um comportamento de resolução DNS significativamente diferente. Verifique a implementação de resolução DNS da sua aplicação caso observe comportamentos inesperados.

Servidores DNS internos no cluster

Por padrão, o CoreDNS herda o arquivo /etc/resolv.conf da instância ecs que o hospeda. Em seguida, o CoreDNS utiliza o plugin nativo forward para encaminhar consultas DNS upstream.

A tabela a seguir apresenta os parâmetros do plugin forward e seus valores padrão. Para a referência completa, consulte forward.

Parâmetro

Descrição

Padrão (CoreDNS)

Padrão (NodeLocal DNSCache)

prefer_udp

Utiliza UDP para comunicação com o servidor upstream.

Ativado

Desativado

force_tcp

Utiliza TCP para comunicação com o servidor upstream.

Desativado

Ativado

max_fails

Quantidade de verificações de integridade consecutivas com falha antes de considerar o servidor upstream como não saudável.

2

2

expire

Tempo de manutenção da conexão ativa com o servidor upstream.

10s

10s

policy

Política de seleção de servidores upstream.

random

random

health_check

Intervalo entre verificações de integridade do servidor upstream.

0.5s

0.5s

max_concurrent

Limite de consultas simultâneas aos servidores upstream.

Nenhum

Nenhum

dial timeout

Tempo limite de conexão para servidores upstream. Diminui dinamicamente com base na duração real da conexão.

30s

30s

read timeout

Tempo limite de solicitação para servidores upstream.

2s

2s

Políticas de cache

Lado do cliente

A política de cache DNS no lado do cliente varia conforme a configuração do container e da aplicação. Configure o cache do lado do cliente de acordo com suas necessidades.

Servidores DNS internos no cluster

O CoreDNS emprega o plugin cache para armazenar resultados de resolução DNS. A tabela abaixo relaciona os parâmetros do plugin de cache e seus valores padrão no ACS.

Parâmetro

Descrição

Padrão (CoreDNS)

Padrão (CoreDNS no ACS)

TTL Máximo de sucesso

Tempo de vida (TTL) máximo para resoluções DNS bem-sucedidas em cache.

3600s

30s

TTL Mínimo de sucesso

TTL mínimo para resoluções DNS bem-sucedidas em cache.

5s

5s

Capacidade de sucesso

Quantidade máxima de resultados de resolução DNS bem-sucedidos mantidos em cache.

9984

9984

TTL Máximo de negação

TTL máximo para resoluções DNS com falha em cache.

1800s

30s

TTL Mínimo de negação

TTL mínimo para resoluções DNS com falha em cache.

5s

5s

Capacidade de negação

Quantidade máxima de resultados de resolução DNS com falha mantidos em cache.

9984

9984

TTL ServerError

TTL máximo para resultados DNS retornados por servidores upstream não saudáveis.

5s

0s. Se a versão do CoreDNS for anterior a 1.8.4.2, o padrão é 5s.

serve_stale

Fornece entradas de cache obsoletas quando o servidor upstream estiver inacessível.

Desativado

Desativado

Nota

O TTL efetivo aplicado a uma entrada em cache segue estas regras:

  • Caso o TTL do registro DNS exceda o TTL máximo, o sistema adota o TTL máximo.

  • Se o TTL do registro DNS for inferior ao TTL mínimo, prevalece o TTL mínimo.

  • Quando o TTL do registro DNS estiver entre os valores mínimo e máximo, utiliza-se o próprio TTL do registro.

Otimizar a resolução DNS

Modifique o arquivo YAML do pod ou o ConfigMap do CoreDNS para ajustar o comportamento da resolução DNS.

Usar servidores DNS da VPC diretamente

Defina dnsPolicy: Default para ignorar o CoreDNS e resolver nomes de domínio diretamente pelos servidores DNS da VPC. O pod herdará as configurações DNS da instância ecs que o hospeda.

apiVersion: v1
kind: Pod
metadata:
  name: example
  namespace: default
spec:
  containers:
  - image: registry.cn-hangzhou.aliyuncs.com/example-ns/example:v1
    name: example
  # Set the dnsPolicy parameter to Default.
  dnsPolicy: Default

# The /etc/resolv.conf file in the pod.
# cat /etc/resolv.conf
nameserver 100.100.2.136
nameserver 100.100.2.138

Melhorar a tolerância a falhas para pods Default

Ao definir dnsPolicy: Default, o arquivo /etc/resolv.conf do pod omite as opções rotate, single-request-reopen, timeout:2 e attempts:3, presentes por padrão nas instâncias ecs. Sem essas opções, aumenta a probabilidade de falha na resolução DNS durante instabilidades de rede.

Adicione essas opções via dnsConfig para igualar o comportamento da instância ecs:

apiVersion: v1
kind: Pod
metadata:
  name: example
  namespace: default
spec:
  containers:
  - image: registry.cn-hangzhou.aliyuncs.com/example-ns/example:v1
    name: example
  # Set the dnsPolicy parameter to Default.
  dnsPolicy: Default
  # Add the following options.
  dnsConfig:
    options:
    - name: timeout
      value: "2"
    - name: attempts
      value: "3"
    - name: rotate
    - name: single-request-reopen

# After adding the options, redeploy the pod to apply the changes.
# cat /etc/resolv.conf
nameserver 100.100.2.136
nameserver 100.100.2.138
options rotate single-request-reopen timeout:2 attempts:3