Visão geral da descoberta de serviços e do DNS

Neste tópico, descrevemos como o GKE na AWS interage com os serviços de nome de domínio (DNS) na nuvem privada virtual (VPC) da AWS e nos clusters.

DNS da VPC da AWS

Nesta seção, descrevemos como configurar uma VPC para o GKE na AWS.

Como configurar o DNS da VPC

O GKE na AWS é compatível com várias configurações de DNS na VPC da AWS. Você define as configurações de DNS da VPC ao criar um conjunto de opções de DHCP. Para mais informações, consulte Suporte a DNS para sua VPC.

É possível configurar as seguintes opções:

Nomes dos hosts DNS
Isso define se as instâncias do EC2 com endereços IP públicos recebem nomes de host DNS públicos correspondentes. Defina esse valor usando o campo enableDNSHostnames no conjunto de opções de DHCP da VPC. Para mais informações, consulte Nomes de host DNS da VPC e Conjuntos de opções DHCP para sua VPC.
Nomes de host DNS do EC2
Isso define se as instâncias do EC2 recebem um nome de host DNS padrão ou um nome de host DNS personalizado.
Servidor DNS
Se o conjunto de opções de DHCP da VPC usa o servidor DNS Route53 da AWS (com a opção AmazonProvidedDNS) ou um servidor DNS hospedado.

Como usar o DNS hospedado

Para usar um DNS hospedado, seu plano de controle e os grupos de segurança do pool de nós precisam permitir o tráfego de saída na porta TCP e UDP 53.

Configurações de DNS da VPC compatíveis

A tabela abaixo inclui configurações de DNS compatíveis com o GKE na AWS:

Ativar nomes de host DNS Nomes de host DNS do EC2 Servidor DNS Compatível?
true Padrão Rota53 da AWS Sim
false Padrão Rota53 da AWS Sim
true Personalizado Rota53 da AWS Sim
false Personalizado Rota53 da AWS Sim
true Personalizado Hospedado Sim
false Personalizado Hospedado Sim
true Padrão Hospedado Não
false Padrão Hospedado Não

Descoberta de serviços

A descoberta de serviços é o processo em que as cargas de trabalho descobrem serviços sem saber o endereço IP deles. Nesta seção, descrevemos como o GKE na AWS implementa a descoberta de serviços e o DNS gerenciado.

O Kubernetes gera automaticamente nomes de serviço que usam a seguinte especificação:

service.namespace.svc.cluster.local

Em que:

  • service: o nome do serviço
  • namespace: o namespace do serviço

As cargas de trabalho também acessam serviços externos, como example.net, usando nomes de DNS. Para mais informações sobre o comportamento do DNS no Kubernetes, consulte DNS para serviços e pods.

CoreDNS

O GKE na AWS usa o CoreDNS para resolver nomes DNS nos clusters. O CoreDNS é executado como uma implantação redundante e escalonada no namespace kube-system. A implantação do CoreDNS inclui um serviço que agrupa os pods do CoreDNS e atribui a eles um único endereço IP. A implantação do CoreDNS é escalonada com o tamanho e o uso do cluster.

NodeLocal DNSCache

O GKE na AWS usa o NodeLocal DNSCache para melhorar o desempenho da busca DNS. O NodeLocal DNSCache é executado como um DaemonSet em cada nó do cluster. Quando um pod faz uma solicitação DNS, a solicitação vai primeiro para o cache DNS no mesmo nó. Se o cache não conseguir resolver a solicitação DNS, ele encaminhará a solicitação para:

  • O CoreDNS para um nome interno, por exemplo foo.bar.svc.cluster.local
  • o servidor DNS da Amazon, para um nome externo, ´por exemplo, example.net

A seguir