¿Cómo configuro una política de DNS para un contenedor?
CCE utiliza dnsPolicy para identificar diferentes políticas de DNS para cada pod. El valor de dnsPolicy puede ser uno de los siguientes:
- None: No hay ninguna política de DNS configurada. En este modo, puede personalizar la configuración de DNS, y dnsPolicy debe usarse junto con dnsConfig para personalizar el DNS.
- Default: El pod hereda la configuración de resolución de nombres del nodo donde se está ejecutando el pod. El archivo de configuración de DNS del contenedor es el archivo de configuración de DNS al que apunta el indicador --resolv-conf del kubelet. En este caso, se utiliza un DNS en la nube para los clústeres de CCE.
- ClusterFirst: En este modo, el DNS en el pod utiliza el servicio DNS configurado en el clúster. Es decir, el servicio kube-dns o CoreDNS en Kubernetes se utiliza para la resolución de nombres de dominio. Si la resolución falla, se utiliza la configuración de DNS de la máquina host para la resolución.
Si no se especifica el tipo de dnsPolicy, se utiliza ClusterFirst de forma predeterminada.
- Si el tipo de dnsPolicy se establece en Default, la configuración de resolución de nombres se hereda del nodo de trabajo donde se está ejecutando el pod.
- Si el tipo de dnsPolicy se establece en ClusterFirst, las consultas de DNS se enviarán al servicio kube-dns.
El servicio kube-dns responde a consultas en los dominios que usan el sufijo de dominio de clúster configurado como raíz. Todas las demás consultas (por ejemplo, www.kubernetes.io) se reenvían al servidor de nombres ascendente heredado del nodo. Antes de que esta característica fuera compatible, los dominios stub eran típicamente introducidos por un resolutor personalizado, en lugar del DNS ascendente. Sin embargo, esto hace que el propio solucionador personalizado sea la ruta clave para la resolución DNS, donde los problemas de escalabilidad y disponibilidad pueden hacer que las funciones DNS no estén disponibles para el clúster. Esta función le permite introducir resolutores personalizados sin tener en cuenta toda la ruta de resolución.
Si una carga de trabajo no necesita usar CoreDNS en el clúster, puede usar kubectl o invocar a las API para establecer dnsPolicy en Default.