Resolução DNS no Serviço Kubernetes do Azure (AKS)

Aplica-se a: ✔️ AKS Automatic ✔️ AKS Standard

A resolução do DNS (Sistema de Nomes de Domínio) é um componente crítico no Serviço Kubernetes do Azure (AKS), permitindo que pods e serviços se comuniquem usando nomes legíveis por humanos em vez de endereços IP. AKS fornece serviços DNS integrados para garantir uma resolução de nomes sem falhas tanto para recursos de cluster internos como para pontos de extremidade externos. Compreender como o DNS funciona no AKS ajuda os operadores e desenvolvedores de cluster a garantir conectividade confiável, otimizar o desempenho e solucionar problemas de rede de forma eficaz.

O AKS Automatic é a predefinição recomendada, pronta para produção, para a maioria das cargas de trabalho do AKS. Clusters automáticos do AKS vêm pré-configurados com LocalDNS para melhorar o desempenho do DNS, reduzir a pressão dos conntracks e aumentar a resiliência sem necessidade de configuração adicional.

No AKS Standard, o LocalDNS é opcional e pode ativá-lo e configurá-lo separadamente.

Para mais informações sobre o AKS Automatic, veja O que é o AKS Automatic?

CoreDNS no Serviço Kubernetes do Azure

CoreDNS é o serviço DNS padrão no AKS. Fornece resolução interna de nomes e descoberta de serviços para cargas de trabalho em execução no cluster. Opera como um conjunto de pods no kube-system namespace e está fortemente integrado com a rede Kubernetes.

Quando um pod no AKS emite uma consulta DNS, como resolver o nome de outro serviço, o pedido vai para os pods CoreDNS. Esses pods processam a consulta e retornam o endereço IP apropriado ou encaminham a solicitação para um servidor DNS upstream para domínios externos.

Essa arquitetura garante um equilíbrio entre flexibilidade e segurança operacional em um ambiente gerenciado. Para obter detalhes sobre como personalizar o CoreDNS no AKS, consulte o guia de personalização do CoreDNS.

Para obter informações sobre o projeto CoreDNS, consulte a página do projeto upstream CoreDNS.

LocalDNS in Azure Kubernetes Service

Observação

Este artigo oferece uma visão geral do que é o LocalDNS e dos seus benefícios no AKS.

Para o AKS Automatic, o LocalDNS está pré-configurado.

Para o AKS Standard, consulte o guia prático do LocalDNS para orientações sobre como ativar e configurar o LocalDNS.

Visão geral

O LocalDNS é um recurso avançado do Serviço Kubernetes do Azure (AKS) que implanta um proxy DNS (Sistema de Nomes de Domínio) em cada nó para fornecer uma resolução DNS altamente resiliente e de baixa latência. Ao tratar as consultas DNS localmente, este proxy reduz o tráfego para os pods adicionais CoreDNS, melhorando a fiabilidade e o desempenho global do DNS no cluster. LocalDNS é especialmente benéfico em grandes clusters ou ambientes com altos volumes de consulta DNS, onde a resolução DNS centralizada pode se tornar um gargalo.

Quando o LocalDNS está ativado, o AKS implanta um cache DNS local como serviço systemd em cada nó. Os pods no nó enviam suas consultas DNS para esse cache local, permitindo uma resolução mais rápida reduzindo os saltos de rede. Esta abordagem também minimiza o uso de conntrack tabelas, reduzindo o risco de exaustão das tabelas. Além disso, se o DNS upstream ficar indisponível, o LocalDNS poderá continuar a fornecer respostas armazenadas em cache por um período configurável, ajudando a manter a conectividade do pod e a confiabilidade do serviço.

Diagrama que mostra a arquitetura LocalDNS.

LocalDNS e AKS Automático

O AKS Automatic pré-configura automaticamente o LocalDNS como parte das suas predefinições prontas para produção. Não precisas de executar um comando de ativação separado nos clusters automáticos do AKS.

Use este artigo para compreender como o LocalDNS funciona e por que melhora o comportamento do DNS para cargas de trabalho do AKS. Se precisar de passos de ativação e configuração para o AKS Standard, use o guia prático do LocalDNS.

Capacidades chave

  • Latência de resolução de DNS reduzida: Cada nó do AKS executa o serviço LocalDNS systemd. As cargas de trabalho em execução no nó enviam consultas DNS para este serviço, que as resolve localmente, reduzindo os saltos de rede e acelerando as pesquisas de DNS.
  • Comportamento DNS personalizável: Utilizar kubeDNSOverrides e vnetDNSOverrides para controlar o comportamento DNS no cluster.
  • Evite corridas conntrack e esgotamento das tabelas conntrack: Os pods enviam consultas DNS para o serviço LocalDNS no mesmo nó sem criar novas conntrack entradas de tabela. Ignorar o rastreamento de conexão ajuda a reduzir as corridas de conntrack e evita que as entradas DNS UDP (User Datagram Protocol) preencham conntrack tabelas. Esta otimização evita conexões interrompidas e rejeitadas causadas pelo esgotamento da tabela e condições de corrida.
  • Ligação atualizada para TCP: A ligação da localdns cache para o serviço CoreDNS do cluster utiliza o Protocolo de Controlo de Transmissão (TCP). O TCP permite o rebalanceamento da conexão e remove as entradas da conntrack tabela quando o servidor fecha a conexão (em contraste com as conexões UDP, que têm um tempo limite padrão de 30 segundos). Os aplicativos não precisam de alterações, porque o localdns serviço ainda escuta o tráfego UDP.
  • Armazenamento em cache: Pode configurar o plugin de cache LocalDNS com as definições de serveStale e de Time to Live (TTL). Defina os parâmetros serveStale, serveStaleDurationInSeconds e cacheDurationInSeconds para garantir a resiliência do DNS, mesmo durante uma falha no DNS ascendente.
  • Controlo do protocolo: Defina o protocolo de consulta DNS (como PreferUDP ou ForceTCP) para cada domínio. Essa flexibilidade permite otimizar o tráfego DNS para domínios específicos ou atender aos requisitos de rede.

Outros benefícios e considerações

Benefícios Considerações
Melhor escalabilidade: reduz a carga em pods CoreDNS centralizados Sobrecarga mínima de recursos: usa uma pequena quantidade de CPU e memória em cada nó
Integração fluida: Não requer alterações nas ligações de aplicações existentes Alterações de configuração: as atualizações exigem atualizações de imagem de nó, o que pode causar interrupções temporárias
Bloquear domínios de pesquisa inválidos: impede consultas DNS inválidas no nível do nó Planeamento da disponibilidade: As equipas que utilizam o AKS Standard devem avaliar se o desempenho e a resiliência do DNS justificam a ativação do LocalDNS

Comportamento do AKS Automatic e do AKS Standard

Modo de cluster Comportamento LocalDNS
AKS Automático Pré-configurado
Padrão AKS Optional

Ao usar o LocalDNS, você obtém uma resolução de DNS mais rápida e confiável para suas cargas de trabalho, reduz o risco de interrupções relacionadas ao DNS e ganha mais controle sobre o tráfego DNS em seu ambiente AKS.