Configurar DNS para um cluster

Neste documento, você verá como configurar o DNS para um cluster de administrador ou de usuário.

A configuração de DNS de um cluster é mantida em um recurso personalizado de ClusterDNS chamado default. Esse é um recurso de todo o cluster; ou seja, sem namespace.

Ver o recurso ClusterDNS

Para ver o recurso ClusterDNS:

kubectl --kubeconfig CLUSTER_KUBECONFIG get clusterdns default --output yaml

Substitua CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster.

A configuração de DNS está na seção spec. Se a seção spec estiver vazia ou ausente, o cluster usará uma configuração padrão do Kubernetes CoreDNS.

Alterar a configuração de DNS

Crie um manifesto para um recurso ClusterDNS chamado default. Preencha o spec como quiser. Exemplo:

apiVersion: networking.gke.io/v1alpha1
kind: ClusterDNS
metadata:
  name: default
spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 8.8.4.4
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.0.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: private

Salve o manifesto em um arquivo chamado my-dns.yaml e aplique o recurso ao cluster:

kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f my-dns.yaml

Especificação do ClusterDNS

spec.upstreamNameservers

Uma matriz de objetos, cada uma com um endereço IP de servidor e, opcionalmente, uma porta de servidor. O valor padrão da porta do servidor é 53.

Os servidores de nomes upstream padrão. Por padrão, as solicitações de domínios que não são de cluster são encaminhadas para esse conjunto de servidores. Exemplo:

spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 1.2.3.4
    serverPort: 54

Se você não especificar nenhum valor para upstreamNameservers, o provedor de DNS usará o arquivo /etc/resolve.conf no nó para encontrar a lista de servidores de nomes upstream.

spec.domains

Configuração para domínios específicos. Isso permite substituir a configuração em upstreamNameservers.

Use esta seção para configurar diferentes servidores de nomes upstream para domínios específicos, separadamente dos servidores de nomes upstream padrão.

Também é possível ativar o registro de consultas de um domínio. Isso pode ser feito para qualquer domínio especificado ou o domínio do cluster, cluster.local.

Exemplo:

spec:
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 203.0.113.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 198.51.100.1
    - serverIP: 198.51.100.2
      serverPort: 50000
  - name: cluster.local
    queryLogging: true

spec.googleAccess

String. Se quiser que os domínios do Google sejam resolvidos para endereços IP de acesso privado, defina-o como "private". Se você quiser que os domínios do Google sejam resolvidos para endereços IP de acesso restrito, defina-o como restricted. Se você não quiser tratamento especial para domínios do Google, defina-o como default ou remova-o. Se você quiser mais informações, consulte Como configurar o Acesso privado do Google para hosts locais.

Exemplo:

spec:
  googleAccess: private

spec.orderPolicy

String. Se você quiser especificar a política de ordenamento pela qual os servidores upstream são selecionados. O padrão é "random". Os tipos aceitos são "random","round_robin" e "sequential". Essa política de pedidos também será aplicada a domínios definidos. Consulte os documentos do coredns para mais informações sobre policy e para que serve cada configuração.

Exemplo:

spec:
  orderPolicy: sequential