¿Qué es el monitoreo de Kubernetes?

Definición de monitoreo de Kubernetes

El monitoreo de Kubernetes es un sistema de reportes que ayuda a los equipos de DevOps e IT a identificar problemas y gestionar de forma proactiva clusters de Kubernetes complejos. El monitoreo efectivo de Kubernetes permite la gestión en tiempo real de toda tu infraestructura en contenedores. Rastrea el tiempo de actividad y el uso de recursos de clusters, como memoria, CPU y almacenamiento. Además, rastrea las interacciones de los componentes de los clusters.

El monitoreo de Kubernetes permite a los operadores de clusters monitorear la funcionalidad. Reporta cuando no se está ejecutando la cantidad de pods necesaria, cuando el uso de recursos se aproxima a los límites críticos y cuando un pod o un nodo no pueden unirse al cluster debido a una falla o un error de configuración.

El monitoreo de Kubernetes te brinda información sobre el estado interno de los clusters, el recuento de recursos y las métricas de rendimiento. También puede permitirte descubrir y resolver rápidamente problemas mediante alertas proactivas y detección de anomalías basada en machine learning. Conoce más sobre cómo la herramienta de monitoreo de Kubernetes correcta puede ayudarte a comprender el estado de tus clusters de Kubernetes (y las aplicaciones que se ejecutan en ellos) visualizando logs, métricas y rastreos que generan a través de un lente unificado.

¿Qué es Kubernetes?

Kubernetes (K8s) es un sistema de orquestación de contenedores open source para automatizar el despliegue de software, el escalado y la gestión de aplicaciones en contenedores. Originalmente desarrollado por Google en 2014, el encargado actual de mantener el proyecto es Cloud Native Computing Foundation (CNCF). Kubernetes elimina muchos de los procesos manuales involucrados en la gestión de aplicaciones en contenedores. La orquestación de contenedores combina contenedores individuales en un todo coherente y coordinado.

Kubernetes puede desplegarse en diversas plataformas cloud, al igual que sistemas autogestionados, para hacer que los equipos de IT y DevOps sean más eficientes. Muchos proveedores de servicios cloud, como AWS, Google y Azure, brindan además algún tipo de servicios de Kubernetes gestionados para sus usuarios. Mediante la orquestación de contenedores en varios hosts, Kubernetes te permite hacer lo siguiente:

  • Maximizar los recursos necesarios para ejecutar aplicaciones
  • Automatizar los despliegues y las actualizaciones de aplicaciones
  • Escalar con rapidez aplicaciones en contenedores
  • Gestionar servicios para garantizar que las aplicaciones se estén ejecutando de la forma prevista

¿Por qué es importante monitorear Kubernetes?

El monitoreo de Kubernetes involucra muchos componentes más pequeños, entre ellos, hosts, contenedores, aplicaciones en contenedores y tu plataforma de Kubernetes en sí. Cuando surgen problemas, puede ser difícil identificar las causas. Un buen monitoreo de Kubernetes te permite ver dónde están ocurriendo los problemas (o están próximos a ocurrir) y tomar medidas.

Las soluciones de monitoreo de Kubernetes también pueden proporcionar reportes e información procesables sobre clusters, despliegues, pods, nodos y contenedores. También puedes configurar alertas para asegurarte de que tus equipos puedan responder con rapidez a cualquier evento de seguridad o rendimiento. Los datos obtenidos te permiten optimizar el estado, el rendimiento y las configuraciones de seguridad de tus clusters. Esto lleva al uso de recursos y menores costos.

El monitoreo de Kubernetes te permite hacer lo siguiente:

  • Garantizar que los equipos o aplicaciones consuman los recursos de forma óptima
  • Usar de forma automática nuevos recursos cuando se une un nodo nuevo al cluster
  • Redesplegar cargas de trabajo en los nodos disponibles cuando se caen los hosts
  • Provisionar actualizaciones y reversiones con más eficiencia

Métodos de monitoreo de Kubernetes

A fin de monitorear Kubernetes, debes tener lo siguiente:

  • Servidor de métricas ejecutándose en el cluster
  • Kube-state-metrics activadas
  • Mecanismo de recopilación desplegado
  • Herramienta de monitoreo de Kubernetes que pueda gestionar logs y métrica de Kubernetes
    Para obtener visibilidad total de tu entorno completo, una herramienta de observabilidad integral puede monitorear datos de Kubernetes además de rastreos, métricas y logs de aplicaciones.
  • Agente desplegado para recopilar métricas y logs
    Muchas soluciones de monitoreo de Kubernetes usan un enfoque de DaemonSet porque son relativamente fáciles de provisionar. Un DaemonSet es un pod especializado que asegura que una copia de su carga de trabajo se ejecute en todos los nodos dentro del cluster. Los desarrolladores pueden crear DaemonSets que ejecuten un agente de monitoreo en cada nodo de un cluster para recopilar métricas de rendimiento.

¿Cuáles son métricas clave en los casos de uso de monitoreo de Kubernetes?

Las métricas clave en el monitoreo de Kubernetes son las del plano de control, los nodos, los pods y los contenedores.

  • Las métricas del plano de control de Kubernetes te ayudan a comprender el rendimiento del cluster como un todo. En esencia, es kube-apiserver, que te permite observar elementos como:
    • Etcd: un almacén de valores clave coherente y de alta disponibilidad que se usa como almacén de backup de Kubernetes para todos los datos del cluster.
    • Kube-scheduler: un proceso de programación que decide dónde colocar los pods nuevos agregándolos a una cola para evaluar cada nodo disponible antes de vincularlos a uno apropiado.
    • Kube-controller-manager: un componente que combina todos los controladores en un solo proceso y los ejecuta juntos para reducir la complejidad.
    • Cloud-controller-manager: el controlador que interactúa con los recursos del Proveedor Cloud y te permite vincular tu cluster a la API del Proveedor Cloud.
  • Las métricas de nodo de Kubernetes monitorean el rendimiento de todo tu cluster de Kubernetes. Esto incluye la cantidad de recursos usados, la cantidad de aplicaciones ejecutándose en cada nodo y si tus nodos funcionan correctamente. Busca métricas de uso de recursos de nodos, como uso de disco y memoria, CPU y ancho de banda de red. Cada nodo contiene los siguientes elementos:
    • Kubelet: un agente que se ejecuta en cada nodo del cluster. Se asegura de que los contenedores se estén ejecutando en un pod.
    • Kube-proxy: un proxy de red que se ejecuta en cada nodo de tu cluster; implementa parte del concepto de Kubernetes Service.
    • Container runtime: un software que ejecuta contenedores, también conocido como un motor de contenedores.
  • Las métricas de contenedores de Kubernetes te permiten evaluar dónde te encuentras en comparación con los límites de recursos que configuraste, incluidas las métricas de uso de CPU de contenedores, el uso de memoria de contenedores y el uso de red.
  • Las métricas de pods de Kubernetes pueden indicarte si todos los pods de un despliegue se están ejecutando correctamente. Las métricas de aplicaciones te brindan información sobre el rendimiento y la disponibilidad de las aplicaciones que se ejecutan dentro de tus pods de Kubernetes, incluidos los elementos como el tiempo de actividad y el tiempo de respuesta, la capacidad de respuesta y la latencia.

Kubernetes cluster visualization including a control plane, nodes, pods, and containers

Desafíos del monitoreo de Kubernetes

Migrar aplicaciones tradicionales a Kubernetes puede requerir mucho tiempo. Si bien Kubernetes puede simplificar el despliegue de aplicaciones en contenedores y en los distintos clouds, su complejidad trae aparejado su propio conjunto de desafíos.

La orquestación de contenedores de Kubernetes ofrece poder de automatización dinámico. Por lo tanto, requiere sistemas de monitoreo igualmente dinámicos para inspeccionar componentes individuales y permitir alertas. Uno de los desafíos de monitoreo únicos que presentan las aplicaciones que se ejecutan en entornos en contenedores dinámicos es su complejidad. ¿Cómo diagnosticas y resuelves problemas con cientos de microservicios en miles de contenedores, que se ejecutan en pods efímeros y descartables?

Mejores prácticas de monitoreo de Kubernetes

Las mejores prácticas de monitoreo de Kubernetes son coherentes más allá de si tus nodos están desplegados en la misma ubicación, en varios clouds o en un cloud híbrido. La recopilación de métricas debería suceder de la misma forma en todo el cluster. Estas son algunas mejores prácticas útiles para tener en cuenta en el monitoreo de Kubernetes:

  • Usa espacios de nombres para organizar el cluster, simplificar la gestión de contenedores y minimizar el riesgo.
  • Actualiza a la versión más reciente de Kubernetes para obtener características nuevas, soluciones a errores y parches de seguridad.
  • Dales sentido a las alertas de Kubernetes configurando el monitoreo automatizado.
  • Configura el Control de Acceso basado en roles (RBAC) para gestionar permisos y acceder a usuarios y cuentas de servicio.
  • Configura notificaciones push a los administradores del cluster y define a los equipos responsables de resolver problemas específicos.
  • Usa etiquetas para organizar tus clusters y definir y gestionar objetos.
  • Disminuye los errores configurando un flujo de trabajo basado en Git optimizado.

Las soluciones de monitoreo de Kubernetes más exitosas cumplen con los requisitos siguientes:

  • Monitorean todas las capas de tu pila de tecnología. Se deben rastrear todos los sistemas de host (componentes centrales, nodos, pods y contenedores de Kubernetes dentro del cluster) y todas las aplicaciones y los servicios.
  • Detectan y monitorean automáticamente los servicios a medida que aparecen de forma dinámica.
  • Brindan una forma de recopilar y correlacionar datos para que puedas agrupar y explorar métricas, logs, rastreos y otros datos de observabilidad relacionados.
  • Se integran con estándares abiertos, como Prometheus y OpenTelemetry, a fin de reunir métricas adicionales.

Estas son algunas de las mejores prácticas para observar y asegurar los flujos de trabajo de servicios y aplicaciones en Kubernetes con Elasticsearch y OpenTelemetry.

Kubernetes frente a Docker

Kubernetes es diferente a Docker porque opera aplicaciones en contenedores a escala. Docker es un conjunto de herramientas de desarrollo de software que te permite compilar, compartir y ejecutar contenedores individuales.

Docker emplea una arquitectura cliente-servidor con comandos simples y automatización a través de una sola API. Proporciona una forma sencilla de empaquetar y distribuir aplicaciones en contenedores.

Las imágenes de contenedores compiladas con Docker pueden ejecutarse en una plataforma que soporte contenedores, como Kubernetes o Docker Swarm. Kubernetes es mejor que Docker para ejecutar, gestionar, programar y orquestar grandes volúmenes de contenedores en varios servidores y clusters. La mayoría de las empresas grandes prefieren Kubernetes para monitorear su estado y balancear sus cargas de forma eficiente.

Fundamentalmente, Kubernetes incluye una herramienta de línea de comando y API que te permite automatizar operaciones. Kubectl simplifica en gran medida la gestión de contenedores. Kubernetes es una plataforma para ejecutar y gestionar contenedores de muchos tiempos de ejecución de contenedores, incluidos los tiempos de ejecución de contenedor Docker. La capacidad de gestionar de forma automática una variedad de elementos hace que Kubernetes sea particularmente flexible. Su confiabilidad ahorra tiempo a los equipos de IT, lo que optimiza tu flujo de trabajo en general.

Dashboard de monitoreo de Kubernetes

Kubernetes basado en la web tiene un dashboard sencillo que ofrece una visión general de los recursos y los nodos, tanto de forma individual como en todos los clusters. Es una manera sencilla de desplegar aplicaciones en contenedores, gestionar recursos y solucionar problemas.

El dashboard listo para usar de Elastic, que se muestra abajo, incluye todos los espacios de nombres del cluster y las clases de almacenamiento definidas. Aquí también reside una visión general que incluye todos los nodos, espacios de nombres y volúmenes de almacenamiento persistentes. Está completa e incluye métricas de nodos agregadas detalladas.

Puedes ver reclamos de volumen persistentes de cada aplicación en clusters y una vista completa de todos los recursos de Kubernetes que se ejecutan en el cluster. También muestra todas las aplicaciones que se ejecutan en un espacio de nombres seleccionado, el uso actual de memoria de pods y la cantidad de pods listos para un despliegue o ReplicaSet.

Kubernetes monitoring dashboard

Monitoreo de Kubernetes con Elastic

Con Elastic Observability, puedes traer a una plataforma unificada los logs, las métricas y los rastreos de tu cluster de Kubernetes y las cargas de trabajo que se ejecutan en él. Esto te permite identificar de manera efectiva los problemas con los servicios de tus aplicaciones. Las métricas y los logs de los clusters de Kubernetes pueden usarse con la detección de anomalías basada en machine learning de Elastic para reducir tus datos de análisis de tiempo.

La solución de monitoreo de Kubernetes te brinda visibilidad en tiempo real de tu ecosistema de Kubernetes con un conjunto de características sin igual. Desarrollada a partir del Elastic Stack, la solución de observabilidad te permite desplegar y operar tus arquitecturas de Kubernetes sin problemas. Al unificar tus logs, métricas y rastreos de APM a escala en una única vista, puedes gobernar con efectividad la complejidad de las aplicaciones nativas del cloud altamente distribuidas. También obtienes observabilidad procesable para tu pila de tecnología nativa del cloud y monitoreo en el cloud. Esto te permite detectar y resolver proactivamente problemas en ecosistemas híbridos y multicloud en crecimiento.

Explora las soluciones de monitoreo de Kubernetes

Glosario de monitoreo de Kubernetes

Estos son algunos términos clave de Kubernetes a modo de referencia.

Clusters
Un conjunto de máquinas de trabajo, denominadas nodos, que ejecutan aplicaciones en contenedores. Cada cluster tiene al menos un nodo de trabajo.

Nodo
Un nodo es una máquina de trabajo en Kubernetes.

  • Maestro (nodo)
    Término heredado, se usa como sinónimo de nodos que hospedan el plano de control.
  • Nodo de trabajo
    Los nodos de trabajo hospedan los pods que son los componentes de la carga de trabajo de las aplicaciones.

Pod
El objeto de Kubernetes más pequeño y simple. Un pod representa un conjunto de contenedores en ejecución en tu cluster.

Contenedor
Una imagen ejecutable ligera y portátil que contiene software y todas sus dependencias.

Controlador
En Kubernetes, los controladores son bucles de control que observan el estado del cluster y luego hacen o solicitan cambios donde resulta necesario. Cada controlador intenta acercar el estado del cluster actual al estado deseado.

Kubelet
Un agente que se ejecuta en cada nodo del cluster. Se asegura de que los contenedores se estén ejecutando en un Pod.

Kube-proxy
Un proxy de red que se ejecuta en cada nodo de tu cluster; implementa parte del concepto de Kubernetes Service.

Etcd
Un almacén de valores clave coherente y de alta disponibilidad que se usa como almacén de backup de Kubernetes para todos los datos del cluster.

Entrada
Un objeto de API que gestiona el acceso externo a los servicios en un cluster, por lo general, HTTP. La entrada puede proporcionar balanceo de carga, terminación SSL y hospedaje virtual basado en nombres.