Configurar el DNS de un clúster

En este documento se explica cómo configurar el DNS de un clúster de administrador o de usuario.

La configuración de DNS de un clúster se encuentra en un recurso personalizado ClusterDNS llamado default. Se trata de un recurso de todo el clúster, es decir, no tiene espacio de nombres.

Ver el recurso ClusterDNS

Para ver el recurso ClusterDNS, haz lo siguiente:

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

Sustituye CLUSTER_KUBECONFIG por la ruta del archivo kubeconfig del clúster.

La configuración de DNS se encuentra en la sección spec. Si la sección spec está vacía o no aparece, el clúster utiliza una configuración predeterminada de Kubernetes CoreDNS.

Cambiar la configuración de DNS

Crea un manifiesto para un recurso ClusterDNS llamado default. Rellena el spec como quieras. Por ejemplo:

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

Guarda el manifiesto en un archivo llamado my-dns.yaml y aplica el recurso al clúster:

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

Especificación de ClusterDNS

spec.upstreamNameservers

Una matriz de objetos, cada uno de los cuales tiene una dirección IP de servidor y, opcionalmente, un puerto de servidor. El valor predeterminado del puerto del servidor es 53.

Los servidores de nombres upstream predeterminados. Las solicitudes de dominios que no pertenecen al clúster se reenvían a este conjunto de servidores de forma predeterminada. Por ejemplo:

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

Si no especifica ningún valor para upstreamNameservers, el proveedor de DNS usará el archivo /etc/resolv.conf del nodo para buscar la lista de servidores de nombres ascendentes.

spec.domains

Configuración de dominios específicos. Esto permite anular la configuración en upstreamNameservers.

Puedes usar esta sección para configurar diferentes servidores de nombres upstream para dominios concretos, por separado de los servidores de nombres upstream predeterminados.

También puedes activar el registro de consultas de un dominio. Puedes hacerlo con cualquier dominio especificado o con el dominio del clúster, cluster.local.

Por ejemplo:

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

Cadena. Si quieres que los dominios de Google se resuelvan en direcciones IP de acceso privado, define este valor como "private". Si quieres que los dominios de Google se resuelvan en direcciones IP de acceso restringido, define este valor como restricted. Si no quieres que los dominios de Google reciban un tratamiento especial, asigna el valor default a este campo o elimínalo. Para obtener más información, consulta el artículo Configurar Acceso privado de Google para hosts on-premise.

Por ejemplo:

spec:
  googleAccess: private

spec.orderPolicy

Cadena. Si quieres especificar la política de ordenación por la que se seleccionan los servidores upstream. El valor predeterminado es "random" (ADMITE VALORES NULL). Los tipos admitidos son "random","round_robin" y "sequential". Ten en cuenta que esta política de pedidos también se aplicará a los dominios definidos. Consulta la documentación de coredns para obtener más información sobre policy y lo que hace cada configuración.

Por ejemplo:

spec:
  orderPolicy: sequential