Secuencia de Verificación de Fallos de Aplicación
Si una aplicación está enfrentando problemas, ¿por dónde debemos empezar?
Vamos a considerar un escenario de una aplicación Web que se comunica con la base de datos.
Aquí hay algunos consejos sobre cómo realizar una verificación para intentar descubrir dónde está ocurriendo un problema específico.
Un buen log puede ser de gran ayuda. Sin embargo, dependiendo del problema, podemos tener una idea si debemos empezar por la izquierda o por la derecha.
Todo dependerá de cómo están organizados los objetos en el cluster. Si tenemos base de datos y aplicación web en namespaces diferentes, políticas de red diferentes, etc. Pero vamos a simplificar el problema, aunque es importante tener esto en mente.
Lo ideal es verificar cada eslabón mostrado en la imagen.
Si un usuario reporta problemas para acceder a la aplicación, ¿por dónde debemos empezar?
Si reportó que el problema está relacionado con el acceso, entonces vamos a empezar por la aplicación web.
-
Probar si la webapp es accesible. Una excelente herramienta para hacer esto es curl. Ejecutar:
curl http://webapp-service:node-port -
Verificar los endpoints en el servicio webapp para ver si corresponden a los de los pods.
2.1. Verificar si el selector del servicio corresponde a las etiquetas de los pods a los que está dirigido.
-
Verificar los pods, logs y eventos de los pods de la aplicación web para ver si no se están reiniciando.
3.1. Verificar usando
kubectl log,kubectl get pod,kubectl describe pod, etc.3.2. Verificar Política de Red.
3.3. Verificar Contenedores de Inicialización si existen.
3.4. Verificar comandos y argumentos.
3.5. Verificar variables de entorno.
3.6. Verificar secretos utilizados.
3.7. Verificar volúmenes montados y PVCs.
-
Verificar el servicio de base de datos de la misma forma que en el paso 2.
-
Verificar el pod de la base de datos como en el paso 3.
Esta fue solo una idea rápida, pero si no estás familiarizado con Kubernetes, puede ser difícil saber por dónde empezar.