Configure o DNS para um cluster

Este documento mostra como configurar o DNS para um cluster de administrador ou um cluster de utilizador.

A configuração de DNS para um cluster é mantida num recurso personalizado ClusterDNS denominado default. Este é um recurso ao nível do cluster, ou seja, não tem espaço de nomes.

Veja o recurso ClusterDNS

Para ver o recurso ClusterDNS:

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

Substitua CLUSTER_KUBECONFIG pelo caminho do ficheiro kubeconfig do cluster.

A configuração de DNS encontra-se na secção spec. Se a secção spec estiver vazia ou em falta, o cluster usa uma configuração CoreDNS do Kubernetes predefinida.

Altere a configuração de DNS

Crie um manifesto para um recurso ClusterDNS denominado default. Preencha o spec conforme pretendido. Por 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.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: private

Guarde o manifesto num ficheiro denominado my-dns.yaml e aplique o recurso ao cluster:

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

A especificação ClusterDNS

spec.upstreamNameservers

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

Os servidores de nomes a montante predefinidos. Os pedidos de domínios não pertencentes a clusters são encaminhados para este conjunto de servidores por predefinição. Por exemplo:

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

Se não especificar valores para upstreamNameservers, o fornecedor de DNS usa o ficheiro /etc/resolv.conf no nó para encontrar a lista de servidores de nomes a montante.

spec.domains

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

Pode usar esta secção para configurar diferentes servidores de nomes upstream para domínios específicos, separadamente dos servidores de nomes upstream predefinidos.

Também pode ativar o registo de consultas para um domínio. Pode fazê-lo para qualquer domínio especificado ou para o domínio do cluster, cluster.local.

Por exemplo:

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

spec.googleAccess

String. Se quiser que os domínios Google sejam resolvidos para endereços IP de acesso privado, defina esta opção como "private". Se quiser que os domínios Google sejam resolvidos para endereços IP de acesso restrito, defina esta opção como restricted. Se não quiser tratamento especial para domínios Google, defina esta opção como default ou remova-a. Para mais informações, consulte o artigo Configurar o acesso privado à Google para anfitriões no local.

Por exemplo:

spec:
  googleAccess: private

spec.orderPolicy

String. Se quiser especificar a política de ordenação pela qual os servidores a montante são selecionados. A predefinição é "random". Os tipos suportados são "random","round_robin" e "sequential". Tenha em atenção que esta política de ordenação também se aplica aos domínios definidos. Consulte a documentação do coredns para obter mais informações sobre o policy e o que cada configuração faz.

Por exemplo:

spec:
  orderPolicy: sequential