
Tengo una aplicación que se ejecuta como un servicio en el clúster Azure aks (kubernetes). Esta aplicación extrae datos de una base de datos y los coloca en un archivo.
Según tengo entendido, primero necesito crear una imagen de la ventana acoplable y enviarla al registro de Azure Aks. Una vez hecho esto, necesito crear un pod y ejecutar esta aplicación como un servicio.
La pregunta que tengo es -
a) Qué opción de Azure o Docker necesito usar para almacenar datos para que no se eliminen (eliminen) si el pod falla, se elimina o se reprograma en otro nodo y los datos permanecen disponibles en un archivo una vez que se crea el archivo.
b) Al buscar en Internet, parece que puedo usar el disco persistente de Azure o el almacenamiento de archivos creándolo estática o dinámicamente usando el comando kubectl. Sin embargo, la parte que no entiendo es: después de crear el almacenamiento persistente usando kubectl apply -f, ¿cómo puedo utilizar el almacenamiento en disco de Azure?
¿Necesito modificar el dockerfile y especificar una ruta de montaje (¿volumen?) y también especificar la ruta de montaje en la aplicación (por ejemplo, /mnt/app-data) donde la aplicación puede escribir datos en el archivo.
Si bien puede haber un mecanismo estándar para almacenar los datos en el clúster de aks, soy algo nuevo en esto y espero recibir consejos de expertos sobre cómo crear y usar almacenamiento en Azure (el clúster de aks para ser precisos) para que una aplicación escriba datos en él.
Respuesta1
Los datos persistentes en Kubernetes (independientemente de si se trata de AKS u otra implementación) requerirán que considere el uso de volúmenes persistentes. Este es un concepto en Kubernetes, que luego está respaldado por recursos de almacenamiento específicos en el proveedor de su elección; por ejemplo, en Azure es Azure Disk o Azure Files.
En primer lugar, le recomendaría que evalúe su aplicación y determine si realmente necesita almacenar datos de forma persistente en su módulo. Ser apátrida hace que su vida sea mucho más fácil cuando trabaja con Kubernetes desde una perspectiva de resiliencia y recuperación ante desastres. ¿Podría convertir su base de datos (que se ejecuta fuera de AKS) en la fuente de la verdad y hacer que la aplicación descargue los datos cada vez que se ejecuta, por ejemplo?
Si necesita almacenar estos datos, debe considerar adjuntar un volumen persistente a sus pods y especificarlo como un volumen en su archivo Docker. Hay un buen recorrido sobre cómo funciona el almacenamiento y cómo configurarlo.aquí.