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

通过试运行验证迁移准备情况

kubectl mongodb 插件始终会向其生成的资源添加 mongodb.com/migration-dry-run: true 注释,以便将部署迁移到 Kubernetes。只要存在该注释,Kubernetes Operator 就不会进行任何自动化配置更改。它仅验证连接性和凭证,因此您可以在 Kubernetes Operator 接管部署之前根据需要多次修复问题并重新运行。

  • Kubernetes 操作符为每个 MongoDB 资源创建一个作业,名为 <resourceName>-connectivity-check。该作业调用所有外部节点,并对其进行身份验证。它使用 ttlSecondsAfterFinished 自行删除,下一个协调会重新创建它,因此,修复后的重新验证是自动的。您无需要手动 trigger 它。

  • 预运行会检查 Kubernetes 到虚拟机的可访问性(DNS、TLS、防火墙和节点地址)和凭证,包括 local 数据库上的 __system 角色,以及启用 TLS 时的 CA。

  • 试运行不会检查虚拟机到 Kubernetes 的入站连接。请自行验证该方向,可以通过 Ops Manager 用户界面监控部署状态,或者从虚拟机节点运行 rs.status() 并确认其可以访问 Kubernetes Pod。

  • 插件和 Kubernetes 操作符 版本检查都会运行,无论是否存在 dry-run 注释。

  • 一个生成的 MongoDB 自定义资源,其中仍然存在 mongodb.com/migration-dry-run: true 注释。要学习如何生成此资源,请参阅 将副本集迁移到 Kubernetes。

  • 如果部署使用 TLS,则需要 为迁移到 Kubernetes 配置 TLS 中描述的节点证书和 CA 材料。

  • Kubernetes 操作符 ServiceAccount 具有 batch/jobs 权限 (create、get、list、watch和delete)。没有此授权,Kubernetes 操作符根本无法创建连接验证器作业。

1

应用 MongoDB 自定义资源,同时保持设置 dry-run 注释。Kubernetes 操作符 创建 <resourceName>-connectivity-check 作业,并通过 status.phase 和 NetworkConnectivityVerified 条件报告进度。

在作业运行时,status.phase 显示 ConnectivityCheckRunning。

2

读取 status.conditions[type=NetworkConnectivityVerified]:

验证器作业退出代码
条件状态
原因
含义

作业仍在运行

Unknown

Running

status.phase 为 ConnectivityCheckRunning。

0

True

NetworkValidationPassed

所有外部节点都可访问并已经身份验证。

2

False

AuthenticationFailed

凭证、身份验证机制或缺失 __system@local 角色。

3

False

NetworkFailed

DNS、TLS、超时或无法访问的节点。检查作业 Pod 日志。

1 或其他

False

UnknownError

未分类失败。检查作业 Pod 日志。

在作业开始之前发生的故障使用原因 OperatorImageUnknown、BuildStatefulSetOptions、AgentCertSecretFailed 和 AgentCertSubject。

一旦没有外部节点留下,Kubernetes 操作符会从 status.conditions 中完全删除 NetworkConnectivityVerified 条件。

3

根据需要,修复 Kubernetes 或 Ops Manager 用户界面中的连接或凭证问题。您无需删除或重新应用任何内容:下一次协调会自动重新创建验证程序作业。

如果试运行似乎卡住,请删除 <resourceName>-connectivity-check 作业。下一个协调将重新创建它。

在 Kubernetes 操作符 ServiceAccount 上缺少 batch/jobs RBAC 授权会阻止作业在第一时间创建,因此,在该情况下根本不会出现任何条件或作业。在作业开始前发生的故障会表现为原因 OperatorImageUnknown、BuildStatefulSetOptions、AgentCertSecretFailed 或 AgentCertSubject,而非上述表格中的退出代码原因。

4

当 NetworkConnectivityVerified 条件为 True 且原因为 NetworkValidationPassed 时,删除该注解:

kubectl annotate mdb <resourceName> \
mongodb.com/migration-dry-run-

重要

删除 dry-run 运行注释是 Kubernetes 操作符接管 Ops Manager 或 Cloud Manager 项目的时间点。请将其视为您刚刚验证的连接和凭证状态的不可逆转点。