chown:更改“/data/db”的所有权:不允许操作
chown: changing ownership of '/data/db': Operation not permitted
能否使用nfs volume plugin来维护kubernetes集群间的高可用和容灾?
我是 运行 和 MongoDB 的豆荚。收到错误
chown: changing ownership of '/data/db': Operation not permitted .
Cloud any body,请建议我如何解决错误? (或)
是否建议使用任何替代卷插件来在 kubernetes 集群中实现 HA-DR?
chown: changing ownership of '/data/db': Operation not permitted .
您需要将 mongo 容器作为 root
启动,以便您 可以 chown
目录,或者如果图像禁止它(因为一些图像已经有一个 USER mongo
条款禁止容器将权限升级回 root
),然后两件事之一:用 securityContext
取代用户containers:
节或使用 initContainer:
抢先将目标文件夹更改为 mongo UID:
方法 #1:
containers:
- name: mongo
image: mongo:something
securityContext:
runAsUser: 0
(这可能需要更改集群的配置以允许这样的事情出现在 PodSpec
)
方法 #2(这是我用于 Elasticsearch 图像的方法):
initContainers:
- name: chmod-er
image: busybox:latest
command:
- /bin/chown
- -R
- "1000" # or whatever the mongo UID is, use string "1000" not 1000 due to yaml
- /data/db
volumeMounts:
- name: mongo-data # or whatever
mountPath: /data/db
containers:
- name: mongo # then run your container as before
/data/db 是一个挂载点,即使您没有明确地在那里挂载一个卷。数据持久保存到特定于 pod 的覆盖层。
Kubernetes 将所有卷挂载为 0755 root.root,而不管目录最初的权限是什么。
当然 mongo 不能 chown 那个。
如果您将卷安装在 /data/db 以下的某处,您将遇到相同的错误。
并且如果您在 /data 上挂载卷,数据将不会存储在 NFS 上,因为 /data/db 上的挂载点将写入覆盖。但是你不会再得到那个错误了。
通过在您的部署清单中添加 command:["mongod"]
,它将覆盖默认入口点脚本并阻止执行 chown。
...
spec:
containers:
- name: mongodb
image: mongo:4.4.0-bionic
command: ["mongod"]
...
能否使用nfs volume plugin来维护kubernetes集群间的高可用和容灾?
我是 运行 和 MongoDB 的豆荚。收到错误
chown: changing ownership of '/data/db': Operation not permitted .
Cloud any body,请建议我如何解决错误? (或)
是否建议使用任何替代卷插件来在 kubernetes 集群中实现 HA-DR?
chown: changing ownership of '/data/db': Operation not permitted .
您需要将 mongo 容器作为 root
启动,以便您 可以 chown
目录,或者如果图像禁止它(因为一些图像已经有一个 USER mongo
条款禁止容器将权限升级回 root
),然后两件事之一:用 securityContext
取代用户containers:
节或使用 initContainer:
抢先将目标文件夹更改为 mongo UID:
方法 #1:
containers:
- name: mongo
image: mongo:something
securityContext:
runAsUser: 0
(这可能需要更改集群的配置以允许这样的事情出现在 PodSpec
)
方法 #2(这是我用于 Elasticsearch 图像的方法):
initContainers:
- name: chmod-er
image: busybox:latest
command:
- /bin/chown
- -R
- "1000" # or whatever the mongo UID is, use string "1000" not 1000 due to yaml
- /data/db
volumeMounts:
- name: mongo-data # or whatever
mountPath: /data/db
containers:
- name: mongo # then run your container as before
/data/db 是一个挂载点,即使您没有明确地在那里挂载一个卷。数据持久保存到特定于 pod 的覆盖层。 Kubernetes 将所有卷挂载为 0755 root.root,而不管目录最初的权限是什么。 当然 mongo 不能 chown 那个。
如果您将卷安装在 /data/db 以下的某处,您将遇到相同的错误。
并且如果您在 /data 上挂载卷,数据将不会存储在 NFS 上,因为 /data/db 上的挂载点将写入覆盖。但是你不会再得到那个错误了。
通过在您的部署清单中添加 command:["mongod"]
,它将覆盖默认入口点脚本并阻止执行 chown。
...
spec:
containers:
- name: mongodb
image: mongo:4.4.0-bionic
command: ["mongod"]
...