对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

迁移的网络要求

将由 MongoDB Ops Manager 或 Cloud Manager 在虚拟机上托管的部署迁移到 Kubernetes Operator 下的 Kubernetes,需要虚拟机托管和 Kubernetes Pod 之间的双向网络连接。您需要自行预配此连接,而不是由 Kubernetes 操作符 来完成。

这种连接性完全取决于您自己的网络设置,包括您的网络拓扑结构、防火墙规则、DNS 配置和云提供商。因此,无法提供具体的通用指导。本页的其余部分介绍了 Kubernetes 操作符自动检查的内容、它不检查的内容以及用于将 Kubernetes Pods 暴露给虚拟机的配置。

预运行连接验证器作业检查虚拟机节点是否可从 从 Kubernetes 环境访问。它不会检查从虚拟机到 Kubernetes 的反向。您必须使用本页面后面的设置相关检查表,自行验证该方向。

为使虚拟机节点能够访问到 Kubernetes Pod,请使用 spec.externalAccess。这与 Kubernetes 操作符在迁移之外使用的外部访问机制相同:它会为每个 Pod 创建 LoadBalancer 或 NodePort,从而将 Pod 暴露到 Kubernetes 集群之外。

(可选)将 spec.externalAccess.externalDomain 设置为虚拟机节点可以解析的主机名。您需要负责此主机名的 DNS 设置;Kubernetes Operator 不会为您创建或管理 DNS 记录。

重要

如果您将 MongoDB Search 或向量搜索与此部署一起使用,请勿设置 externalDomain。MongoDBSearch 不支持设置了 externalDomain 的 MongoDB 资源。请改为独立使用 spec.externalAccess。要了解更多,请参阅 MongoDB Search 与迁移的交互。

警告

您创建集群后无法删除 externalDomain。在设置此字段之前,请确认您的主机名和 DNS 策略。

Kubernetes 节点主机名遵循 <metadata.name>-0.<spec.externalAccess.externalDomain> 模式,其中数字索引会为每个附加节点递增 1。

没有任何单一命令可以保证双向连接都已正确配置。使用此清单查看您的设置,并根据您自己的网络调整每个项目:

  • 确认您的 Kubernetes 节点的主机名可从虚拟机节点解析。

  • 确认 Kubernetes 节点或负载均衡器 IP 地址可从虚拟机访问。

对于分片集群,您可以针对每个组件配置外部访问:

  • spec.externalAccess 仅配置 mongos。

  • spec.mongos.externalAccess 取代 mongos 的根级字段。

  • spec.shard.externalAccess 并且必须分别设置 spec.configSrv.externalAccess 以公开分片和配置服务器副本集的每个 Pod。

Kubernetes 操作符 会自动生成一个名为 <metadata.name>-cluster-connection-string 的连接字符串 Secret。此 Secret 不包含任何凭证,并且 Kubernetes Operator 会在迁移过程中随着成员资格的变化使其与活动节点保持同步。

将你的应用程序指向此 Secret,而不是硬编码的连接字符串。这样做意味着,在迁移过程中成员资格的变动不需要对您的应用程序进行硬切换。

在将部署扩展到 Kubernetes 中之前,请配置外部访问和 externalDomain。Kubernetes 操作符不支持在迁移已经进行之后添加这些设置。