¿Qué es un operador?
Un operador es un mecanismo estándar que amplía el plano de control de Kubernetes para gestionar recursos personalizados de Kubernetes. Dado que cada operador está creado para sus propios Recursos Personalizados (CR), puede contener lógica que aborde el tipo de servicio para el que se crea el operador. Para el Operador de Kubernetes, el operador incluye la lógica para la implementación de instancias de MongoDB Server y Ops Manager.
Cada CR utilizado por el Operador de Kubernetes representa un elemento de una implementación de MongoDB Server en Kubernetes y ofrece opciones para personalizar esa parte de la implementación. Una vez que configures estos objetos en la implementación de Kubernetes, el operador compila objetos nativos de Kubernetes, como conjuntos con estado, que son necesarios para crear pods de acuerdo con tus requerimientos especificados para servidores MongoDB. El Operador de Kubernetes también facilita la configuración de las funcionalidades de MongoDB Server, como las copias de seguridad de la base de datos, a través de la interacción con MongoDB Cloud Manager u Ops Manager.
¿Por qué ejecutar MongoDB Enterprise Advanced en Kubernetes?
Ejecutar MongoDB en Kubernetes simplifica la configuración y la gestión del auto-hospedaje de MongoDB.
El operador de Kubernetes trabaja con MongoDB y Ops Manager para automatizar la configuración utilizando archivos de recursos personalizados que cree para definir su configuración. Esto te permite gestionar la configuración utilizando las herramientas que ya tienes para gestionar aplicaciones en Kubernetes, incluidas las herramientas que permiten un flujo de trabajo GitOps donde la configuración se gestiona en un repositorio Git. El alto nivel de automatización y abstracción de la complejidad hace que Kubernetes y el Operador de Kubernetes sean especialmente adecuados para ejecutar MongoDB como un servicio, tanto para usuarios internos como para clientes externos.
Kubernetes permite que MongoDB aproveche la escalabilidad y la resiliencia automatizada que ofrece Kubernetes, como la sustitución automática de un pod perdido que forma parte de un set de réplicas o clúster. Esto permite que MongoDB sea altamente escalable y resistente cuando se ejecuta en Kubernetes.
¿Qué tan escalable es MongoDB en Kubernetes?
MongoDB dentro de Kubernetes es tan escalable como MongoDB en bare metal o VM. Para muchos clientes, la escalabilidad es más fácil de lograr dentro de Kubernetes. El Operador de Kubernetes y Kubernetes trabajan juntos sin problemas para permitir una fácil escalabilidad horizontal, incluida la capacidad de extender implementaciones de MongoDB a través de varios clústeres de Kubernetes para la resiliencia multinivel y multisitio.
El escalado vertical es tan sencillo como cambiar los recursos de una implementación desde el recurso personalizado que la define.
Todo esto permite que MongoDB se escale para satisfacer cualquier demanda.
¿Existen desventajas al ejecutar MongoDB dentro de Kubernetes?
No existen desventajas desde una perspectiva técnica. MongoDB en Kubernetes es tan eficiente y escalable como MongoDB ejecutándose en cualquier hardware o infraestructura.
Pero, como con cualquier infraestructura, existe un requisito inherente para que los clientes tengan familiaridad y experiencia con la tecnología, en este caso, Kubernetes. Mientras que el Operador de Kubernetes simplifica y automatiza la configuración de MongoDB dentro de Kubernetes, sigue existiendo una dependencia de los recursos y capacidades subyacentes que forman parte del clúster de Kubernetes, como el almacenamiento de estado, la red, la seguridad y la computación. Esto significa que los clientes aún deben asegurarse de que esos servicios y recursos estén disponibles y configurados correctamente para admitir MongoDB, al igual que sería necesario si se ejecutara en servidores físicos o máquinas virtuales.
¿Qué plataformas Kubernetes son compatibles con las implementaciones de MongoDB Server?
MongoDB Server es compatible con cualquier plataforma que se base en Kubernetes nativo sin modificar la lógica o el comportamiento predeterminados. En la práctica, esto significa que MongoDB Server es compatible con cualquier plataforma de Kubernetes certificada por la Cloud Native Computing Foundation. Para obtener más información, consulte Compatibilidad del Operador de Kubernetes de MongoDB.
¿Cuántas implementaciones pueden soportar los controladores MongoDB para el operador de Kubernetes?
Kubernetes operador puede gestionar cientos de implementaciones. Para facilitar las operaciones de reconciliación en paralelo y evitar tiempos prolongados de reconciliación, incremente el número de threads de su instancia de Kubernetes Operator.
¿Debo ejecutar MongoDB Server en Kubernetes en el mismo clúster que la aplicación que lo usa?
Para ayudar a minimizar la latencia, considere colocar su base de datos y aplicaciones en el mismo clúster de Kubernetes si su arquitectura de implementación lo permite.
¿Puedo implementar MongoDB Server en múltiples clústeres de Kubernetes?
Sí. Para obtener más información, consulta Implementar recursos MongoDB en múltiples clústeres de Kubernetes. Para obtener ayuda, contacta a Soporte de MongoDB.
¿Cuál es la diferencia entre utilizar el Operador Kubernetes para gestionar implementaciones de MongoDB en múltiples clústeres Kubernetes y gestionar un solo clúster Kubernetes?
Para utilizar el operador de Kubernetes para gestionar una implementación de MongoDB en un clúster multi-Kubernetes, debes configurar un conjunto específico de Roles, ClusterRoles, RoleBindings, ClusterRoleBindings y ServiceAccounts.
El operador de Kubernetes utilizado para una implementación de MongoDB con varios clústeres de Kubernetes también puede reconciliar un único recurso de clúster de Kubernetes. Para obtener más información, consulte ¿MongoDB admite la ejecución de más de una instancia de operador de Kubernetes?
¿MongoDB permite ejecutar más de una instancia de Kubernetes operador?
Si es posible, recomendamos que configure una única instancia de Kubernetes operador para supervisar uno, varios o todos los namespaces dentro de su clúster de Kubernetes. Por defecto, el Operador de Kubernetes supervisa todos los Recursos personalizados tipos que elijas implementar, y no necesitas configurarlo para supervisar tipos de recursos específicos.
Sin embargo, una vez que se alcanza un límite de rendimiento para el número de implementaciones que una sola instancia de Kubernetes operador puede soportar, es posible configurar una instancia adicional de Kubernetes operador. En este punto, considere cómo desea dividir la gestión de los recursos en el clúster de Kubernetes. Utiliza las siguientes recomendaciones listadas en orden de prioridad:
Asegúrate de que cada instancia del operador de Kubernetes esté vigilando diferentes namespaces que no se superpongan dentro del clúster de Kubernetes.
Como alternativa, configura distintas instancias del Operador de Kubernetes para supervisar distintos tipos de recursos, ya sea en diferentes espacios de nombres o en espacios de nombres superpuestos.
Si elige utilizar espacios de nombres superpuestos, asegúrese de que cada instancia del operador de Kubernetes supervise diferentes tipos de recursos para evitar conflictos que podrían resultar en dos instancias del operador de Kubernetes que intenten administrar los mismos recursos.
Nota
Antes de configurar otra instancia del Operador de Kubernetes, asegúrate de que ninguno de sus namespaces esté incluido en el subconjunto de namespaces de la instancia ya existente del Operador de Kubernetes.