La Red de Conocimientos Pedagógicos - Currículum vitae - Registros DNS de Kubernetes

Registros DNS de Kubernetes

Descubrimiento de servicios basados ​​en DNS de Kubernetes GitHub

Servicios y pods Pods Kubernetes

Kubernetes DNS implementa pods y servicios DNS en el clúster, y kubelet le indicará a la IP del servicio DNS del contenedor que resuelva el problema. Nombre DNS.

A cada servicio del clúster (incluido el servidor DNS) se le asignará un nombre DNS. De forma predeterminada, la lista de búsqueda del Pod del cliente contiene el espacio de nombres del Pod y el dominio predeterminado del clúster.

Dependiendo de los diferentes espacios de nombres, las consultas DNS arrojarán resultados diferentes. Las consultas DNS no especifican un espacio de nombres, por lo que se utiliza el espacio de nombres del pod; especifique el espacio de nombres que se consultará entre los espacios de nombres.

Puedes ampliar la consulta a través del archivo /etc/resolv.conf del Pod. Este archivo lo establece Kubelet. Por ejemplo, solo los datos de la consulta se expandirán a data.test.cluster.local. El parámetro de búsqueda también se puede utilizar para expandir la consulta. Consulte la página de manual de solv.conf para obtener más consultas de DNS.

En resumen, los pods en el espacio de nombres de prueba pueden resolver con éxito los datos del clúster SVC.

¿Qué objetos tienen registros DNS?

Las siguientes secciones detallan los tipos y jerarquías de registros DNS admitidos. Las siguientes secciones detallan los tipos de registros DNS admitidos y los diseños admitidos. Cualquier otro diseño, nombre o consulta se considera detalles de implementación y puede modificarse sin previo aviso. Consulte Descubrimiento de servicios basado en DNS de Kubernetes para obtener la documentación de configuración más reciente.

A los servicios "normales" (no sin cabeza) se les asignan registros DNS A o AAAA con el formato de nombre my-SVC . Esto se resolverá en la IP del clúster del servicio.

* *El servicio "headless"* * (sin IP de clúster) también está preparado para asignar registros DNS A o AAAA, con el formato de nombre my-SVC my-namespace . ejemplo. Igual que el servicio normal. Es diferente, se resuelve en un conjunto de IP seleccionadas por Pods. Los clientes deben utilizar esta colección de forma estándar y por turnos.

Los registros SRV se crean para puertos con nombre que forman parte de un servicio normal o sin cabeza. Para cada puerto especificado, el formato de registro SRV debe ser _mi-nombre-de-puerto. _ mi-protocolo-de-puerto . mi-SVC . mi-espacio de nombres . Para los servicios regulares, esto se resuelve en un número de puerto y un nombre de dominio: mi-SVC. mi-espacio de nombres. Para un servicio sin cabeza, esto se resolverá en varias respuestas, una para cada pod que admita el servicio, que contiene el número de puerto y el nombre de dominio del pod en el formato my-SVC my-namespace SVC. ejemplo de dominio.

A veces, no necesitamos equilibrar la carga ni configurar la IP del servicio. En este caso, podemos crear un servicio "sin cabeza" especificando "Ninguno" para mostrar la IP del clúster (.spec.clusterIP).

Puede utilizar servicios sin cabeza para interactuar con otros mecanismos de descubrimiento de servicios sin estar vinculado a un escenario de Kubernetes.

Servicio sin cabeza, no se asigna ninguna IP de clúster, kube-proxy no es responsable de estos servicios y no hay equilibrio de carga ni procesamiento de proxy en la plataforma.

La configuración automática de DNS depende de si el servicio tiene un selector definido:

Para un servicio sin cabeza con un selector definido, el controlador de punto final crea el registro de punto final en la API y configura la dirección IP devuelta por DNS para hacer dirige puntos a los pods detrás del servicio.

El controlador de punto final no creará un registro de punto final si no hay un servicio sin cabeza definido para el selector. El sistema DNS se busca y configura de la siguiente manera:

El nombre del pod en DNS suele ser el siguiente: Normalmente, un pod tiene la siguiente resolución DNS:

dirección-IP del pod. mi-espacio de nombres.

Por ejemplo, en el Pod en el espacio de nombres predeterminado, la dirección IP es 172.17.0.3 y el nombre de dominio del clúster es cluster.local, entonces el nombre DNS del Pod es:

172-17-0-3.Predeterminado.pod.cluster.local.

Pods creados por implementación, o DaemonSet publicado por servicio, la resolución DNS es la siguiente:

dirección-IP del pod. nombre-despliegue mi-espacio de nombres SVC. .Ejemplo

Después de crear un Pod, su nombre de host se establece en el valor metadata.name del Pod.

La especificación Pod tiene un nombre de host opcional que especifica el nombre de host del Pod. Después de la asignación, el nombre del pod tiene prioridad como nombre de host del pod. Por ejemplo, si el nombre de host de un Pod está configurado como "myhost", el nombre de host del pod se establecerá en "myhost".

La especificación Pod también tiene un subdominio opcional para especificar el subdominio. Por ejemplo, si un Pod tiene el nombre de host configurado en "foo", el subdominio configurado en "bar" y el espacio de nombres configurado en "my-namespace", entonces el nombre de dominio completo (FQDN) es foo bar. SVC. ejemplo de dominio de clúster.

Si tiene un servicio sin cabeza en el mismo espacio de nombres que el nombre del subdominio del pod, el DNS del clúster seguirá devolviendo un registro A o AAAA para el FQDN del pod.

Por ejemplo, el nombre de host del Pod es "busybox-1", el subdominio es "subdominio predeterminado" y el servicio sin cabeza llamado "subdominio predeterminado" está en el mismo espacio de nombres. El pod identificará su propio FQDN como ocupadobox-1. subdominio predeterminado. mi-espacio de nombres. El DNS del dominio de clúster proporciona un registro o AAAA para ese nombre. Tanto el pod "busybox 1" como el "busybox2" pueden tener registros A o AAAA únicos.

El objeto de punto final asigna la dirección del punto final al nombre de host y su IP.

Estado de la función: Kubernetes v1.20 [beta]

Cuando un Pod está configurado para tener un FQDN, su nombre de host se convierte en el nombre de host abreviado. Por ejemplo, si el fqdn del Pod es togetherbox-1 . default-subdomain . my-namespace SVC .

Cuando configuras setHostnameAsFQDN: true en la especificación del Pod, kubelet escribe el FQDN del Pod en el nombre de host del espacio de nombres de ese Pod. De esta manera, tanto el nombre de host como el fqdn del nombre de host devolverán el fqdn del pod.

Puedes establecer políticas DNS para cada pod.

Kubernetes ahora admite las siguientes políticas DNS específicas de pods. Estas políticas se establecen en el elemento de configuración dnsPolicy de la especificación Pod.

La configuración de DNS del Pod proporciona más métodos de control de DNS.

Los elementos de configuración opcionales de DnsConfig se pueden utilizar para cualquier dnsPolicy. Sin embargo, si dnsPolicy se establece en "Ninguno", se debe especificar el elemento de configuración dnsConfig.

Las siguientes son las propiedades definibles del proyecto de configuración dnsConfig: