Tipos de Servicio en Kubernetes: Cluster IP, NodePort e Ingress
Clase 14 de 20 • Curso de Contenedores y Aplicaciones en la Nube con Google Cloud Platform
Resumen
¿Cuáles son los tipos de servicio de Kubernetes?
Kubernetes es una herramienta poderosa para la gestión de contenedores en la nube, y entender los tipos de servicios que ofrece es fundamental para optimizar la comunicación dentro de los clústeres. A continuación, exploramos los tipos principales de servicios que Kubernetes proporciona, y cuándo es mejor utilizarlos.
¿Qué es el Cluster IP?
El Cluster IP es uno de los servicios base en Kubernetes. Al utilizar Cluster IP, se asigna una dirección IP interna a un servicio, permitiendo que sea accesible solo dentro del clúster de Kubernetes. Es especialmente útil para servicios que no necesitan comunicarse con el exterior, como sucede en aplicaciones como Online Boutique, donde solo el frontend expone su servicio hacia afuera. Los servicios internos se comunican entre sí, como el inventario, moneda y checkout, usando Cluster IP.
¿Cómo funciona el NodePort?
Cuando necesitas que servicios sean accesibles desde fuera del clúster, pero no deseas crear un Load Balancer, la opción NodePort mapea un puerto en cada nodo del clúster a un servicio específico. Las peticiones que llegan a cualquier nodo pueden ser redirigidas a un pod específico mediante reglas de IP Tables configuradas por QProxy. Aunque puede ser menos eficiente que otras soluciones, es adecuado para entornos internos como una Virtual Private Cloud (VPC).
¿Por qué usar Load Balancer?
Para exponer un servicio directamente a la internet, el tipo de servicio Load Balancer es la solución más sencilla. En Google Kubernetes Engine (GKE), esto genera un balanceador de carga de Google Cloud con una IP única, permitiendo dirigir tráfico desde internet a tus servicios. Sin embargo, es importante ser consciente de los costos, ya que cada servicio expuesto con un Load Balancer incurrirá en cargos por la IP y el servicio de equilibrado.
¿Qué es y cómo se utiliza el Ingress?
El Ingress no es en sí un tipo de servicio, sino un recurso que ofrece reglas inteligentes para gestionar el tráfico. Se comporta como un router, permitiendo una entrada única al clúster y es capaz de manejar rutas basadas en encabezados, nombres de host o URLs.
¿Cómo configurar un Ingress Gateway?
Configurar un Ingress Gateway en GKE es un proceso sencillo. Primero, se define el nombre del gateway en los metadatos, lo que será crucial para pasos posteriores. Se utiliza un selector para vincular un puerto específico. El Ingress Gateway también ofrece características avanzadas como SSL y reglas de autorización. Usualmente deberás establecer un wildcard para entornos de demostración o pruebas y especificar servicios virtuales para el enrutado del tráfico.
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: frontend-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: frontend-ingress
spec:
hosts:
- "*"
gateways:
- frontend-gateway
http:
- match:
- port: 80
route:
- destination:
host: frontend
¿Qué son las Destination Rules?
Las Destination Rules permiten definir políticas sobre cómo se debe gestionar el tráfico hacia un servicio. Esto es útil para realizar despliegues canarios, distribuyendo tráfico entre diferentes versiones de un servicio. Las Destination Rules facilitan especificar reglas sobre cómo y cuánto tráfico debe ir a cada versión.
¿Cómo se monitorean los servicios en Kubernetes?
La observabilidad es clave en la gestión de servicios en Kubernetes. Tools como Anthor Service Mesh proporcionan consolas donde se pueden examinar:
- Golden Signals: como la tasa de peticiones, errores, latencias y recursos usados (CPU, memoria, disco).
- Gráficas de topología: para visualizar dónde están desplegados los servicios y cómo se interconectan.
- Métricas: detalladas, mostrando peticiones por segundo, errores y latencias.
Observando estas métricas, los desarrolladores pueden realizar ajustes críticos en la escalabilidad y asegurarse que el sistema funcione eficientemente incluso ante picos de demanda.
Es fascinante ver cómo estas herramientas permiten un control minucioso y facilitan la gestión a gran escala, brindando mayor seguridad y eficiencia operacional. La invitación es a seguir explorando y experimentando para aprovechar al máximo la infraestructura que Kubernetes y sus herramientas afines ofrecen.