KvStoreMesh
El Problema: El cuello de botella en escalabilidad 🚦
En una configuración normal de Cluster Mesh (como la que acabamos de montar en tu laboratorio), la arquitectura funciona así:
Cada uno de los agentes de Cilium (cilium-agent) que viven en los nodos del Cluster 2 se conecta directamente al clustermesh-apiserver (el cual es básicamente un etcd/base de datos) del Cluster 1 para enterarse de qué IPs, identidades y servicios existen allá.
En tu laboratorio de kind con un par de nodos, esto funciona perfecto. Pero imagina un escenario de producción empresarial:
- Tienes un Cluster 1 con 500 nodos.
- Tienes un Cluster 2 con 500 nodos.
- ¡De repente tienes 500 conexiones cruzando la red de Internet/WAN golpeando directamente el servidor etcd remoto! Esto consume muchísimo ancho de banda y puede sobrecargar la base de datos de Cilium.
La Solución: ¿Qué es kvstoremesh? 🛡️
kvstoremesh es un componente de caché y delegación (proxy) diseñado para escalar Cluster Mesh de forma masiva.
Cuando habilitas kvstoremesh, la arquitectura cambia por completo:
- En lugar de que los 500 agentes del Cluster 2 viajen hasta el Cluster 1, el componente
kvstoremeshdel Cluster 2 dice: "Tranquilos, yo voy por ustedes". kvstoremeshabre una única conexión hacia el clúster remoto, copia todos los datos importantes (servicios, identidades, endpoints) y los guarda (cachea) en el etcd local del Cluster 2.- Ahora, los 500 agentes del Cluster 2 simplemente consultan su propia base de datos local para enterarse de lo que pasa en el Cluster 1.
Beneficios Clave para Producción:
- Reducción de Tráfico (Ancho de banda): Pasas de cientos o miles de conexiones inter-clúster a solo un par.
- Estabilidad del Control Plane: El servidor etcd no se satura por exceso de clientes concurrentes.
- Alta Disponibilidad (Resiliencia): Si el cable de red entre el Cluster 1 y el Cluster 2 se corta temporalmente, los agentes locales no entran en pánico porque siguen teniendo la última versión guardada en caché gracias a
kvstoremesh.
Dado que en nuestro laboratorio con kind tenemos muy pocos nodos, no es estrictamente necesario habilitar kvstoremesh, pero es genial que lo domines a nivel teórico.