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

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.

CoreDNS no Serviço Kubernetes do Azure

CoreDNS é o serviço DNS padrão no Serviço Kubernetes do Azure (AKS), fornecendo resolução interna de nomes e descoberta de serviço para cargas de trabalho em execução no cluster. Ele opera como um conjunto de pods no namespace kube-system e está totalmente integrado à rede Kubernetes.

Quando um pod no AKS emite uma consulta DNS, como resolver o nome de outro serviço, a solicitação é roteada 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 documento fornece uma visão geral do que é LocalDNS e seus benefícios no AKS. Não inclui instruções de configuração. Para obter orientação sobre como habilitar e configurar o LocalDNS, consulte o guia de instruções do 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 lidar com consultas DNS localmente, esse proxy reduz o tráfego para os pods de complemento CoreDNS, melhorando a confiabilidade geral do DNS e o desempenho 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.

Capacidades chave

  • Redução da latência de resolução de DNS: Cada nó AKS executa um 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 de DNS personalizável: Você pode usar kubeDNSOverrides e vnetDNSOverrides controlar o comportamento do DNS no cluster.

  • Evite corridas de conntrack e exaustão da mesa de 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.

  • Conexão atualizada para TCP: A conexão do localdns cache com o serviço CoreDNS do cluster usa TCP (Transmission Control Protocol). 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.

  • Caching: O plugin de cache LocalDNS pode ser configurado com as definições de "serveStale" e "Tempo de Vida" (TTL). serveStale, serveStaleDurationInSecondse cacheDurationInSeconds os parâmetros podem ser configurados para alcançar resiliência de DNS, mesmo durante uma interrupção de DNS upstream.

  • Controlo do protocolo: Você pode definir 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 perfeita: não requer alterações nas conexões de aplicativos 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ó

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.

Próximos passos

Para saber como ativar o LocalDNS e definir suas configurações no cluster AKS, consulte o guia de instruções do LocalDNS.

Para saber mais sobre os conceitos de rede principal, consulte Conceitos de rede para aplicações no AKS.