Impulsando la Estabilidad de etcd y el Éxito de Kubernetes

Publicado el 20 julio 2024 por Lauratuero @incubaweb

Imagine un mundo en la nube sin Kubernetes. Difícil, ¿verdad? Pero, ¿alguna vez te has preguntado sobre el héroe desconocido que hace que Kubernetes funcione? Entra etcd, el almacén de clave-valor distribuido que actúa como el sistema nervioso central de Kubernetes. La capacidad de etcd para almacenar y replicar de manera consistente datos críticos del estado del clúster es esencial para mantener la salud y la armonía de los sistemas distribuidos.

Piensa en Kubernetes como un majestuoso animal vertebrado, capaz de movimientos y adaptaciones complejas. En esta analogía, etcd es la columna vertebral del animal: una estructura fuerte y flexible que sostiene todo el sistema. Así como una columna vertebral protege la médula espinal (que lleva información vital), etcd salvaguarda los datos críticos que definen el entorno de Kubernetes. Y al igual que una columna vertebral conecta cada parte del cuerpo, etcd facilita la comunicación y la coordinación entre todos los componentes de Kubernetes, permitiendo que se mueva, se adapte y prospere en el dinámico mundo de los sistemas distribuidos.

Google tiene una larga historia de contribuciones a proyectos de código abierto, y nuestro compromiso con etcd no es la excepción. Como iniciador de Kubernetes, Google entiende el papel crítico que etcd juega en su éxito. Los ingenieros de Google invierten constantemente en etcd para mejorar su funcionalidad y confiabilidad, impulsados por su uso intensivo de etcd para sus propios sistemas internos.

Los ingenieros de Google han contribuido activamente a la estabilidad y resiliencia de etcd, trabajando junto a la comunidad en general para abordar desafíos y mejorar el proyecto. Algunas de las áreas clave donde su impacto ha sido notable incluyen:

Soporte post-lanzamiento: Tras el lanzamiento de etcd v3.5.0, los ingenieros de Google identificaron y abordaron rápidamente varios problemas críticos, demostrando su compromiso con el mantenimiento de un etcd estable y listo para producción tanto para Kubernetes como para otros sistemas.

Consistencia de datos: Detección temprana y acción rápida: Los ingenieros de Google lideraron esfuerzos para identificar y resolver problemas de inconsistencia de datos en etcd, abogando por la concientización pública y estrategias de mitigación. Basándose en su experiencia en ingeniería de confiabilidad de sitios (SRE), fomentaron una cultura de "postmortems sin culpables" dentro de la comunidad de etcd, una práctica donde el enfoque está en aprender de los incidentes en lugar de asignar culpas. Su detallado postmortem del problema de inconsistencia de datos en la versión v3.5 y una charla copresentada en KubeCon sirvieron para compartir estas valiosas lecciones con la comunidad de la nube.

Reenfoque en la estabilidad y las pruebas: El incidente de la versión v3.5 destacó la necesidad de pruebas y documentación más exhaustivas. Los ingenieros de Google actuaron en múltiples frentes:**

  • Mejorando la documentación: Contribuyeron a crear "El Contrato Implícito Kubernetes-ETCD", que formaliza las interacciones entre los dos sistemas, guiando el desarrollo y la resolución de problemas.
  • Priorizando la estabilidad y las pruebas: Desarrollaron las Pruebas de Robustez de etcd, un riguroso marco que simula escenarios extremos para identificar proactivamente problemas de inconsistencia y corrección.

Estas contribuciones han fomentado un entorno colaborativo donde toda la comunidad puede aprender de los incidentes y trabajar juntos para mejorar la estabilidad y resiliencia de etcd. Las pruebas de robustez de etcd han sido particularmente impactantes, reproduciendo no solo todas las inconsistencias de datos encontradas en la versión v3.5, sino también descubriendo otros errores introducidos en esa versión. Además, encontraron errores no detectados previamente que existían en versiones anteriores de etcd, algunos que se remontan a la implementación original de la versión v3. Estos resultados demuestran la efectividad de las pruebas de robustez y resaltan cómo han hecho de etcd el más confiable en la historia del proyecto.

Las pruebas de robustez de etcd, inspiradas en la metodología Jepsen, someten a etcd a rigurosas simulaciones de particiones de red, fallos de nodos y otras interrupciones del mundo real. Esto asegura la consistencia y corrección de datos de etcd incluso bajo condiciones extremas. Estas pruebas han demostrado ser notablemente efectivas, identificando y abordando una variedad de problemas.

Para una comprensión más profunda de cómo garantizar la consistencia de datos de etcd, la charla "En busca de las inconsistencias de datos de Etcd" de Marek Siarkowicz ofrece información valiosa sobre las pruebas de sistemas distribuidos y los enfoques innovadores utilizados para construir estas pruebas. Para fomentar la transparencia y la colaboración, la comunidad de etcd celebra reuniones quincenales para debatir los resultados de las pruebas, abiertas a ingenieros, investigadores y otras partes interesadas.

Para solidificar la asociación Kubernetes-etcd, los ingenieros de Google definieron formalmente el contrato implícito entre los dos sistemas. Esta comprensión compartida guio el desarrollo y la resolución de problemas, llevando a mejorar las estrategias de prueba y asegurando que etcd cumpla con los exigentes requisitos de Kubernetes.

Cuando se descubrieron sutiles problemas en cómo Kubernetes utilizaba el watch de etcd, se hizo evidente el valor de este contrato formal. Estos problemas podrían llevar a eventos perdidos bajo condiciones específicas, lo que podría afectar la operación de Kubernetes. En respuesta, los ingenieros de Google están trabajando activamente para integrar el contrato directamente en las pruebas de robustez de etcd para identificar y prevenir proactivamente tales problemas de compatibilidad.

El continuo compromiso de Google con etcd subraya su dedicación a la estabilidad y el éxito del ecosistema nativo de la nube. Sus contribuciones, junto con los esfuerzos de la comunidad en general, han hecho de etcd una base más confiable y eficiente para Kubernetes y otros sistemas críticos. A medida que el ecosistema evoluciona, etcd sigue siendo un componente crítico, capacitando a las organizaciones para construir y desplegar aplicaciones distribuidas con confianza. Animamos a todos los colaboradores de etcd y Kubernetes a continuar su participación activa y contribuir al éxito continuo del proyecto.

vía: Google Blog Open Source