chown:更改'/ data/db'的所有权:不允许操作

Gay*_*riB 2 kubernetes kubernetes-security

我们可以使用nfs卷插件来维护kubernetes集群中的高可用性和灾难恢复吗?

我正在使用MongoDB运行pod.得到错误

chown:更改'/ data/db'的所有权:不允许操作.

云任何身体,请建议我如何解决错误?(要么)

是否有任何替代卷插件可以在kubernetes集群中实现HA-DR?

mda*_*iel 13

chown:更改'/ data/db'的所有权:不允许操作.

你想要启动mongo容器root,以便你可以 chown在目录中,或者如果图像禁止它(因为一些图像已经有一个USER mongo禁止容器升级权限的子句root),那么两件事之一:取代具有securityContext节的用户containers:或使用initContainer:以抢先更改目标文件夹为mongo UID:

方法#1:

containers:
- name: mongo
  image: mongo:something
  securityContext:
    runAsUser: 0
Run Code Online (Sandbox Code Playgroud)

(可能需要更改群集的配置以允许此类内容出现在a中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
Run Code Online (Sandbox Code Playgroud)


小智 7

/data/db 是一个挂载点,即使您没有明确在那里挂载卷。数据被持久保存到特定于 pod 的覆盖层。Kubernetes 将所有卷挂载为 0755 root.root,无论目录最初的权限是什么。当然 mongo 不能 chown 那个。

如果将卷安装在 /data/db 下面的某个位置,您将收到相同的错误。

如果您在 /data 处挂载上面的卷,数据将不会存储在 NFS 上,因为 /data/db 处的挂载点将写入覆盖层。但您不会再收到该错误了。