无法对kubernetes上的mongodb隐藏成员进行身份验证,“身份验证失败”。

时间:2019-04-05 04:42:45

标签: mongodb kubernetes

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

我还创建了一个cronjob,负责将数据库备份到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"

但是,如果我没有用户名和密码就连接到备份容器,则可以连接到mongodb备份实例。

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

任何人都可以提供建议吗?

1 个答案:

答案 0 :(得分:0)

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

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