Kubernetes & services

Los Services en Kubernetes son uno de los conceptos fundamentales para desplegar aplicaciones distribuidas de forma robusta y escalable. Pero su importancia va mucho más allá de exponer Pods: son también una pieza clave para la monitorización y la observabilidad de nuestros sistemas.

¿Qué es un Service en Kubernetes?

Un Service es un recurso que permite exponer uno o varios Pods bajo una IP virtual y un nombre DNS estable dentro del clúster, permitiendo su acceso de manera predecible, independientemente de la IP real de los Pods, que puede cambiar dinámicamente.

📄 Ejemplo básico de Service:

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

Este Service expone a todos los Pods con la etiqueta app: myapp en el puerto 80, redirigiendo internamente al 8080 del contenedor.

Tipos de Services

TipoAccesibilidadUso habitual
ClusterIPInterna al clústerComunicación entre microservicios
NodePortExterno, vía nodosAcceso básico desde fuera del clúster
LoadBalancerExterno (Cloud)Publicación de servicios en producción
ExternalNameAlias DNS externoIntegración con servicios externos

Importancia en la Monitorización y Observabilidad

✅ Visibilidad de la topología

Los Services son el punto de entrada y de conexión entre componentes. Son esenciales para entender el flujo de datos en la arquitectura.

🔢 Métricas clave recogidas por herramientas de monitorización

  • Latencia
  • Throughput (peticiones por segundo)
  • Códigos de error (4xx, 5xx)
  • Tiempo de respuesta
  • Saturación de conexiones

🔍 Trazabilidad y detección de fallos

Los Services permiten trazar llamadas entre microservicios y aislar errores en sistemas complejos. Herramientas como Dynatrace, Prometheus, Istio, OpenTelemetry, etc., observan el comportamiento desde y hacia estos puntos lógicos.

Consultar Services en el clúster con kubectl

Puedes listar todos los servicios en todos los namespaces con:

kubectl get services -A

O en un namespace específico (por ejemplo, default):

kubectl get svc -n default

Para obtener más detalles de un Service:

kubectl describe svc myapp-service -n default

Esto te mostrará los endpoints, etiquetas, puertos expuestos, tipo de Service y qué Pods están siendo seleccionados.

También puedes ver los endpoints concretos (IPs de los Pods a los que apunta el Service):

kubectl get endpoints myapp-service -n default

🔎 Esquema: relación entre usuario, Services y Pods

             +---------------------------+
             |      Internet / Usuario   |
             +-------------+-------------+
                           |
                           v
                 +---------------------+       
                 | LoadBalancer SVC    |  <-- Expuesto externamente
                 +---------+-----------+
                           |
                           v
               +-----------------------+       
               | ClusterIP Service     |  <-- Servicio interno
               +----------+------------+
                          |
              +-----------+------------+
              |           |            |
              v           v            v
        +---------+  +---------+  +---------+
        |  Pod A  |  |  Pod B  |  |  Pod C  |  <-- Replicas  gestionada Deployment
        +---------+  +---------+  +---------+

Resumiendo

Los Services en Kubernetes no solo conectan Pods: conectan personas con productos, sistemas con datos y problemas con soluciones. Son el punto estratégico desde donde se pueden observar, medir, diagnosticar y mejorar los sistemas modernos.

Toda estrategia de monitorización efectiva en Kubernetes pasa por entender y observar estos componentes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies