Descubrimiento de servicios y DNS

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

DNS de VPC de AWS

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

Configurar DNS de VPC

GKE on AWS admite varias configuraciones de DNS en tu VPC de AWS. Puedes configurar los ajustes de DNS de tu VPC cuando creas un conjunto de opciones de DHCP. Para obtener más información, consulta Compatibilidad con DNS de tu VPC.

Puedes configurar las siguientes opciones:

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

Configuraciones de DNS de VPC admitidas

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

Habilitar nombres de host de DNS Nombres de host de DNS de EC2 Servidor DNS ¿Es compatible?
true Predeterminado AWS Route53
false Predeterminado AWS Route53
true Personalizado AWS Route53
false Personalizado AWS Route53
true Personalizado Alojado
false Personalizado Alojado
true Predeterminado Alojado No
false Predeterminado Alojado No

Descubrimiento de servicios

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

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

service.namespace.svc.zone

Donde:

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

Las cargas de trabajo también acceden a servicios externos (por ejemplo, example.net) mediante nombres de DNS. Para obtener más información sobre el comportamiento del DNS en Kubernetes, consulta DNS para servicios y pods.

CoreDNS

GKE en AWS usa CoreDNS para resolver nombres de DNS en los clústeres. CoreDNS se ejecuta como un Deployment (Despliegue) redundante y escalado en el espacio de nombres kube-system. La implementación de CoreDNS tiene un servicio que agrupa los pods de CoreDNS y les asigna una única dirección IP. La implementación de CoreDNS se adapta al tamaño y al 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 hace una solicitud de DNS, esta se dirige primero a la caché de DNS del mismo nodo. Si la caché no puede resolver la solicitud de DNS, la reenvía a una de las siguientes opciones:

  • 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 on AWS usa Calico para establecer el enrutamiento BGP entre los nodos del clúster.

Siguientes pasos