¿Qué es un operador?
Un operador es un mecanismo estándar que extiende el plano de control de Kubernetes para gestionar recursos personalizados. Dado que cada operador está diseñado para sus propios recursos personalizados (CR), puede contener lógica que aborda el tipo de servicio para el que está diseñado. En el caso del operador de Kubernetes, este 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 configurados estos objetos en la implementación de Kubernetes, el operador crea objetos nativos de Kubernetes, como conjuntos con estado, necesarios para crear pods según los requisitos específicos de los servidores MongoDB. El operador de Kubernetes también facilita la configuración de las funciones de MongoDB Server, como las copias de seguridad de la base de datos, mediante 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 administración de MongoDB autohospedado.
El Operador de Kubernetes trabaja con MongoDB y Ops Manager para automatizar la configuración mediante archivos de recursos personalizados que usted crea para definir su configuración. Esto le permite gestionar la configuración con las herramientas que ya tiene para administrar aplicaciones en Kubernetes, incluyendo herramientas que habilitan un flujo de trabajo de GitOps donde la configuración se gestiona en un repositorio Git. El alto nivel de automatización y la abstracción de la complejidad hacen que Kubernetes y el Operador de Kubernetes sean especialmente adecuados para ejecutar MongoDB como servicio, tanto para usuarios internos como para clientes externos.
Kubernetes permite a MongoDB aprovechar la escalabilidad y la resiliencia automatizada que ofrece, como el reemplazo automático de un pod perdido que forma parte de un conjunto de réplicas o un clúster fragmentado. Esto permite a MongoDB ser altamente escalable y resiliente al ejecutarse en Kubernetes.
¿Qué tan escalable es MongoDB en Kubernetes?
MongoDB en Kubernetes es tan escalable como MongoDB en hardware o máquinas virtuales. Para muchos clientes, la escalabilidad es más fácil de lograr dentro de Kubernetes. Kubernetes Operator y Kubernetes trabajan en conjunto para facilitar el escalado horizontal, incluyendo la capacidad de extender las implementaciones de MongoDB a múltiples clústeres de Kubernetes para lograr resiliencia multiclúster 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 escale para satisfacer cualquier demanda.
¿Existen desventajas al ejecutar MongoDB dentro de Kubernetes?
No presenta inconvenientes desde un punto de vista técnico. MongoDB en Kubernetes ofrece el mismo rendimiento y escalabilidad que MongoDB en cualquier hardware o infraestructura.
Sin embargo, como con cualquier infraestructura, es inherentemente necesario que los clientes estén familiarizados y tengan experiencia con la tecnología, en este caso, Kubernetes. Si bien el Operador de Kubernetes simplifica y automatiza la configuración de MongoDB dentro de Kubernetes, aún depende de los recursos y capacidades subyacentes que forman parte del clúster de Kubernetes, como el almacenamiento con estado, las redes, la seguridad y la computación. Esto significa que los clientes aún deben asegurarse de que dichos servicios y recursos estén disponibles y configurados correctamente para soportar MongoDB, tal como 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 basada en Kubernetes nativo sin modificar la lógica ni el comportamiento predeterminados. En la práctica, esto significa que MongoDB Server es compatible con cualquier plataforma Kubernetes certificada por la Cloud Native Computing Foundation.Para obtener más información, consulte Compatibilidad de operadores de Kubernetes de MongoDB.
¿Cuántas implementaciones puede soportar MongoDB Enterprise Kubernetes Operator?
Kubernetes Operator admite cientos de implementaciones. Para facilitar las operaciones de conciliación paralelas y evitar tiempos de conciliación prolongados, aumente el número de subprocesos de su instancia de Kubernetes Operator.
¿Debo ejecutar MongoDB Server en Kubernetes en el mismo clúster que la aplicación que lo utiliza?
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,consulte Implementar recursos de MongoDB en varios clústeres de Kubernetes. Para obtener ayuda, contacte con el soporte técnico de MongoDB.
¿Cuál es la diferencia entre usar el operador de Kubernetes para administrar implementaciones de MongoDB en múltiples clústeres de Kubernetes y administrar un solo clúster de Kubernetes?
Para utilizar el operador de Kubernetes para administrar una implementación de MongoDB de varios clústeres de Kubernetes, debe configurar un conjunto específico de roles de Kubernetes: 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 admite la ejecución de más de una instancia de operador de Kubernetes?
Si es posible, le recomendamos configurar una sola instancia de Kubernetes Operator para supervisar uno, varios o todos los espacios de nombres de su clúster de Kubernetes. De forma predeterminada, Kubernetes Operator supervisa todos los tipos de recursos personalizados que decida implementar, y no es necesario configurarlo para supervisar tipos de recursos específicos.
Sin embargo, una vez alcanzado el límite de rendimiento para la cantidad de implementaciones que una sola instancia de Kubernetes Operator puede admitir, puede configurar una instancia adicional. En este punto, considere cómo desea distribuir la administración de recursos en el clúster de Kubernetes. Siga las siguientes recomendaciones, ordenadas por prioridad:
Asegúrese de que cada instancia del operador de Kubernetes supervise espacios de nombres diferentes y no superpuestos dentro del clúster de Kubernetes.
Como alternativa, configure diferentes instancias del operador de Kubernetes para observar diferentes tipos de recursos, ya sea en espacios de nombres diferentes 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 de Kubernetes Operator, verifique que ninguno de sus espacios de nombres esté incluido en el subconjunto de espacios de nombres de la instancia de Kubernetes Operator existente.