架构、功能和限制
在此页面上
限制
多 Kubernetes 集群 MongoDB 部署存在以下限制:
仅部署
MongoDBMultiCluster
资源的副本集。 不支持分片集群部署。使用高于 5.0.7 的 Ops Manager 版本。
仅使用 Kubernetes 密钥 作为您的秘密存储工具。HashiCorp Vault 不支持密钥存储工具。
对于同一 Kubernetes Operator 实例不同时管理 MongoDBOpsManager和MongoDB自定义资源的部署,您必须在 Ops Manager 中手动配置KMIP备份加密客户端设置。要了解更多信息,请参阅手动配置 KMIP 备份加密。
不要添加 ServiceMonitor 到您的
MongoDBMultiCluster
资源。Kubernetes Operator 不支持与 Prometheus 集成。您可以创建新的多 Kubernetes 集群 MongoDB 部署,并联系MongoDB 支持部门帮助您将数据从现有 Kubernetes 部署迁移到多 Kubernetes 集群 MongoDB 部署。 您无法将现有的单 Kubernetes 集群部署扩展到新的 Kubernetes 集群。
多集群部署功能
本节介绍多 Kubernetes 集群 MongoDB 部署功能,您可以使用与使用 Kubernetes Operator 部署 MongoDB 资源的单个集群相同的过程来配置该功能。 其他多 Kubernetes 集群 MongoDB 部署功能在本指南中都有自己的文档。
连接 DNS SRV 记录
要以用户身份连接到多 Kubernetes 集群 MongoDB 部署数据库,可以使用connectionString.standardSrv
: DNS 种子列表连接字符串。此字符串包含在 Kubernetes Operator 为多 Kubernetes 集群 MongoDB 部署创建的密钥中。使用与连接到使用 Kubernetes Operator 部署的单个集群相同的程序连接到多 Kubernetes 集群 MongoDB 部署。请参阅从 Kubernetes 内部连接到 MongoDB 数据库资源,然后选择标签页 Using the Kubernetes Secret 。
托管数据库用户的安全性
使用这些方法托管数据库用户的安全性:
这些过程与使用 Kubernetes 操作符部署单个集群的过程相同,但存在以下例外情况:
这些过程仅适用于副本集。 多 Kubernetes 集群 MongoBB 部署不支持创建分片集群。
在
mongodbResourceRef
中,指定多 Kubernetes 集群 MongoDB 部署副本集的名称:name: "<my-multi-cluster-replica-set>"
。
为单集群MongoDB Ops Manager资源设置可查询备份
如果使用MongoDB Ops Manager Operator 在单个Kubernetes 集群上部署Kubernetes 实例,则托管 Operator 的集群也可能托管MongoDB Ops Manager 。在这种情况下,您可以为 MongoDB Ops Manager资源 配置可查询备份 。MongoDB Ops Manager在多个Kubernetes 集群上部署 资源时,不支持可查询备份。
部署架构和图表
无论是否依赖服务网格,都可以创建多 Kubernetes 集群 MongoDB 部署。 要了解更多信息,请参阅规划外部连接:是否应该使用服务网格?
在以下两个图表中,MongoDB Enterprise Kubernetes Operator 执行这些操作:
监视中央集群中的
MongoDBMultiCluster
资源规范创建情况。使用已挂载的
kubeconfig
文件与成员集群通信。根据 MongoDB cluster 中副本集成员的数量,在每个成员集群中创建必要的资源,例如 ConfigMaps、Secrets、Services 和 StatefulSet Kubernetes 对象。
使用相应的
MongoDBMultiCluster
资源规范标识用于部署每个 MongoDB 副本集的集群,并部署 MongoDB 副本集。监视
CentralCluster
和MemberCluster
事件。协调其创建的资源,以确认多 Kubernetes 集群 MongoDB 部署处于所需状态。
使用 MongoDB Enterprise Kubernetes Operator 的多 Kubernetes 集群 MongoDB 部署由一个中央集群和一个或多个 Kubernetes成员集群组成:
中央集群具有以下角色:
托管 MongoDB Enterprise Kubernetes Operator
充当多 Kubernetes 集群 MongoDB 部署的控制平面
托管 MongoDB 副本集的
MongoDBMultiCluster
资源规范托管 Ops Manager(如果您使用 Kubernetes Operator 部署 Ops Manager)
还可以托管 MongoDB 副本集的成员
重要
中央集群也称为操作符集群。 在未来版本中,对中央集群的引用可能会重命名,以引用操作符集群。
成员集群托管 MongoDB 副本集。
请注意,如果中央集群(也称为 Operator 集群)发生故障,您无法使用 Kubernetes Operator 更改部署,直到您恢复对此集群的访问或将 Kubernetes Operator 重新部署到另一个可用的 Kubernetes 集群。要了解更多信息,请参阅灾难恢复。
图表:使用服务网格部署多 Kubernetes 集群
下图展示了跨区域和可用区的多 Kubernetes 集群 MongoDB 部署的高级架构。 此部署使用服务网格,例如 Istio。 服务网格:
托管在不同 Kubernetes 节点集群中的 MongoDB 节点的发现。
处理副本集成员之间的通信。
您可以在服务网格内的任何成员集群上托管应用程序,例如:
在使用 Kubernetes 操作符部署的集群之外的 Kubernetes 集群上,或者
在多 Kubernetes 集群 MongoDB 部署中的成员集群上。
图表:不使用服务网格的多 Kubernetes 集群部署
下图展示了跨区域和可用区的多 Kubernetes 集群 MongoDB 部署的高级架构。 此部署不依赖服务网格来实现托管 Pod 与 MongoDB 实例的 Kubernetes 集群之间的连接。
要处理不同 Kubernetes 集群中的 Pod 托管的 MongoDB 副本集成员之间的外部通信,请使用外部域和 DNS 区域。
您可以在任何成员集群上托管应用程序。