Kubernetes Operator 可以将Ops Manager或Cloud Manager在虚拟机或裸机上管理的部署迁移到Kubernetes。迁移是实时增量迁移。您的部署在整个进程中始终提供读取和写入服务。您可以使用普通的MongoDB复制将成员从虚拟机一次移动一个到Kubernetes 。
迁移如何进行
迁移依赖于标准MongoDB复制,而不是数据复制工具。它分三个阶段进行:
扩展。将Kubernetes成员添加到现有副本集。 Kubernetes Operator 将新节点创建为无投票权,并从现有节点执行初始同步。
推广。您可以将投票和优先级从虚拟机节点转移到Kubernetes节点上。外部成员保留其在源代码自动化配置中已有的任何投票和优先级,直到您将其删除。
修剪。一次删除一个虚拟机成员,等待副本集在每次删除之间达到目标状态。
当Kubernetes Operator 管理 100% 的成员、spec.externalMembers 为空并且所有数据都位于Kubernetes持久卷声明中时,迁移已完成。点,虚拟机上已不再有任何成员。
为什么迁移不使用快照恢复或Cluster-to-Cluster Sync
迁移工作流程不会恢复快照,也不会使用 mongosync 或其他集群到集群同步工具。集群到集群的同步工具会在切换时造成停机,缺乏对时间序列集合的支持,并且通常需要字段帮助才能安全运行。基于复制的迁移避免了这些限制。您的部署保持可用,迁移支持与部署其他部分相同的集合类型,并且您可以使用 kubectl mongodb 插件自行驱动进程。
迁移期间的可用性
在整个迁移中,读取保持可用。在选举期间,写入可能会短暂失败,因此您的驱动程序必须使用可重试写入。如果读取目标移动,读取延迟可能会增加,因此请在与虚拟机相同的地区运行Kubernetes集群。针对已迁移的从节点(secondary node from replica set)的长时间运行游标会中断,因为没有静默模式。
混合操作是暂时的
在迁移过程中,您的部署以混合状态运行,成员分割在虚拟机和Kubernetes上。 Kubernetes Operator 仅支持这种混合状态作为主动迁移期间的过渡条件。迁移期间,两个环境之间需要永久的双向网络连接。 Kubernetes Operator 不支持无限期运行分割环境部署。
迁移不执行的操作
Kubernetes Operator 不会:
停用虚拟机。您可以在迁移完成后自行停用它们。
回滚迁移。一旦迁移开始,就没有自动撤销迁移的方法。
播种或预复制数据。所有数据移动都是通过MongoDB复制进行的。
迁移Ops Manager或Cloud Manager本身。只有MongoDB 部署才会移至Kubernetes。