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:
- Service creado → kube-proxy detecta el cambio
- Endpoints descubiertos → kube-proxy encuentra los Pods backend
- Reglas creadas → iptables/ipvs configurado
- 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