Descubrimiento de servicios y DNS


En esta página, se describe cómo Google Kubernetes Engine (GKE) implementa el descubrimiento de servicios y el DNS del clúster.

Descubrimiento de servicios

En Kubernetes, el descubrimiento de servicios se implementa con nombres de servicio generados de forma automática que se asignan a la dirección IP del servicio. Los nombres de servicios siguen una especificación estándar: my-svc.my-namespace.svc.cluster-domain.example. Los Pods también pueden acceder a servicios externos por medio de sus nombres, como example.com. Si deseas obtener más información sobre cómo funciona DNS en Kubernetes, consulta DNS para servicios y Pods.

DNS de clúster en GKE

Los clústeres nuevos de Autopilot usan Cloud DNS y no puedes modificar el proveedor de DNS.

Para Standard, GKE proporciona las siguientes opciones de DNS de clúster para resolver los nombres de los servicios y los nombres externos:

  • kube-dns: un complemento de clúster que se implementa de forma predeterminada en todos los clústeres de GKE
  • Cloud DNS: una infraestructura de DNS de clúster administrada por la nube que aprovecha Cloud DNS y no requiere la administración de servidores DNS dentro del clúster, como kube-dns.

También puedes registrar tus servicios en el Directorio de servicios para GKE.

GKE también proporciona NodeLocal DNSCache como un complemento opcional que se puede usar con kube-dns o Cloud DNS.

kube-dns

kube-dns es el proveedor de DNS predeterminado para los clústeres estándar y el único proveedor de DNS para los clústeres de Autopilot que ejecutan versiones anteriores a 1.25.9-gke.400 y 1.26.4-gke.500.

kube-dns se ejecuta como un Deployment que programa los pods de kube-dns en nodos del clúster.

Para obtener más información sobre kube-dns, consulta Usa kube-dns.

Cloud DNS

Cloud DNS es el único proveedor de DNS para los clústeres Autopilot que ejecutan la versión 1.25.9-gke.400 y posteriores, y la versión 1.26.4-gke.500 y posteriores.

Cloud DNS proporciona la resolución de DNS del Pod y del servicio sin un proveedor de DNS alojado en el clúster como kube-dns. El controlador de Cloud DNS aprovisiona automáticamente registros DNS para Pods y servicios en Cloud DNS para ClusterIP, y servicios de nombre externo y sin interfaz gráfica.

Para obtener información sobre cómo configurar Cloud DNS, consulta Usar Cloud DNS para GKE.

NodeLocal DNSCache

NodeLocal DNSCache se ejecuta como un DaemonSet que programa un Pod de caché de DNS en cada nodo del clúster. Esta caché de DNS mejora la latencia de búsqueda de DNS, hace que los tiempos de búsqueda de DNS sean más coherentes y puede reducir la cantidad de consultas de DNS a kube-dns o Cloud DNS.

Para obtener información sobre cómo configurar NodeLocal DNSCache, consulta Configura NodeLocal DNSCache.

Descubrimiento de servicios fuera de un único clúster

Puedes configurar el descubrimiento de servicios más allá del permiso de un único clúster usando uno de los siguientes métodos.

Directorio de servicios para GKE

El Directorio de servicios para GKE proporciona una sola vista de los servicios en todas tus implementaciones de Kubernetes. El Directorio de servicios puede registrar servicios de GKE y de terceros en un solo registro. El Directorio de servicios es particularmente útil si deseas lo siguiente:

  • Un solo registro para las aplicaciones de Kubernetes y de terceros para que se detecten entre sí
  • Una herramienta de descubrimiento de servicios administrados
  • Almacenar metadatos sobre el servicio a los que otros clientes puedan acceder
  • Configurar permisos de acceso en un nivel por servicio

Los servicios del Directorio de servicios se pueden resolver mediante DNS, HTTP y gRPC. El Directorio de servicios está integrado en Cloud DNS y puede propagar registros de Cloud DNS que coinciden con los servicios del Directorio de servicios.

Si deseas obtener más información, consulta Configura el Directorio de servicios para GKE.

/etc/resolv.conf

Para los pods que usan la Política de DNS ClusterFirst, el valor de /etc/resolv.conf depende de las funciones habilitadas en el clúster:

Cloud DNS para GKE NodeLocal DNSCache Valor /etc/resolv.conf
Habilitado Enabled 169.254.20.10
Habilitado Inhabilitado 169.254.169.254
Inhabilitado Habilitado Dirección IP del servicio de kube-dns
Inhabilitado Inhabilitado Dirección IP del servicio de kube-dns

¿Qué sigue?

  • Aprende a usar Cloud DNS para GKE.
  • Obtén información sobre cómo proporcionar una resolución de DNS escalable para clústeres que requieren grandes volúmenes de consultas de DNS mediante NodeLocal DNSCache.