0

当我增加副本集时,mongodb 代理永远不会变得健康。如果我最初从 3 个成员开始,则所有 3 个成员都会成功创建。如果我减少,它也会起作用(一段时间后)。

重现步骤:

  1. 在集群范围内安装了 mongodb-community-operator 版本 0.7.0。
  2. 创建一个有 1 个成员的 mongodb 社区对象(参见下面的代码)。使用版本 4.4.0 和 5.0.0 测试
  3. 等到 pod 运行。
  4. 增加会员
  5. 第一个成员的 mongodb-agent 永远不会变得健康。不会创建第二个成员。

发现:

  • 根据https://github.com/mongodb/mongodb-kubernetes-operator/blob/98b3c78aaca0c58b951156e6f4d7770fd913ebb6/docs/deploy-configure.md#deploy-a-replica-set中的第 4 点,操作员应创建一个包含连接字符串的密钥。事实并非如此。

  • mongodb 社区对象没有获得状态,尽管它应该有。在 mongodb operator pod 日志中发现此错误:Error updating the status of the MongoDB resource: MongoDBCommunity.mongodbcommunity.mongodb.com "my-database" is invalid: status.version: Required value

  • 在 mongodb-agent 容器中找到了一条日志,这表明缺少填充的状态字段导致在协调时出现了“StartFresh”步骤而不是“Start”:

    [2021-10-05T08:21:04.124+0000] [.info] [src/director/director.go:tracef:794] 0> [08:21:04.124] 运行步骤:移动“Start”的“StartFresh” [2021-10-05T08:21:04.124+0000] [.info] [src/director/director.go:tracef:794] 0> [08:21:04.124] 因为[以下所有情况均为真:['currentState .Running' = false] ['currentState.IsVCRedistCorrect' = true] ['desiredState.ProcessType' != mongos ('desiredState.ProcessType' = mongod)] ['currentState.StorageFieldsChangeFinished' = true] [以下全部为真: ['currentState.BackupRestoreFinished' = true] ['currentState.IsDirectAttachRestoreRequested' = false] ] ['currentState.CanStartFresh' = true] ]

我还检查了,将所有 pod 部署在一个节点上,以缓解子网连接问题。没变。增加成员数量的唯一(有效)方法是删除所有 pvc 并使用增加的成员数量开始新部署。但是数据随后被删除,因此这并不是真正的解决方法。

这是我的 mongodbcommunity 对象的代码:

apiVersion: mongodbcommunity.mongodb.com/v1
kind: MongoDBCommunity
metadata:
  name: my-database
  namespace: my-namespace
spec:
  members: 3
  type: ReplicaSet
  version: "5.0.0"
  security:
    authentication:
      modes: ["SCRAM"]
  users:
    - name: my-database-user
      db: admin
      passwordSecretRef:
        name: my-database-password
      roles:
        - name: clusterAdmin
          db: admin
        - name: userAdminAnyDatabase
          db: admin
        - name: readWrite
          db: my-database
      scramCredentialsSecretName: my-scram
  additionalMongodConfig:
    storage.wiredTiger.engineConfig.journalCompressor: zlib
4

0 回答 0