Una actualización de Deployment en GKE terminó forzosamente su aplicación antes de que cerrara su conexión a la base de datos. ¿Cómo debería modificar la aplicación para asegurar un cierre elegante?
Elige una respuesta
Toca una opción para verificar tu respuesta.
Respuesta correcta: Actualice su código para procesar una señal SIGTERM recibida y desconectarse elegantemente de la base de datos..
Por qué esta es la respuesta
La opción correcta es actualizar el código para procesar una señal SIGTERM. Cuando Kubernetes termina un Pod, envía una señal SIGTERM al contenedor principal. La aplicación debe capturar esta señal y usarla como una indicación para iniciar un proceso de apagado elegante, que incluiría cerrar conexiones a bases de datos, liberar recursos y completar tareas pendientes. Si la aplicación no maneja SIGTERM, Kubernetes esperará el terminationGracePeriodSeconds y luego enviará un SIGKILL, que termina la aplicación forzosamente sin permitirle limpiar. Un PodDisruptionBudget (PDB) evita interrupciones voluntarias que harían que la cantidad de Pods disponibles caiga por debajo de un umbral, pero no evita terminaciones forzadas si el Pod no responde a SIGTERM. Aumentar terminationGracePeriodSeconds solo da más tiempo a la aplicación para cerrarse, pero no resuelve el problema subyacente de que la aplicación no maneja la señal de apagado. Un hook PreStop se ejecuta antes de que se envíe SIGTERM, pero es menos confiable para un apagado elegante completo que el manejo directo de SIGTERM dentro de la aplicación.
Aprueba tu examen — sin la interminable búsqueda de respuestas
Obtén todas las preguntas y explicaciones verificadas para este examen en un solo lugar, y ahorra horas de preparación. Más de 1,000 certificaciones · Más de 20 idiomas · Empieza gratis.
Aprueba tu examen más rápido → No se requiere tarjeta