Descubrimiento de servicios y DNS

En este tema, se describe cómo GKE en AWS interactúa con los servicios de nombres de dominio (DNS) en tu nube privada virtual (VPC) de AWS y tus clústeres.

DNS en VPC de AWS

En esta sección, se describe cómo puedes configurar una nube privada virtual (VPC) de AWS para GKE en AWS.

Configura DNS en VPC

GKE en AWS admite una variedad de opciones de configuración de DNS en tu VPC de AWS. Establece la configuración de DNS de tu VPC cuando crees un conjunto de opciones de DHCP. Para obtener más información, consulta Compatibilidad de DNS para tu VPC.

Puedes configurar las siguientes opciones:

Nombres de host de DNS
Esto establece si las instancias de EC2 con direcciones IP públicas obtienen los nombres de host DNS correspondientes. Establece este valor mediante el campo enableDNSHostnames en el conjunto de opciones de DHCP de la VPC. Si deseas obtener más información, consulta Nombres de host de DNS en VPC y Conjuntos de opciones de DHCP para tu VPC.
Nombres de host de DNS para EC2
Establece si las instancias de EC2 reciben un nombre de host DNS predeterminado o uno personalizado.
Servidor DNS
Si el conjunto de opciones de DHCP de tu VPC usa el servidor DNS Route53 de AWS (con la opción AmazonProvidedDNS) o un servidor DNS alojado.

Opciones de configuración de DNS en VPC compatibles

En la siguiente tabla, se incluyen configuraciones de DNS compatibles con GKE en AWS:

Habilita nombres de host para DNS Nombres de host de DNS para EC2 Servidor DNS ¿Es compatible?
true Predeterminada AWS Route53
false Predeterminada AWS Route53
true Personalizada AWS Route53
false Personalizada AWS Route53
true Personalizada Alojada
false Personalizada Alojada
true Predeterminada Alojada No
false Predeterminada Alojada No

Descubrimiento de servicios

El descubrimiento de servicios es el proceso en el que las cargas de trabajo descubren los servicios sin conocer su dirección IP. En esta sección, se describe cómo GKE en AWS implementa el descubrimiento de servicios y el DNS administrado.

Kubernetes genera automáticamente nombres de servicios que usan la siguiente especificación:

service.namespace.svc.zone

Aquí:

  • service: es el nombre del servicio.
  • namespace: es el espacio de nombres de tu servicio.
  • zone: es la zona de AWS de tu servicio.

Las cargas de trabajo también acceden a servicios externos, como example.net, mediante nombres de DNS. Si deseas obtener más información sobre el comportamiento de DNS en Kubernetes, consulta DNS para servicios y Pods.

CoreDNS

GKE en AWS usa CoreDNS para resolver los nombres de DNS dentro de los clústeres. CoreDNS se ejecuta como una implementación redundante y escalada en el espacio de nombres kube-system. La implementación de CoreDNS tiene un servicio que agrupa los Pods de CoreDNS y les proporciona una sola dirección IP. La implementación de CoreDNS se escala con el tamaño y el uso del clúster.

NodeLocal DNSCache

GKE en AWS usa NodeLocal DNSCache para mejorar el rendimiento de las búsquedas de DNS. NodeLocal DNSCache se ejecuta como un DaemonSet en cada nodo de tu clúster. Cuando un Pod realiza una solicitud de DNS, la solicitud primero va a la caché de DNS en el mismo nodo. Si la caché no puede resolver la solicitud de DNS, la caché reenvía la solicitud a uno de los siguientes:

  • CoreDNS para un nombre interno (por ejemplo, foo.bar.svc.cluster.local)
  • El servidor DNS de Amazon, para un nombre externo (por ejemplo, example.net)

Calico

GKE en AWS usa Calico para establecer el enrutamiento BGP entre los nodos del clúster.

¿Qué sigue?