Introducción
Hablemos de las sondas de Kubernetes y por qué importan en sus implementaciones. Al administrar aplicaciones contenedores orientadas a la producción, incluso pequeñas optimizaciones pueden tener enormes beneficios.
Con el objetivo de reducir los tiempos de implementación, hacer que sus aplicaciones reaccionen mejor a la escala de eventos y gestionar la salud de las cápsulas en funcionamiento requiere ajustar la gestión del ciclo de vida de su contenedor. Esta es exactamente la razón por la cual la configuración adecuada, e implementación, de las sondas Kubernetes es vital para cualquier implementación crítica. Ayudan a su clúster a tomar decisiones inteligentes sobre el enrutamiento de tráfico, los reinicios y la asignación de recursos.
Las sondas configuradas correctamente mejoran drásticamente la confiabilidad de su aplicación, reducen el tiempo de inactividad de la implementación y manejan errores inesperados con gracia. En este artículo, exploraremos los tres tipos de sondas disponibles en Kubernetes y cómo utilizarlas entre sí ayuda a configurar sistemas más resistentes.
Rápido rápido
Comprender exactamente lo que hace cada sonda y algunos patrones de configuración comunes es esencial. Cada uno de ellos tiene un propósito específico en el ciclo de vida del contenedor y cuando se usan juntos, crean un marco sólido de roca para mantener la disponibilidad y el rendimiento de su aplicación.
Inicio: optimización de los tiempos de inicio
Las sondas de inicio se evalúan una vez cuando se gira un nuevo POD debido a un evento de ampliación o una nueva implementación. Sirve como guardián del resto de las verificaciones de contenedores y el ajuste fino ayudará a sus aplicaciones a manejar mejor la mayor carga o degradación del servicio.
Ejemplo de configuración:
startupProbe:
httpGet:
path: /health
port: 80
failureThreshold: 30
periodSeconds: 10
Control de llave:
- Mantener
periodSecondsBaja, de modo que la sonda se dispara a menudo, detectando rápidamente un despliegue exitoso. - Aumentar
failureThresholda un valor lo suficientemente alto como para acomodar el peor tiempo de inicio.
La sonda de inicio verificará si su contenedor ha comenzado consultando la ruta configurada. También lo hará Detenga la activación de las sondas de la vida y la preparación Hasta que tenga éxito.
Livials: Detección de contenedores muertos
Sus sondas de ventaja responden a una pregunta muy simple: “¿Esta cápsula sigue funcionando correctamente?” Si no, K8s lo reiniciará.
Ejemplo de configuración:
livenessProbe:
httpGet:
path: /health
port: 80
periodSeconds: 10
failureThreshold: 3
Control de llave:
- Dado que K8s reiniciará completamente su contenedor y girará uno nuevo, agregue un
failureThresholdpara combatir anormalidades intermitentes. - Evitar usar
initialDelaySecondsComo es demasiado restrictivo, use una sonda de inicio.
Tenga en cuenta que una sonda de vida en falla derribará su cápsula actualmente en funcionamiento y gire una nueva, así que evite que sea demasiado agresiva, eso es para la próxima.
Preparación: manejo de errores inesperados
La sonda de preparación determina si debe comenzar, o continuar, recibir tráfico. Es extremadamente útil en situaciones en las que su contenedor perdió la conexión a la base de datos o está demasiado utilizado y no debe recibir nuevas solicitudes.
Ejemplo de configuración:
readinessProbe:
httpGet:
path: /health
port: 80
periodSeconds: 3
failureThreshold: 1
timeoutSeconds: 1
Control de llave:
- Dado que este es su primer guardia para detener el tráfico a objetivos poco saludables, haga que la sonda sea agresiva y reduzca el
periodSeconds. - Mantener
failureThresholdComo mínimo, desea fallar rápidamente. - El período de tiempo de espera también debe mantenerse como mínimo para manejar más lento Contenedores.
- Dar el
readinessProbeSuficiente tiempo para recuperarse teniendo una carrera más largalivenessProbe.
Las sondas de preparación aseguran que el tráfico no alcance un contenedor que no esté listo para él y, como tal, es una de las más importantes en la pila.
Poniendo todo junto
Como puede ver, incluso si todas las sondas tienen sus propios usos distintos, la mejor manera de mejorar la estrategia de resiliencia de su aplicación es usarlas entre sí.
Su sonda de inicio lo ayudará en escenarios de ampliación y nuevas implementaciones, lo que permite que sus contenedores sean criados rápidamente. Se disparan solo una vez y también detienen la ejecución del resto de las sondas hasta que se completen con éxito.
La investigación de la vida ayuda a lidiar con contenedores muertos que sufren errores no recuperables y le dice al clúster que mencione una cápsula nueva y fresca solo para usted.
La sonda de preparación es la que le dice a K8s cuándo una cápsula debe recibir tráfico o no. Puede ser extremadamente útil tratar con errores intermitentes o un alto consumo de recursos, lo que resulta en tiempos de respuesta más lentos.
Configuraciones adicionales
Las sondas se pueden configurar aún más para usar un comando en sus comprobaciones en lugar de una solicitud HTTP, así como dar mucho tiempo para que el contenedor termine de manera segura. Si bien estos son útiles en escenarios más específicos, comprender cómo puede extender su configuración de implementación puede ser beneficioso, por lo que recomendaría hacer una lectura adicional si sus contenedores manejan casos de uso únicos.
Lectura adicional:
Vivativa, preparación y sondas de inicio
Configurar sondas de vida, preparación y inicio