重要
此页面上的设置旨在支持将自托管部署迁移到Kubernetes Operator 下的Kubernetes 。请勿在未进行相应迁移的情况下对直接部署在Kubernetes中的 MongoDB资源上设立。
本页记录了仅在从自我管理的虚拟机部署迁移到Kubernetes期间应用的MongoDB资源字段、状态条件和注释。有关完整的 MongoDB资源设立,请参阅MongoDB数据库资源规范。
外部成员
这些字段标识迁移扩展到Kubernetes 的源虚拟机或裸机进程。它们应用于 MongoDB资源apiVersion: mongodb.com/v1。
重要
这些字段仅用于迁移。对于全新Kubernetes部署,请勿在 MongoDB资源上设立它们。
名称覆盖
这些字段仅用于迁移,并覆盖Kubernetes Operator 使用或生成的资源或自动化配置名称。
spec.replicaSetNameOverride类型:字符串
此字段仅用于迁移。自动化配置副本集名称(当它与Kubernetes资源名称不同时,或者当自动化配置副本集名称不是有效的Kubernetes名称时)。
kubectl mongodb migrate-to-mck插件通过其--resource-name-override标志为您设置此字段。
spec.shardNameOverrides类型:
ShardNameOverride对象大量此字段仅用于迁移。每个分片的自动化配置副本集名称和分片
_id。注意
请勿将
spec.shardNameOverrides与spec.shardOverrides混淆。spec.shardOverrides配置每个分片的资源设置,与迁移命名无关。Kubernetes
StatefulSet名称永远不会受到这些覆盖的影响。
可配置的自动化配置路径
Kubernetes Operator 之前对这些自动化配置设置进行了硬编码。迁移要求它们可配置,以便Kubernetes部署可以匹配源虚拟机上已在使用的路径。
spec.downloadBase类型:字符串
默认值:
/var/lib/mongodb-mms-automationMongoDB 助手下载代理二进制文件的目录。 Kubernetes Operator 从此设置派生密钥文件路径
<downloadBase>/keyfile。
spec.security.tls.caFilePath类型:字符串
默认值:
/mongodb-automation/tls/ca/ca-pemKubernetes 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。原因状态含义ValidatingTrue已设立试运行注解。
ExtendingTrue所需的Kubernetes成员数超过了上次核对的数量。
PruningTrueexternalMembers计数降至status.migrationObservedExternalMembersCount以下。InProgressTrue外部成员存在,但没有任何变化。这也是第一次和解的原因。
MigrationCompleteFalse所有外部成员均已删除。
优先级为
Validating>Extending>Pruning>InProgress。同样增长Kubernetes端的修剪报告Extending,这是一次进行一项更改的另一个原因。不允许同时进行剪枝和扩展。
要根据迁移完成脚本,请使用
kubectl wait --for=condition=Migrating=False而不是轮询status.phase。
status.conditions[type=NetworkConnectivityVerified]类型: Kubernetes条件
空运行连接检查的结果。一旦没有剩余外部成员, Kubernetes Operator 就会从
status.conditions中完全删除此条件。验证器作业退出代码条件状态原因含义作业仍在运行
UnknownRunningstatus.phase是ConnectivityCheckRunning。0TrueNetworkValidationPassed所有外部成员均可访问并通过身份验证。
2FalseAuthenticationFailed档案、身份验证机制或缺少
__system@local角色。3FalseNetworkFailedDNS、TLS、超时或无法访问的成员。检查作业 Pod 日志。
1或其他FalseUnknownError未分类故障。检查作业 Pod 日志。
作业开始之前发生的失败使用原因
OperatorImageUnknown、BuildStatefulSetOptions、AgentCertSecretFailed和AgentCertSubject。一旦没有剩余外部成员, Kubernetes Operator 就会从
status.conditions中完全删除NetworkConnectivityVerified条件。
status.migrationObservedExternalMembersCount类型:整型
Kubernetes Operator 在上次协调时观察到的
spec.externalMembers条目数。 Kubernetes Operator 会在下一次协调时将此值与当前spec.externalMembers计数进行比较,以检测您是否修剪了外部成员。当没有剩余外部成员时,此字段未设置。注意
作为Go结构体嵌入的副作用,该字段也会出现在
MongoDBOpsManager自定义资源模式中。在MongoDBOpsManager资源上,该字段始终为 null。忽略它。
注解
需要针对特定迁移关注的相关字段
以下现有 MongoDB资源字段并非仅限迁移,而是需要特定值或在迁移期间查看:
在
kubectl mongodb migrate-to-mck插件生成的资源中,spec.members、spec.mongodsPerShardCount、spec.configServerCount和spec.mongosCount均从0开始。spec.memberConfig[].votes(整数,默认1)和spec.memberConfig[].priority(包含浮点数的字符串,默认"1")。您必须提供至少与spec.members一样多的spec.memberConfig条目。 Kubernetes Operator 会忽略分片的片集群的顶级spec.memberConfig。kubectl mongodb migrate-to-mck插件不会生成spec.memberConfig,并且Kubernetes Operator 不会默认将新成员设为不投票,因此在同步新成员时,1和"1"的 CRD 默认值完全错误。警告
在增加节点数之前设置 spec.memberConfig
默认下,新的Kubernetes成员作为投票成员加入。 CRD 默认值为
votes: 1和priority: "1",允许仍在同步的成员在完成初始同步之前参与选举。MongoDB建议您在增加成员计数之前为每个带有
votes: 0和priority: "0"的新Kubernetes成员写入一个spec.memberConfig条目,以便仍在同步的成员无法赢得选举。votes是一个整数。priority是一个字符串。