【问题标题】:Can't authenticate to mongodb hidden member on kubernetes, "Authentication failed."无法对 Kubernetes 上的 mongodb 隐藏成员进行身份验证,“身份验证失败。”
【发布时间】:2026-02-03 17:20:05
【问题描述】:

我已经在 k8s 上设置了一个 mongodb 的副本集,有 4 个成员(1 个主要成员,1 个辅助成员,1 个仲裁者,1 个隐藏用于备份)。所有成员都通过传递参数--auth启用身份验证。

我还创建了一个 cronjob,负责将 db 备份到 s3。

但是,当我尝试从 cronjob pod 连接到备份 pod 时遇到问题。

这是错误堆栈:

connecting to: mongodb://mongodb-backup-0.mongodb-backup.default.svc.cluster.local:27017/?authSource=admin&gssapiServiceName=mongodb
2019-04-05T04:26:52.870+0000 E QUERY    [js] Error: Authentication failed. :
connect@src/mongo/shell/mongo.js:343:13
@(connect):2:6
exception: connect failed

我允许从备份 pod 内部连接到 mongo 备份的实例:

rs0:SECONDARY> db.auth("admin", "test")
1

我也尝试从辅助 pod 连接备份 pod。它报告相同的错误。 这是我的命令:

mongo --authenticationDatabase admin --host mongodb-backup-0.mongodb-backup.default.svc.cluster.local --port 27017 -u "admin" -p "test"

但是,如果我在没有用户名和密码的情况下连接到备份 pod,我会启用连接到 mongodb 备份实例。

mongo --authenticationDatabase admin --host mongodb-backup-0.mongodb-backup.default.svc.cluster.local --port 27017

谁能给点建议?

【问题讨论】:

    标签: mongodb kubernetes


    【解决方案1】:

    我找到了这个问题的答案。

    我用 --authenticationMechanism 'SCRAM-SHA-256' 启动 mongod 实例 范围。因此,mongo shell 需要输入--authenticationMechanism 才能登录。

    【讨论】: