在计划将自管理部署迁移到 Kubernetes 之前,请查看本页面中的限制。有些限制会完全阻碍迁移,而另一些限制则需要您围绕缺失的功能进行规划。
每个项目一个部署
MongoDB Ops Manager 或 Cloud Manager 项目必须恰好包含一个部署。如果项目包含多个部署,kubectl mongodb 插件会报错。
如果您的项目包含多个部署,请在迁移之前将它们分割为单独的项目。要了解具体操作,请参阅 将 MongoDB 部署迁移到新项目 中的 MongoDB Ops Manager 文档。
嵌入式配置服务器不受支持
其配置服务器也由其一个分片支持的分片集群无法迁移。Kubernetes 操作符检测到嵌入式配置服务器,并在导入时拒绝迁移。
入站连接未自动验证
试运行仅验证从 Kubernetes 到虚拟机的连接性。它不会自动检查虚拟机到 Kubernetes 的入站连接。在依赖连接方向之前,请亲自验证连接方向。
无自动回滚
迁移一旦开始,就没有自动化的方法可以撤销。请在开始之前规划好迁移并进行备份,因为您无法通过插件或操作符进行回滚。
若要手动回滚正在进行的迁移:
将自动化配置恢复到迁移前的状态。
直接在 MongoDB Ops Manager 或 Cloud Manager 中编辑自动化配置。
警告
如果您在 Kubernetes Operator 仍在运行时删除 MongoDB 资源,Kubernetes Operator 不会删除 Ops Manager 或 Cloud Manager 中的项目,以保护外部节点。但是,Kubernetes Operator 会自动删除该资源的 StatefulSet 和 Pod。根据迁移的进度,删除这些 Pod 可能会导致副本集失去投票大多数。
无需初始复制或预复制
迁移仅通过 MongoDB 复制来移动数据。Kubernetes 操作符 不会通过任何其他机制将数据植入或预复制到新的 Kubernetes 节点中。
无自动清理
删除外部节点是一项手动操作。您需要一次从 spec.externalMembers 中删除一个条目。操作符不会为您自动执行此步骤。
Ops Manager 本身不会被迁移
此工作流仅迁移由 MongoDB Ops Manager 或 Cloud Manager 托管的 MongoDB 部署。它不会迁移 Ops Manager 或 Cloud Manager 本身。
迁移期间的配置冻结
在迁移过程中,请勿在迁移步骤之外对部署进行版本或配置更改。在迁移期间,也不支持通过 MongoDB Ops Manager 用户界面进行并发编辑。
在迁移过程中,预计某些字段会发生变化:
- 节点数以及
memberConfig中的votes和priority字段会随着您扩展、提升和修剪节点而发生变化。
其他设置在整个迁移过程中必须与源部署匹配,并且不得更改:
MongoDB 版本
特征兼容性版本
端口
身份验证模式
内部集群身份验证
不会自动同步到新节点的设置
在迁移之前请规划好这些设置,因为 Kubernetes Operator 不会在新的 Kubernetes 节点上复制它们:
secondaryDelaySecs在延迟节点上。隐藏节点上的隐藏设置。
buildIndexes在节点上设置为false。
如果您在虚拟机上运行分析节点或延迟节点,请在 Kubernetes 节点上自行重新配置相应设置,在它们加入副本集后。
在 MongoDBMultiCluster 上不受支持
Kubernetes 操作符 不支持对 MongoDBMultiCluster 资源进行迁移。spec.externalMembers 字段有意未添加到该 CRD。不存在 MongoDBProject CRD。