Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Descripción general

Introducción a CoreDNS

Cuando se crea un clúster, el complemento de coredns se instala para resolver nombres de dominio en el clúster.

Puede ver el pod del complemento de coredns en el espacio de nombres del kube-system.

$ kubectl get po --namespace=kube-system
NAME                                      READY   STATUS    RESTARTS   AGE
coredns-7689f8bdf-295rk                   1/1     Running   0          9m11s
coredns-7689f8bdf-h7n68                   1/1     Running   0          11m

Después de instalar coredns, se convierte en un DNS. Después de crear el Service, coredns registra el nombre del Service y la dirección IP. De esta manera, el pod puede obtener la dirección IP del Service consultando el nombre del Service desde coredns.

nginx.<namespace>.svc.cluster.local se utiliza para acceder al Service. nginx es el nombre del Service, <namespace> es el espacio de nombres y svc.cluster.local es el sufijo del nombre de dominio. En uso real, puede omitir <namespace>.svc.cluster.local en el mismo espacio de nombres y usar el ServiceName.

Una ventaja de usar ServiceName es que puede escribir ServiceName en el programa al desarrollar la aplicación. De esta manera, no es necesario conocer la dirección IP de un Service específico.

Después de instalar el complemento de coredns, también hay un Service en el espacio de nombres de kube-system, como se muestra a continuación.

$ kubectl get svc -n kube-system
NAME               TYPE           CLUSTER-IP      EXTERNAL-IP                    PORT(S)                      AGE
coredns            ClusterIP      10.247.3.10     <none>                         53/UDP,53/TCP,8080/TCP       13d

De forma predeterminada, después de crear otros pods, la dirección del Service de coredns se escribe como la dirección del servidor de resolución de nombres de dominio en el archivo /etc/resolv.conf del pod. Cree un pod y vea el archivo /etc/resolv.conf de la siguiente manera:

$ kubectl exec test01-6cbbf97b78-krj6h -it -- /bin/sh
/ # cat /etc/resolv.conf
nameserver 10.247.3.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5 timeout single-request-reopen

Cuando un usuario accede al Service name:Port del pod Nginx, la dirección IP del Service Nginx se resuelve desde CoreDNS y, a continuación, se accede a la dirección IP del Service Nginx. De esta manera, el usuario puede acceder al pod backend de Nginx.

Figura 1 Ejemplo de resolución de nombres de dominio en un clúster

Operaciones relacionadas

También puede configurar DNS en una carga de trabajo. Para obtener más información, véase Configuración de DNS.

También puede usar coredns para implementar la resolución de nombres de dominio definida por el usuario. Para obtener más información, véase Uso de CoreDNS para la resolución personalizada de nombres de dominio.

También puede utilizar DNSCache para mejorar el rendimiento de la resolución de DNS. Para obtener más información, véase Uso de DNSCache de NodeLocal para mejorar el rendimiento de DNS.