Kubernetes, el software de orquestación de contenedores de código abierto, domina el mundo de las aplicaciones en contenedores al tener la mayor cuota de mercado, por lejos. Y hay muchas razones para ello. Kubernetes amplía drásticamente las capacidades del software para entornos habilitados para contenedores, como Docker. Simplifica la gestión de la implementación, el enrutamiento de la red, la utilización de recursos, el equilibrio de carga, la resiliencia de las aplicaciones en ejecución y mucho más.
Sin embargo, esta solución no funcionará de manera efectiva por sí sola sin una preparación adecuada y una configuración adicional, ya que cada clúster recién creado no tiene un rendimiento óptimo por defecto. Siempre existen dificultades y matices sutiles en la implementación y el funcionamiento de Kubernetes, así como el problema del uso subóptimo de sus ventajas, lo que en última instancia conduce a la pérdida de dinero. En este caso, los representantes de los equipos de TI deben poseer suficiente experiencia, métodos e instrumentos para identificar configuraciones incorrectas y cuellos de botella, pero al mismo tiempo, existe una escasez global de expertos en Kubernetes en el mercado, porque en este momento la popularidad de K8s está superando el nivel de conocimiento sobre él entre los especialistas técnicos.
Principales problemas de rendimiento de Kubernetes
Basado en el investigación Según Circonus, los cuatro principales problemas de rendimiento de Kubernetes son:
- contención de recursos para clústeres/nodos/pods,
- problemas de implementación,
- desafíos del escalamiento automático,
- bucles de bloqueo y fallos laborales.
No fue una sorpresa, ya que esos problemas se deben en gran medida a las peculiaridades de la tecnología y a la falta de conocimientos y experiencia a la hora de trabajar con esta plataforma.
En el corazón de Kubernetes hay un programador que coloca contenedores en los nodos. En pocas palabras, es como llenar cajas de distintos tamaños con elementos de distintos tamaños y formas. Desde ese punto de vista, el programador necesita saber la capacidad exacta de los nodos, así como el tamaño de cada contenedor que se coloca en ellos. Si no lo hace, se produce un exceso de aprovisionamiento de los nodos y graves problemas de rendimiento.
Cómo solucionar los problemas de rendimiento de Kubernetes
Monitoreo de métricas de Kubernetes
La forma más eficiente (y, al mismo tiempo, la más desafiante) de abordar los problemas de rendimiento de K8 es, sin duda, aumentar la capacidad de observación de la plataforma para poder comprender cuáles de las métricas recopiladas debe controlar para identificar la causa raíz de ciertos problemas. De hecho, Kubernetes le proporciona numerosas métricas y la mayoría de ellas son una fuente importante de información sobre cómo utilizar la plataforma, independientemente de cómo la ejecute realmente.
Sistemas de monitoreo de código abierto como Prometeo Puede ser de gran ayuda en Visualizando sus costos de KubernetesY con la ayuda de un programa independiente de exportación, es posible traducir las métricas de los nodos al formato adecuado y enviarlas al servidor Prometheus. Al instalarlo en cada nodo de su clúster, podrá acceder a docenas de categorías de métricas, las más importantes de las cuales están relacionadas con el uso de CPU, disco, memoria y red.
A pesar de que hemos reducido el rango de métricas estudiadas a cuatro categorías, en esta etapa aún nos resultará difícil entender qué indicadores son primordiales para nosotros. Dado que Kubernetes es un ejemplo de un sistema complejo, deberíamos tomar el camino de simplificar las abstracciones en torno a las categorías que nos interesan. Posteriormente, esto nos ayudará a analizar no solo las métricas de los nodos, sino en general todas las métricas de Kubernetes.
Los métodos más comunes para simplificar abstracciones son:
- El método USE, introducido en 2012 por Brendan Gregg, dirigido a los recursos de su sistema:
Utilización: el tiempo promedio que el recurso estuvo ocupado prestando servicio al trabajo.
Saturación: el grado en el cual el recurso tiene trabajo adicional que no puede atender, a menudo en cola.
Errores: el recuento de eventos de error.
- El método RED (2015), que define las tres métricas clave que debes medir para cada microservicio en tu arquitectura:
(Tasa de solicitud): la cantidad de solicitudes atendidas.
(Errores de solicitud): la cantidad de solicitudes fallidas.
(Solicitud) Duración: distribuciones de la cantidad de tiempo que toma cada solicitud.
- Las Cuatro Señales Doradas (descritas en el libro Site Reliability Engineering de Google) son hasta cierto punto una fusión de los métodos anteriores:
Latencia: el tiempo que lleva atender una solicitud.
Tráfico: una medida de cuánta demanda se coloca en su sistema, medida en una métrica específica del sistema de alto nivel.
Errores: la tasa de solicitudes que fallan, ya sea explícitamente, implícitamente o por la política.
Saturación: qué tan “lleno” está su servicio.
Resulta que no basta con tener información extensa sobre los recursos de los nodos del cluster de Kubernetes, también es importante poder analizarlos. Por ejemplo, analizar los recursos (como CPU, disco, memoria y red) a través de la lente del uso, la saturación y los errores (método USE) puede darnos una idea de cómo se están gastando los recursos y permitirnos optimizar y escalar aún más su uso.
Una vez que su equipo de TI descubra qué recursos están subutilizados y sobreutilizados, podrán definir los límites de almacenamiento óptimos, el tamaño óptimo de CPU y memoria para los nodos del clúster y los grupos de nodos óptimos para cada nodo, lo que a su vez les permitirá Analizar los costos de Kubernetes y analizar su rendimiento..
Cumplir con las mejores prácticas
Independientemente del éxito con el que monitoree y analice el uso de recursos de Kubernetes, hay una serie de prácticas recomendadas a seguir para ayudarlo a aprovechar la plataforma al máximo.
- Optimice su entorno para Kubernetes.
Tenga en cuenta que las herramientas en contenedores se diseñaron originalmente para una arquitectura débilmente acoplada que consta de aplicaciones sin estado que procesan datos pero no almacenan nada. Por lo tanto, es un error no hacer nada antes de implementar aplicaciones con estado que almacenen datos y no adaptar la arquitectura de las aplicaciones monolíticas para permitir que se ejecuten en Kubernetes. - Utilice Kubernetes sólo cuando sea necesario.
Al migrar a Kubernetes, recuerde que tiene sentido ejecutar bases de datos y algunas aplicaciones en una máquina virtual, y un posible traslado solo por el hecho de hacerlo puede afectar gravemente el rendimiento. - Cuente con especialistas que sepan trabajar con Kubernetes.
Trabajar con Kubernetes requiere administradores de sistemas con experiencia práctica con la plataforma, ya que mantener con éxito este ecosistema de componentes requiere un alto nivel de experiencia. - Adaptar los procesos de TI para la implementación de Kubernetes.
Kubernetes está cambiando radicalmente la distribución de funciones y responsabilidades dentro de un equipo de TI. Ahora, la implementación adecuada requiere un cambio hacia los procesos DevOps, y los desarrolladores deben aceptar esta metodología y sus herramientas.A través de DevOps, los administradores de sistemas mantienen la infraestructura, mientras que los desarrolladores respaldan la aplicación desde la planificación y la codificación hasta el lanzamiento, la implementación, la supervisión y la producción. Los desarrolladores ahora no pueden evitar conocer la infraestructura; también deben comprender cómo funciona su código en el contexto de todos estos nuevos procesos.
- Aproveche herramientas adicionales que amplíen la funcionalidad de Kubernetes sin depender únicamente de la funcionalidad lista para usar.
Nuestro producto, OptScale, puede ayudar a definir correctamente un conjunto de características y configuraciones como el tamaño correcto de la máquina virtual, los tipos de máquinas, la selección de regiones, la reestructuración de los recursos del trabajo CI/CD o los grupos de afinidad de pods para lograr un mejor rendimiento.
Para probarlo, puedes solicitar una versión de prueba gratuita; no se necesita tarjeta de crédito → https://my.optscale.com/register