En esta página se describe cómo implementa Google Kubernetes Engine (GKE) el descubrimiento de servicios y el DNS de clúster.
Descubrimiento de servicios
En Kubernetes, el descubrimiento de servicios se implementa con nombres de servicio generados automáticamente que se asignan a la dirección IP del servicio. Los nombres de los servicios siguen una especificación estándar:
my-svc.my-namespace.svc.cluster.local
. Los pods también pueden acceder a servicios externos a través de sus nombres, como example.com
. Para obtener más información sobre cómo funciona el DNS en Kubernetes, consulta DNS para servicios y pods.
DNS de clúster en GKE
Los clústeres de Autopilot nuevos usan Cloud DNS y no puedes modificar el proveedor de DNS.
En el caso de Estándar, GKE proporciona las siguientes opciones de DNS de clúster para resolver nombres de servicio y nombres externos:
- kube-dns: un complemento de clúster que se despliega de forma predeterminada en todos los clústeres de GKE.
- Cloud DNS: una infraestructura de DNS de clúster gestionada en la nube que aprovecha Cloud DNS y no requiere gestionar servidores DNS en el clúster, como kube-dns.
También puedes registrar tus servicios en Service Directory for GKE.
GKE también ofrece NodeLocal DNSCache como complemento opcional que se puede usar con kube-dns o Cloud DNS.
kube-dns
kube-dns es el proveedor de DNS predeterminado de los clústeres estándar y el único proveedor de DNS de los clústeres de Autopilot que ejecutan versiones anteriores a la 1.25.9-gke.400 y la 1.26.4-gke.500.
kube-dns se ejecuta como un despliegue que programa pods de kube-dns en nodos del clúster.
Para obtener más información sobre kube-dns, consulta el artículo Usar kube-dns.
Cloud DNS
Cloud DNS es el único proveedor de DNS para los clústeres de 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 resolución de DNS de pods y servicios 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 servicios de nombres ClusterIP, sin encabezado y externos.
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é DNS en cada nodo del clúster. Esta caché de DNS mejora la latencia de las peticiones de DNS, hace que los tiempos de las peticiones de DNS sean más coherentes y puede reducir el número de consultas de DNS a kube-dns o Cloud DNS.
Para saber cómo configurar NodeLocal DNSCache, consulta el artículo Configurar NodeLocal DNSCache.
Descubrimiento de servicios fuera de un solo clúster
Puedes configurar el descubrimiento de servicios más allá del ámbito de un solo clúster mediante uno de los siguientes métodos.
Ámbito de VPC de Cloud DNS
Un clúster que utilice Cloud DNS para el DNS del clúster debe funcionar en uno de los dos modos disponibles: ámbito del clúster de GKE o ámbito de la nube privada virtual (VPC).
Cuando configuras un clúster en el ámbito del clúster, los registros DNS solo se pueden resolver dentro del clúster mediante el esquema <svc>.<ns>.svc.cluster.local
. Este es el mismo comportamiento que kube-dns.
Cuando configuras un clúster en el ámbito de una VPC, los registros DNS de los servicios del clúster se pueden resolver en toda la VPC. Esto significa que los clientes de la misma VPC o conectados a la VPC a través de Cloud VPN o Cloud Interconnect pueden resolver directamente los registros DNS de los servicios del clúster de GKE. También puedes configurar nombres de DNS de clúster únicos para que los clientes que no sean de GKE puedan resolver registros DNS. Por ejemplo, un cliente que no sea de GKE podría resolver gke-svc.ns.svc.cluster1
desde gke-svc.ns.svc.cluster2
.
Para obtener más información sobre el DNS de ámbito de VPC, consulta Usar Cloud DNS para GKE.
Servicios de varios clústeres
Los servicios multiclúster proporcionan descubrimiento de servicios y balanceo de carga multiclúster para GKE, que aprovecha el objeto Service. Los servicios multiclúster se pueden descubrir y acceder desde cualquier clúster de GKE con una sola dirección IP virtual. Este es el mismo comportamiento que un servicio ClusterIP al que se puede acceder en un solo clúster.
Los servicios multiclúster agregan servicios de diferentes clústeres y los hacen direccionables como un único registro DNS multiclúster mediante el esquema <svc>.<ns>.svc.clusterset.local
. De esta forma, se proporciona un nombre único para un servicio determinado que es coherente y al que se puede acceder desde cualquier clúster de GKE mediante servicios multiclúster.
Para obtener más información sobre los servicios de varios clústeres, consulta Servicios de varios clústeres.
Service Directory para GKE
Service Directory para GKE ofrece una vista única de los servicios en todas tus implementaciones de Kubernetes. Service Directory puede registrar servicios de GKE y que no sean de GKE en un solo registro. Directorio de servicios es especialmente útil si quieres:
- Un único registro para que las aplicaciones de Kubernetes y las que no lo son se descubran entre sí.
- Una herramienta de descubrimiento de servicios gestionados.
- Para almacenar metadatos sobre tu servicio a los que puedan acceder otros clientes.
- Para definir permisos de acceso a nivel de servicio.
Los servicios de Directorio de servicios se pueden resolver mediante DNS, HTTP y gRPC. Service Directory está integrado con Cloud DNS y puede rellenar registros de Cloud DNS que coincidan con los servicios de Service Directory.
Para obtener más información, consulta Configurar Service Directory para GKE.
/etc/resolv.conf
En el caso de los pods que usan la política de DNS ClusterFirst
, el valor de /etc/resolv.conf
depende de las funciones que estén habilitadas en el clúster:
Cloud DNS para GKE | NodeLocal DNSCache | Valor de /etc/resolv.conf |
---|---|---|
Habilitado | Habilitado | 169.254.20.10 |
Habilitado | Inhabilitado | 169.254.169.254 |
Inhabilitado | Habilitado | Dirección IP del servicio kube-dns |
Inhabilitado | Inhabilitado | Dirección IP del servicio kube-dns |
Siguientes pasos
- Consulta cómo usar Cloud DNS para GKE.
- Consulta cómo proporcionar una resolución de DNS escalable para clústeres que requieran grandes volúmenes de consultas de DNS mediante NodeLocal DNSCache.