对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

MongoDB迁移资源设置

重要

此页面上的设置旨在支持将自托管部署迁移到Kubernetes Operator 下的Kubernetes 。请勿在未进行相应迁移的情况下对直接部署在Kubernetes中的 MongoDB资源上设立。

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

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

重要

这些字段仅用于迁移。对于全新Kubernetes部署,请勿在 MongoDB资源上设立它们。

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 Operator 使用或生成的资源或自动化配置名称。

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 Operator 之前对这些自动化配置设置进行了硬编码。迁移要求它们可配置,以便Kubernetes部署可以匹配源虚拟机上已在使用的路径。

spec.downloadBase

类型:字符串

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

MongoDB 助手下载代理二进制文件的目录。 Kubernetes Operator 从此设置派生密钥文件路径 <downloadBase>/keyfile。

spec.security.tls.caFilePath

类型:字符串

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

Kubernetes Operator 在 Pod 内投影 CA 证书的绝对路径。此路径必须包含至少两个路径段。不支持应用程序数据库。

注意

如果您的 Pod 模板在此路径处或之上挂载了卷,则该挂载可能会影响投影的 CA文件。在设立自定义值之前,请检查您的 podTemplate 卷挂载。

spec.security.authentication.agents.autoPEMKeyFilePath

类型:字符串

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

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

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

status.conditions

类型: Kubernetes条件大量

标准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 Operator 就会从 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 Operator 就会从 status.conditions 中完全删除 NetworkConnectivityVerified 条件。

status.migrationObservedExternalMembersCount

类型:整型

Kubernetes Operator 在上次协调时观察到的 spec.externalMembers 条目数。 Kubernetes Operator 会在下一次协调时将此值与当前 spec.externalMembers 计数进行比较,以检测您是否修剪了外部成员。当没有剩余外部成员时,此字段未设置。

注意

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

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

类型:字符串(布尔值)

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

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

类型:字符串

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

以下现有 MongoDB资源字段并非仅限迁移,而是需要特定值或在迁移期间查看: