Saltar al contenido principal

Capítulo 2.7 - kube-proxy

Objetivos de Aprendizaje​

Al final de este capítulo, usted será capaz de:

  • Comprender el rol de kube-proxy
  • Explicar cómo kube-proxy gestiona los Services
  • Comprender los modos de proxy
  • Identificar el load balancing

¿Qué es kube-proxy?​

kube-proxy es un componente de red que se ejecuta en cada nodo. Mantiene las reglas de red que permiten la comunicación con los Services desde dentro y fuera del clúster.


Roles de kube-proxy​

1. Gestión de Services​

kube-proxy monitorea los Services y sus Endpoints:

2. Load Balancing​

Distribuye el tráfico entre los Pods backend:

3. Reglas de Red​

Mantiene las reglas iptables o ipvs para:

  • Enrutamiento hacia los Services
  • NAT (Network Address Translation)
  • Load balancing

Modos de Proxy​

1. userspace (Obsoleto)​

Modo antiguo, poco eficiente.

2. iptables (Por defecto)​

Utiliza iptables para el enrutamiento:

Ventajas:

  • Eficiente
  • Sin procesos de usuario
  • Nativo de Linux

3. ipvs (Recomendado para producción)​

Utiliza IPVS (IP Virtual Server) del kernel de Linux:

Ventajas:

  • Más eficiente que iptables
  • Mejor load balancing
  • Soporta más algoritmos

Funcionamiento con un Service​

Ejemplo: Service ClusterIP​

apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 8080

Lo que sucede:​

  1. Service creado → kube-proxy detecta el cambio
  2. Endpoints descubiertos → kube-proxy encuentra los Pods backend
  3. Reglas creadas → iptables/ipvs configurado
  4. Tráfico enrutado → Las solicitudes al Service son distribuidas

Load Balancing​

Algoritmos Soportados​

  • Round Robin: Distribución equitativa
  • Least Connection: Menos conexiones activas
  • Source IP Hash: Mismo Pod para la misma fuente

Ejemplo: Round Robin​


Tipos de Services​

ClusterIP​

kube-proxy crea reglas para enrutar el tráfico interno.

NodePort​

kube-proxy abre un puerto en cada nodo y enruta hacia los Pods.

LoadBalancer​

kube-proxy configura el enrutamiento, el proveedor cloud crea el load balancer externo.


Comandos Útiles​

# Ver las reglas iptables (en el nodo)
sudo iptables -t nat -L -n

# Ver las reglas ipvs (si está en modo ipvs)
sudo ipvsadm -ln

# Ver los Endpoints de un Service
kubectl get endpoints <service-name>

# Ver los detalles de un Service
kubectl describe service <service-name>

Resumen​

En este capítulo, usted ha aprendido:

kube-proxy: Gestiona el networking y el load balancing
Services: Enrutamiento del tráfico hacia los Pods backend
Modos: iptables (por defecto) o ipvs (producción)
Load Balancing: Distribución del tráfico entre Pods
Reglas de red: Mantenimiento de las reglas de enrutamiento


Próximos Pasos​

Ahora que usted comprende kube-proxy:

Capítulo 2.8: Container Runtime
Capítulo 2.9: Comunicación Inter-Componentes


Capítulo creado el: Diciembre 2024