0Pricing
DevOps Bootcamp · Lección

DNS y descubrimiento de servicios

Comprenda cómo los Pods se encuentran mediante el DNS integrado de Kubernetes y cómo funciona internamente el descubrimiento de servicios.

DNS y descubrimiento de servicios es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.

El problema del descubrimiento de Services

Los Pods aparecen y desaparecen, y sus direcciones IP cambian constantemente. Codificar las IP manualmente provocaría fallos inmediatos. Kubernetes resuelve este problema mediante el descubrimiento de Services basado en DNS.

En lugar de una IP, se utiliza un nombre estable.

DNS del clúster

Cada clúster ejecuta un Service DNS (normalmente CoreDNS). Este crea automáticamente registros DNS para Services y Pods, de modo que los nombres se resuelvan en el ClusterIP correcto.

Nombres DNS de los Services

Un Service recibe un nombre DNS que sigue un patrón predecible:

service-name.namespace.svc.cluster.local

Dentro del mismo namespace, puede utilizar simplemente el nombre corto service-name.

# from a Pod in the same namespace
curl http://payment-service:8080

# fully qualified, from any namespace
curl http://payment-service.shop.svc.cluster.local:8080

Namespaces y nombres

El namespace forma parte del nombre. Para acceder a un Service de otro namespace, inclúyalo: service.namespace.

# Pod in 'frontend' namespace calling 'backend' namespace
curl http://api.backend.svc.cluster.local

Probar el DNS desde un Pod

Puede iniciar un Pod temporal para probar la resolución de nombres.

kubectl run dnstest --image=busybox:1.36 --rm -it --restart=Never -- nslookup payment-service

Cómo resuelve nombres CoreDNS

Cuando un Pod consulta un nombre, la solicitud se envía a CoreDNS. Este busca el Service correspondiente y devuelve su ClusterIP. En el caso de los Services headless, devuelve directamente las IP de los Pods.

Services headless

Un Service headless (clusterIP: None) omite la única IP virtual. En su lugar, el DNS devuelve las IP individuales de los Pods, algo esencial para las aplicaciones con estado que acceden directamente a los Pods.

apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  clusterIP: None
  selector:
    app: db
  ports:
  - port: 5432

Registros DNS de los Pods

Con un Service headless, cada Pod subyacente también puede recibir su propio registro DNS, lo que resulta útil para los StatefulSets, cuyos Pods tienen identidades estables como db-0 y db-1.

# stable per-Pod name in a StatefulSet
curl http://db-0.db.default.svc.cluster.local:5432

Inspeccionar resolv.conf del Pod

Kubernetes inyecta la configuración DNS en cada Pod. Los dominios de búsqueda permiten resolver correctamente los nombres cortos.

kubectl exec -it mypod -- cat /etc/resolv.conf
# nameserver 10.96.0.10
# search default.svc.cluster.local svc.cluster.local cluster.local

Variables de entorno frente a DNS

Kubernetes también inyecta información de conexión de los Services como variables de entorno, pero solo para los Services que existían cuando se inició el Pod. Se prefiere el DNS porque siempre refleja el estado actual.

Errores habituales con el DNS

  • Olvidar el namespace al realizar llamadas entre namespaces
  • Esperar que haya DNS para un Service sin Pods coincidentes (sin endpoints)
  • Almacenar en caché IP obsoletas en la aplicación en lugar de volver a resolver el nombre

Comprobación rápida

Elija el formato correcto del nombre DNS.

Resumen

Ha aprendido que Kubernetes utiliza CoreDNS para proporcionar a los Services nombres DNS estables según el formato service.namespace.svc.cluster.local. Los nombres cortos funcionan dentro de un namespace, los Services headless exponen las IP individuales de los Pods y el DNS siempre refleja el estado actual del clúster.

Preguntas frecuentes

¿La lección «DNS y descubrimiento de servicios» es gratis?

Sí — el texto completo de «DNS y descubrimiento de servicios» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.

¿Qué aprenderé en «DNS y descubrimiento de servicios»?

Comprenda cómo los Pods se encuentran mediante el DNS integrado de Kubernetes y cómo funciona internamente el descubrimiento de servicios. Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar DevOps Bootcamp?

No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «DNS y descubrimiento de servicios»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?

Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Exposición de aplicaciones con Services
  2. Tipos de Service: ClusterIP, NodePort y LoadBalancer
  3. Ingress para acceso externo
  4. DNS y descubrimiento de servicios
← Volver a DevOps Bootcamp