mongodb - 尝试在 Kubernetes 上的 MongoDB 中创建新用户时连接被拒绝
问题描述
我正在使用带有只读文件系统的自定义 MongoDB 映像,并尝试使用 Kind 在我的 Mac 上本地将其部署到 Kubernetes。下面是我的 statefulset.yaml。我无法运行名为 的自定义脚本mongo-init.sh
,该脚本会创建我的数据库用户。Kubernetes 只允许一个入口点,所以我使用它来运行我的 db 启动命令:mongod -f /docker-entrypoint-initdb.d/mongod.conf
. 它不允许我在那之后运行另一个命令或脚本,即使我&
在最后附加了 a 。我尝试使用,但如果我的第一个命令是初始化命令"/bin/bash/", "-c", "command1", "command2"
,则不会执行。最后,如果我跳过 mongod 初始化命令,数据库没有启动并运行,我无法连接到它,所以我得到一个连接被拒绝。当我进入容器时,我可以使用 mongo shell 进入数据库command2
mongod
kubectl exec
mongo
,但我无法查看任何内容或真正执行任何命令,因为我收到unauthorized
错误消息。完全失去了这一点,可以使用一些帮助。
apiVersion: apps/v1
kind: StatefulSet
metadata:
annotations:
creationTimestamp: null
labels:
app: mydb
name: mongodb
namespace: mongodb
spec:
serviceName: "dbservice"
replicas: 1
selector:
matchLabels:
app: mydb
template:
metadata:
annotations:
creationTimestamp: null
labels:
app: mydb
spec:
# terminationGracePeriodSeconds: 10
imagePullSecrets:
- name: regcred
containers:
- env:
- name: MONGODB_APPLICATION_USER_PWD
valueFrom:
configMapKeyRef:
key: MONGODB_APPLICATION_USER_PWD
name: myconfigmap
- name: MONGO_INITDB_DATABASE
valueFrom:
configMapKeyRef:
key: MONGO_INITDB_DATABASE
name: myconfigmap
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
configMapKeyRef:
key: MONGO_INITDB_ROOT_PASSWORD
name: myconfigmap
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
configMapKeyRef:
key: MONGO_INITDB_ROOT_USERNAME
name: myconfigmap
image: 'localhost:5000/mongo-db:custom'
command: ["/docker-entrypoint-initdb.d/mongo-init.sh"]
name: mongodb
ports:
- containerPort: 27017
resources: {}
volumeMounts:
- mountPath: /data/db
name: mongodata
- mountPath: /etc/mongod.conf
subPath: mongod.conf
name: mongodb-conf
readOnly: true
- mountPath: /docker-entrypoint-initdb.d/mongo-init.sh
subPath: mongo-init.sh
name: mongodb-conf
initContainers:
- name: init-mydb
image: busybox:1.28
command: ["chown"]
args: ["-R", "998:998", "/data"]
volumeMounts:
- name: mongodata
mountPath: /data/db
volumes:
- name: mongodata
persistentVolumeClaim:
claimName: mongo-volume-claim
- name: mongodb-conf
configMap:
name: myconfigmap
defaultMode: 0777
我这样做时看到的错误消息kubectl logs <podname>
:
MongoDB shell version v4.4.1
connecting to: mongodb://localhost:27017/admin?compressors=disabled&gssapiServiceName=mongodb
Error: couldn't connect to server localhost:27017, connection attempt failed: SocketException: Error connecting to localhost:27017 (127.0.0.1:27017) :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:374:17
@(connect):2:6
exception: connect failed
exiting with code 1
解决方案
推荐阅读
- javascript - React Firebase 实现类似功能
- javascript - 尝试使用 Fetch 和 FormData 在 JavaScript 中重新创建 Python API 调用请求
- c# - 关于 C# 和函数原型的问题
- r - 如何使用数据帧的标准向量对数据帧进行子集化?
- discord.js - 如何修复我的不和谐机器人的代码?
- r - 如何将每日/每周/每月价值除以年度价值
- c# - 使用迁移的动态 sql 查询
- javascript - Discord.js 如果客户端没有权限,他会返回一个 message.send
- c - 插入文本后需要按两次Enter - C
- arrays - 控制器 ODOO 用于使用 JSON 创建销售订单