CONTEXTO : He estado aprendiendo Kubernetes y tratando de adquirir experiencia práctica. He estado usando AKS para abstraer la complejidad de tener que lidiar con el plano de control (y porque tengo una cuenta gratuita de Azure para estudiantes). Estoy implementando una aplicación NodeJS que se conecta a la base de datos MongoDB. Hasta ahora, la implementación ha sido exitosa, pero estoy usando MongoDB Atlas y conectándome a él.
Según lo poco que he aprendido sobre conjuntos con estado, el servicio MongoDB Atlas parece mucho más fácil y conveniente, pero mi pregunta es, ¿cuándo sería una mejor idea considerar implementar un conjunto con estado con la base de datos MongoDB? (corriendo en el pod) ¿Qué es más rentable? ¿Más fácilmente escalable?
Me doy cuenta de que las preguntas pueden ser un poco vagas, pero recién estoy comenzando con Kubernetes.
descargo de responsabilidad: esta no es una aplicación de producción, solo algo simple que estoy usando para aprender K8S
Official docs docs usa statefullset y eso tendría sentido. En general, todos los tipos de aplicaciones de base de datos se implementan como estado completo. Porque puede haber estados en los que los nodos no están sincronizados entre sí y eso crearía inconsistencias de datos entre los nodos (nodos mongodb no kubernetes).
Puede implementar MongoDB como implementación. Lo he visto desplegado. Pero la mayoría de los clientes usan una cadena de conexión para conectarse (una cadena de varias direcciones de nodo). Y dado que kubernetes expone conjuntos completos de estado con servicios sin cabeza, debería estar bien.
Para fines de aprendizaje , le aconsejo que implemente su MongoDB en un StatefulSet. Luego, puede aprender cómo funciona y qué problema podría encontrar con este objeto de Kubernetes.
Para la aplicación de producción , aconsejo nunca implementar una base de datos en un StatefulSet si no la necesita. De hecho, StatefulSet vendrá con muchos problemas que quizás no necesite administrar.
A veces, las reglas de las empresas restringen el alojamiento de sus datos en el almacenamiento externo de la empresa.
Para saber si necesitas poner tu base de datos en un StatefulSet, la pregunta que trato de responder es:
Puede encontrar una lista de ventajas y desventajas en la documentación .