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

MongoDB 迁移资源设置

重要

此页面上的设置用于支持在 Kubernetes 操作符下将自管理部署迁移到 Kubernetes 中。请勿将其设置在您可以直接部署在 Kubernetes 中的 MongoDB 资源上,但没有陪同的迁移。

本页面文档了仅在从自管理虚拟机部署迁移到 Kubernetes 期间适用的 MongoDB 资源字段、状态条件和注释。有关 MongoDB 资源设置的完整列表,请参阅 MongoDB 数据库资源规范。

这些字段标识了迁移正在扩展到 Kubernetes 中的源虚拟机或裸机进程。它们适用于 MongoDB 资源 apiVersion: mongodb.com/v1。

重要

这些字段仅用于迁移。请勿将其设置在 MongoDB 资源上,用于全新的 Kubernetes 部署。

spec.externalMembers

类型:ExternalMember 对象的数组

作为迁移的一部分的虚拟机或裸机源过程。此字段仅用于迁移。

您可以从此列表中删除条目,但是一旦开始迁移,您绝不可以添加条目。空白的 spec.externalMembers 列表意味着迁移已完成。

spec.externalMembers[].processName

类型:字符串

必需

此字段仅用于迁移。进程名称必须与自动化配置的 processes 数组中显示的内容完全一致。

spec.externalMembers[].hostname

类型:字符串

必需

此字段仅用于迁移。该进程的 host:port 值,与自动化配置中显示的值完全一致。

spec.externalMembers[].type

类型: 枚举: mongod 或 mongos

分片集群必需

此字段仅用于迁移。一个副本集只有 mongod 个外部节点。

spec.externalMembers[].replicaSetName

类型:字符串

Optional

此字段仅用于迁移。分片集群 mongod 外部节点必需。标识该进程是属于配置服务器副本集还是特定分片的副本集。

这些字段仅用于迁移,并将覆盖 Kubernetes 操作符 原本会使用或生成的资源或自动化配置名称。

spec.replicaSetNameOverride

类型:字符串

此字段仅用于迁移。当自动化配置副本集名称与 Kubernetes 资源名称不同,或者自动化配置副本集名称不是有效的 Kubernetes 名称时,该名称即为自动化配置副本集名称。kubectl mongodb migrate-to-mck 插件通过其 --resource-name-override 标志为您设置此字段。

spec.configServerNameOverride

类型:字符串

此字段仅用于迁移。自动化配置中显示的配置服务器副本集名称。

spec.shardNameOverrides

类型:ShardNameOverride 对象的数组

此字段仅用于迁移。每分片自动化配置副本集名称和分片 _id。

注意

请勿将 spec.shardNameOverrides 与 spec.shardOverrides 混淆。spec.shardOverrides 配置每分片的资源设置,与迁移命名无关。

Kubernetes StatefulSet 名称从不受这些覆盖的影响。

Kubernetes 操作符以前硬编码了这些自动化配置设置。迁移要求它们可配置,以便 Kubernetes 部署可以匹配源虚拟机上已在使用的路径。

spec.downloadBase

类型:字符串

默认值:/var/lib/mongodb-mms-automation

MongoDB Agent 下载代理二进制文件的目录。Kubernetes 操作符会从此设置中获取密钥文件路径,并将其设置为 <downloadBase>/keyfile。

spec.security.tls.caFilePath

类型:字符串

默认值:/mongodb-automation/tls/ca/ca-pem

Kubernetes 操作符 将 CA 证书投影到 pod 内部的绝对路径。此路径必须至少包含两个路径段。应用程序数据库不支持此功能。

注意

如果您的 Pod 模板在此路径或其上方挂载卷,则该挂载可能会遮蔽投影的 CA 文件。在设置自定义值之前,请查看您的 podTemplate 卷挂载。

spec.security.authentication.agents.autoPEMKeyFilePath

类型:字符串

数据库 Pod 中 MongoDB Agent 组合 PEM 文件的绝对路径。设置此字段将设置 MongoDB Ops Manager 或 Cloud Manager tls.autoPEMKeyFilePath 值,并将 spec.security.authentication.agents.clientCertificateSecretRef 引用的密钥挂载到该路径。

需要 spec.security.authentication.agents.clientCertificateSecretRef。

默认为 Kubernetes Operator 用于非迁移部署的哈希派生代理证书挂载路径。

status.conditions

类型:Kubernetes Conditions 的数组

标准 Kubernetes 条件,以 type 为键值。此字段在 MongoDB 资源上是新增的,并支持迁移。

status.conditions[type=Migrating]

类型:Kubernetes 条件

迁移是否处于活动状态的顶级指标。当 spec.externalMembers 非空时,status 为 True;一旦删除最后一个外部节点,它将变为 False,原因为 MigrationComplete。

原因
状态
含义

Validating

True

空运行注释已设置。

Extending

True

所需的 Kubernetes 节点数超过了上次协调的计数。

Pruning

True

externalMembers 计数低于 status.migrationObservedExternalMembersCount。

InProgress

True

外部节点存在,但没有任何变化。这也是在初次协调时的原因。

MigrationComplete

False

所有外部节点均已移除。

优先级是 Validating > Extending > Pruning > InProgress。一个也会扩展 Kubernetes 侧的清理报告 Extending,这是逐步更改的另一个原因。

不允许同时进行修剪和扩展。

若要通过脚本实现迁移完成后的操作,请使用 kubectl wait --for=condition=Migrating=False,而不是轮询 status.phase。

status.conditions[type=NetworkConnectivityVerified]

类型:Kubernetes 条件

预演运行连接性检查的结果。Kubernetes 操作符会在没有外部节点留下时,从 status.conditions 中完全删除此条件。

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

作业仍在运行

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 条件。

status.migrationObservedExternalMembersCount

类型:整型

Kubernetes 操作符 在上次协调时观察到的 spec.externalMembers 条目的数量。Kubernetes 操作符会在下一个协调时将此值与当前的 spec.externalMembers 计数进行比较,以检测您是否删除了外部节点。当没有剩余外部节点时,此字段未设置。

注意

该字段也会出现在 MongoDBOpsManager 自定义资源模式中,作为 Go 结构嵌入的副作用。在 MongoDBOpsManager 资源上,该字段始终为 null。在那里忽略它。

metadata.annotations.mongodb.com/migration-dry-run

类型:string(布尔值)

kubectl mongodb migrate-to-mck 插件将此注解设置为 true。当此注解存在时,Kubernetes Operator 不会进行任何自动化配置更改,仅执行连接验证。删除该注解将启动实际的迁移。

metadata.annotations.mongodb.com/migrate-tool-version

类型:字符串

记录生成该资源的 kubectl mongodb migrate-to-mck 插件的版本。Kubernetes 操作符在每次协调时(包括在试运行期间)都会根据其自身版本验证此注释。

以下现有的 MongoDB 资源字段不仅用于迁移,但在迁移过程中需要特定值或查看: