Configura un DNS para un clúster

En este documento, se muestra cómo configurar DNS para un clúster de administrador o de usuario.

La configuración de DNS para un clúster se guarda en un recurso personalizado ClusterDNS llamado default. Este es un recurso de todo el clúster; es decir, sin espacio de nombres.

Visualizar el recurso ClusterDNS

Para ver el recurso ClusterDNS, haz lo siguiente:

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

Reemplaza CLUSTER_KUBECONFIG por la ruta de acceso 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 falta, el clúster usa una configuración predeterminada de CoreDNS de Kubernetes.

Cambia la configuración de DNS

Crea un manifiesto para un recurso ClusterDNS llamado default. Completa el spec como desees. 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.0.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

La especificación ClusterDNS

spec.upstreamNameservers

Un array de objetos, cada uno de los cuales tiene una dirección IP de servidor y, de forma opcional, un puerto de servidor. El valor predeterminado para el puerto del servidor es 53.

Los servidores de nombres ascendentes predeterminados Las solicitudes de dominios que no son de 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 especificas ningún valor para upstreamNameservers, el proveedor de DNS usa el archivo /etc/resolve.conf en el nodo a fin de buscar la lista de servidores de nombres ascendentes.

spec.domains

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

Puedes usar esta sección para configurar diferentes servidores de nombres ascendentes para dominios particulares, separados de los servidores de nombres ascendentes predeterminados.

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

Por ejemplo:

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. Si quieres que los dominios de Google se resuelvan en direcciones IP de acceso privado, configúralo como "private". Si quieres que los dominios de Google se resuelvan en direcciones IP de acceso restringido, configura esto como restricted. Si no quieres ningún tratamiento especial para los dominios de Google, configura esto como default o quítalo. Si deseas obtener más información, consulta Configura el Acceso privado a Google de los hosts locales.

Por ejemplo:

spec:
  googleAccess: private

spec.orderPolicy

String. Si deseas especificar la política de pedido mediante la cual se seleccionan los servidores upstream. El valor predeterminado es "random". 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 los documentos de coredns para obtener más información sobre policy y qué hace cada configuración.

Por ejemplo:

spec:
  orderPolicy: sequential