Resolución DNS en Azure Kubernetes Service (AKS)

La resolución del sistema de nombres de dominio (DNS) es un componente crítico en Azure Kubernetes Service (AKS), lo que permite que los pods y los servicios se comuniquen mediante nombres legibles en lugar de direcciones IP. AKS proporciona servicios DNS integrados para garantizar una resolución de nombres sin problemas tanto para los recursos internos del clúster como para los puntos de conexión externos. Comprender cómo funciona DNS en AKS ayuda a los operadores de clúster y a los desarrolladores a garantizar una conectividad confiable, optimizar el rendimiento y solucionar problemas de red de forma eficaz.

CoreDNS en Azure Kubernetes Service

CoreDNS es el servicio DNS predeterminado en Azure Kubernetes Service (AKS), que proporciona resolución de nombres interna y detección de servicios para cargas de trabajo que se ejecutan en el clúster. Funciona como un conjunto de pods en el espacio de nombres kube-system y está estrechamente integrado con las redes de Kubernetes.

Cuando un pod de AKS emite una consulta DNS(por ejemplo, resolver el nombre de otro servicio), la solicitud se enruta a los pods de CoreDNS. Estos pods procesan la consulta y devuelven la dirección IP adecuada o reenvía la solicitud a un servidor DNS ascendente para dominios externos.

Esta arquitectura garantiza un equilibrio entre la flexibilidad y la seguridad operativa en un entorno administrado. Para más información sobre cómo personalizar CoreDNS en AKS, consulte la guía de personalización de CoreDNS.

Para obtener información sobre el proyecto CoreDNS, consulte la página de proyecto del canal de subida de CoreDNS.

LocalDNS en Azure Kubernetes Service

Nota:

En este documento se proporciona información general sobre qué es LocalDNS y sus ventajas en AKS. No incluye instrucciones de configuración. Para obtener instrucciones sobre cómo habilitar y configurar LocalDNS, consulte la guía de procedimientos de LocalDNS.

Información general

LocalDNS es una característica avanzada en Azure Kubernetes Service (AKS) que implementa un proxy del sistema de nombres de dominio (DNS) en cada nodo para proporcionar una resolución DNS de baja latencia y altamente resistente. Al controlar las consultas DNS localmente, este proxy reduce el tráfico a los pods de complemento de CoreDNS, lo que mejora la confiabilidad y el rendimiento generales de DNS en el clúster. LocalDNS es especialmente beneficioso en clústeres o entornos grandes con grandes volúmenes de consultas DNS, donde la resolución DNS centralizada puede convertirse en un cuello de botella.

Cuando LocalDNS está habilitado, AKS implementa una caché DNS local como systemd servicio en cada nodo. Los pods del nodo envían sus consultas DNS a esta caché local, lo que permite una resolución más rápida al reducir los saltos de red. Este enfoque también minimiza conntrack el uso de tablas, lo que reduce el riesgo de agotamiento de tablas. Además, si dns ascendente deja de estar disponible, LocalDNS puede seguir sirviendo respuestas almacenadas en caché durante una duración configurable, lo que ayuda a mantener la conectividad del pod y la confiabilidad del servicio.

Diagrama que muestra la arquitectura localDNS.

Funcionalidades clave

  • Latencia de resolución DNS reducida: Cada nodo de AKS ejecuta un servicio LocalDNS systemd . Las cargas de trabajo que se ejecutan en el nodo envían consultas DNS a este servicio, lo que las resuelve localmente, lo que reduce los saltos de red y acelera las búsquedas DNS.

  • Comportamiento de DNS personalizable: Puede usar kubeDNSOverrides y vnetDNSOverrides controlar el comportamiento de DNS en el clúster.

  • Evite las carreras de conntrack y el agotamiento de la tabla conntrack: Los pods envían consultas DNS al servicio LocalDNS en el mismo nodo sin crear nuevas entradas conntrack en la tabla. Omitir el seguimiento de la conexión ayuda a reducir las carreras de seguimiento y evita que las entradas DNS del Protocolo de Datagramas de Usuario (UDP) llenen las tablas conntrack. Esta optimización evita las conexiones perdidas y rechazadas causadas por el agotamiento de la tabla conntrack y las condiciones de carrera.

  • Conexión actualizada a TCP: La conexión de la localdns memoria caché al servicio CoreDNS del clúster usa el Protocolo de control de transmisión (TCP). TCP permite reequilibrar la conexión y quita conntrack entradas de tabla cuando el servidor cierra la conexión (a diferencia de las conexiones UDP, que tienen un tiempo de espera predeterminado de 30 segundos). Las aplicaciones no necesitan cambios, ya que el localdns servicio sigue escuchando el tráfico UDP.

  • Caché: El complemento de caché localDNS se puede configurar con la configuración de serveStale y Time to Live (TTL). Los parámetros serveStale, serveStaleDurationInSeconds y cacheDurationInSeconds pueden configurarse para lograr la resistencia del DNS, incluso durante una interrupción del DNS de origen.

  • Control de protocolo: Puede establecer el protocolo de consulta DNS (como PreferUDP o ForceTCP) para cada dominio. Esta flexibilidad le permite optimizar el tráfico DNS para dominios específicos o cumplir los requisitos de red.

Otras ventajas y consideraciones

Ventajas Consideraciones
Mejor escalabilidad: reduce la carga en pods de CoreDNS centralizados Sobrecarga mínima de recursos: usa una pequeña cantidad de CPU y memoria en cada nodo.
Integración sin problemas: no requiere cambios en las conexiones de aplicaciones existentes Cambios de configuración: las actualizaciones requieren actualizaciones de imágenes de nodo, lo que puede provocar interrupciones temporales.
Bloquear dominios de búsqueda no válidos: impide consultas DNS no válidas en el nivel de nodo

Mediante el uso de LocalDNS, se obtiene una resolución DNS más rápida y confiable para las cargas de trabajo, se reduce el riesgo de interrupciones relacionadas con DNS y se obtiene más control sobre el tráfico DNS en el entorno de AKS.

Pasos siguientes

Para obtener información sobre cómo habilitar LocalDNS y configurar sus opciones en el clúster de AKS, consulte la guía de procedimientos de LocalDNS.

Para obtener más información sobre conceptos básicos de red, consulte Conceptos de redes de aplicaciones en Azure Kubernetes Service (AKS).