Cómo lograr la observabilidad de Kubernetes: Principios y mejores prácticas

Grupo de ingenieras de software trabajando juntas en un proyecto

Los contenedores y entornos de Kubernetes (K8s) son el enfoque líder para empaquetar, desplegar y gestionar aplicaciones en contenedores a escala. La configuración dinámica basada en microservicios de código abierto de Kubernetes puede ser una excelente opción para las empresas que buscan maximizar la agilidad de la infraestructura. Sin embargo, la flexibilidad distribuida que hace que Kubernetes sea atractivo también puede hacer que la implementación de prácticas de supervisión y observabilidad de Kubernetes sea un desafío.

La observabilidad comprende un serial de procesos y métricas que ayudan a los equipos a obtener insights aplicables en la práctica sobre el estado interno de un sistema al examinar sus resultados. Es una parte esencial del mantenimiento de cualquier infraestructura de TI. Pero la gestión del enorme volumen de datos, nodos, pods, servicios y endpoints que componen los entornos Kubernetes requiere prácticas de observabilidad adecuadas para el trabajo.

En este blog, analizamos cómo funciona la observabilidad de Kubernetes y cómo las organizaciones pueden usarla para optimizar las arquitecturas de TI nativas de la nube.

¿Cómo funciona la observabilidad?

En términos generales, la observabilidad describe qué tan bien se pueden inferir los estados internos del sistema a partir de los resultados externos. Es la capacidad de diagnosticar y comprender por qué un sistema se comporta de una manera particular, lo cual es vital para solucionar problemas, descifrar problemas de rendimiento y mejorar el diseño del sistema.

En DevOps, el concepto de observabilidad ha evolucionado para referirse a la visibilidad end-to-end de un estado del sistema según lo dictado por los datos de telemetría. Las clases de datos principales utilizadas, conocidas como los tres pilares de la observabilidad, son registros, métricas y trazas.

Registros

Los registros incluyen eventos discretos que se registran cada vez que ocurre algo en el sistema, como mensajes de estado o de error, o detalles de transacciones. Los registros de Kubernetes se pueden escribir en texto estructurado y no estructurado.

Métricas

Uso de CPU, consumo de memoria, E/S de red, latencia de solicitud o cualquier indicador específico de la compañía. Las métricas de Kubernetes a menudo se agregan para crear datos de observabilidad de seriales temporales que pueden ayudar a los equipos a detectar tendencias e identificar patrones.

Rastreos

Los rastreos ayudan a los equipos a seguir una solicitud o transacción a través de los distintos servicios y componentes de un sistema distribuido También ayudan a los equipos a visualizar las dependencias entre los diferentes componentes de una infraestructura para que los retrasos y los errores puedan localizar rápidamente.

Lograr una observabilidad exitosa requiere el despliegue de herramientas de monitoreo de Kubernetes adecuadas y la implementación de procesos efectivos para recopilar, almacenar y analizar los tres resultados principales. Esto puede incluir configurar y mantener sistemas de monitoreo, agregadores de registros de aplicaciones, herramientas de gestión del rendimiento de las aplicaciones (APM) u otras plataformas de observabilidad.

Sin embargo, los entornos de Kubernetes también requieren un examen más exhaustivo de las métricas estándar. Los sistemas Kubernetes componen un vasto entorno de contenedores interconectados, microservicios y otros componentes, todos los cuales generan grandes cantidades de datos. Kubernetes programa y automatiza las tareas relacionadas a lo largo del ciclo de vida de la aplicación, que incluyen:

Despliegue

Kubernetes puede implementar un número específico de contenedores en un host específico y mantenerlos en ejecución en el estado deseado.

Implementaciones

Una implementación es una modificación de la implementación de Kubernetes. Kubernetes permite a los equipos iniciar, pausar, reanudar y revertir implementaciones.

Descubrimiento de servicios

Kubernetes puede exponer automáticamente un contenedor a Internet u otros contenedores utilizando un nombre DNS o una dirección IP.

Escalado automático

Cuando el tráfico aumenta, Kubernetes puede activar automáticamente nuevos clústeres para manejar la carga de trabajo adicional.

Aprovisionamiento de almacenamiento

Los equipos pueden configurar Kubernetes para montar almacenamiento persistente local o en la nube para contenedores.

Equilibrio de carga

Según la utilización de CPU o las métricas personalizadas, las características de equilibrio de carga de Kubernetes pueden distribuir cargas de trabajo en toda la red para mantener el rendimiento y la estabilidad.

Autocorrección para alta disponibilidad

Kubernetes puede depurar, resetear o reemplazar automáticamente un contenedor fallido para evitar tiempos de inactividad. También puede dar de baja contenedores que no cumplan los requisitos de control sanitario.

Con tantos componentes cambiantes, interactuantes y en capas, surgen muchos problemas potenciales y puntos de falla, lo que genera muchas áreas en las que el monitoreo en tiempo real se vuelve una necesidad. También significa que un enfoque convencional para monitorear registros, métricas y rastros podría resultar insuficiente para la observabilidad en un entorno de Kubernetes.

Principios de observabilidad de Kubernetes

Debido a que cada componente de una arquitectura de Kubernetes es interdependiente de otros componentes, la observabilidad requiere un enfoque más holístico.

La observabilidad de Kubernetes requiere que las organizaciones vayan más allá de la recopilación y el análisis de datos a nivel de clúster de registros, trazas y métricas; la conexión de puntos de datos para comprender mejor las relaciones y los eventos dentro de los clústeres de Kubernetes es fundamental para el proceso. Esto significa que las organizaciones deben basar en una estrategia de observabilidad adaptada y nativa de la nube y escudriñar todas las fuentes de datos disponibles dentro del sistema.

La observabilidad en un entorno K8s implica:

1. Ir más allá de las métricas, los registros y las aplicaciones. Al igual que la supervisión de máquinas virtuales (VM), la observabilidad de Kubernetes debe tener en cuenta todos los datos de registro (de contenedores, nodos maestros y trabajadores, y la infraestructura subyacente) y las métricas a nivel de aplicación. Sin embargo, a diferencia de las máquinas virtuales, Kubernetes orquesta interacciones de contenedores que trascienden las aplicaciones y los clústeres. Como tales, los entornos Kubernetes albergan enormes cantidades de datos valiosos tanto fuera como dentro de los clústeres de red y las aplicaciones. Esto incluye los datos de las canalizaciones CI/CD (que alimentan los clústeres K8s) y los flujos de trabajo GitOps (que alimentan los clústeres K8s).

Kubernetes tampoco expone métricas, registros y datos de seguimiento del mismo modo que las aplicaciones y máquinas virtuales tradicionales. Kubernetes tiende a capturar "instantáneas" de datos, o información capturada en un punto específico del ciclo de vida. En un sistema en el que cada componente de cada clúster registra distintos tipos de datos en distintos formatos y a distintas velocidades, puede resultar difícil, o imposible, establecer la observabilidad simplemente analizando puntos de datos discretos.

Además, Kubernetes no crea archivos de registro maestros ni a nivel de aplicación ni de clúster. Cada aplicación y clúster registra datos en su entorno respectivo, por lo que los usuarios deben agregar y exportar datos manualmente para verlos todos en un solo lugar. Y dado que los contenedores pueden acelerar, disminuir o desaparecer por completo en segundos, incluso los datos agregados manualmente pueden proporcionar una imagen incompleta sin el contexto adecuado.

2. Priorizar el contexto y la correlación de datos. Tanto la supervisión como la observabilidad son partes clave para mantener una infraestructura de Kubernetes eficiente. Lo que los diferencia es una cuestión de objetivo. Mientras que el monitoreo ayuda a aclarar lo que está sucediendo en un sistema, la observabilidad tiene como objetivo aclarar por qué el sistema se comporta de la manera en que lo hace. Con ese fin, la observabilidad efectiva de Kubernetes prioriza conectar los puntos entre los puntos de datos para llegar a la causa raíz de los cuellos de botella de rendimiento y los problemas de funcionalidad.

Para comprender el comportamiento del clúster de Kubernetes, debe comprender cada evento individual en un clúster dentro del contexto de todos los demás eventos del clúster, el comportamiento general del clúster y cualquier evento que haya llevado al evento en cuestión.

Por ejemplo, si un pod comienza en un nodo de trabajo y termina en otro, debe comprender todos los eventos que ocurren simultáneamente en los otros nodos de Kubernetes y todos los eventos que ocurren en sus otros servicios de Kubernetes, servidores de API y espacios de nombres para obtener una comprensión clara del cambio, su causa principal, y sus posibles consecuencias.

En otras palabras, el mero hecho de monitorear las tareas suele ser inadecuado en un entorno de Kubernetes. Para lograr la observabilidad de Kubernetes, obtener información relevante sobre el sistema o realizar análisis precisos de causas raíz, los equipos de TI deben poder agregar datos de toda la red y contextualizarlos.

3. Uso de las herramientas de observabilidad de Kubernetes. Implementar y mantener la observabilidad de Kubernetes es una tarea grande y compleja. Sin embargo, el uso de los marcos y herramientas adecuados puede simplificar el proceso y mejorar la visualización y transparencia general de los datos.

Las compañías pueden elegir entre una variedad de soluciones de observabilidad, incluidos programas que automatizan la agregación y el análisis de métricas (como Prometheus y Grafana), programas que automatizan el registro (como ELK, Fluentd y Elasticsearch) y programas que facilitan la visibilidad de rastreo (como Jaeger). Las soluciones integradas, como OpenTelemetry, pueden gestionar las tres principales prácticas de observabilidad. Y soluciones personalizadas nativas de la nube, como Google Cloud Operations, AWS X-Ray, Azure Monitor y IBM Instana Observability, ofrecen herramientas de observabilidad y paneles de Kubernetes optimizados para clústeres que se ejecutan en su infraestructura.

Mejores prácticas para optimizar la observabilidad de Kubernetes

Defina sus indicadores clave de rendimiento (KPI). Determine qué indicadores clave de rendimiento, como el rendimiento de las aplicaciones, el estado del sistema y el uso de recursos, le brindan información más útil sobre el comportamiento de su infraestructura. Revísalos según sea necesario.
Centralizar el registro. Los entornos K8 generan cantidades masivas de datos. La agregación y el almacenamiento de esta información mediante una solución de registro centralizada es fundamental para la gestión de datos.
Monitorear el uso de recursos. Recopile datos en tiempo real sobre el uso de la memoria, la CPU y la red para poder escalar recursos de forma proactiva cuando sea necesario.
Configurar alertas y alarmas. Emplee umbrales de KPI establecido para configurar alertas y alarmas. Esta práctica permite que los equipos reciban notificaciones oportunas cuando surgen problemas.

Establezca la observabilidad de Kubernetes con IBM Instana Observability

Kubernetes es la plataforma de orquestación de contenedores estándar de la industria, que administra cargas de trabajo en contenedores con una eficiencia notable. Sin embargo, la arquitectura de microservicios distribuidos y multicapa de Kubernetes exige mecanismos de observabilidad sólidos y soluciones avanzadas, como IBM Instana Observability.

Instana Observability proporciona observabilidad automatizada de Kubernetes y capacidades de APM específicas para supervisar toda su pila de aplicaciones de Kubernetes, desde nodos y pods hasta contenedores y aplicaciones, para todas las distribuciones de Kubernetes.

La observabilidad en Kubernetes no es solo una implementación técnica; Es un enfoque estratégico que requiere una planeación atenta y una cultura organizacional que valore la transparencia de los datos.

Instana Observability ayuda a los equipos a obtener una comprensión integral de sus entornos de Kubernetes y a ofrecer aplicaciones estables y de alto rendimiento en un mundo cada vez más basado en la nube.

Autor

Chrystal R. China

Staff Writer, Automation & ITOps

IBM Think