我们可以使用nfs容量插件在kubernetes集群中维护高可用性和灾难恢复吗?
我正在使用MongoDB运行pod。得到错误
chown:更改'/ data / db'的所有权:不允许操作。
阴云密布,请建议我如何解决错误? (或)
在kubernetes集群中是否建议使用任何替代的卷插件来实现HA-DR?
答案 0 :(得分:10)
chown:更改'/ data / db'的所有权:不允许操作。
您可能希望以root
的身份启动mongo容器,以便可以 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
- /data/db
volumeMounts:
- name: mongo-data # or whatever
mountPath: /data/db
containers:
- name: mongo # then run your container as before
答案 1 :(得分:1)
/data/db 是一个挂载点,即使您没有在那里显式挂载卷。数据被持久化到特定于 pod 的覆盖层。 Kubernetes 将所有卷挂载为 0755 root.root,无论目录的初始权限是什么。 当然,mongo 不能 chown。
如果您将卷挂载到 /data/db 下面的某个位置,您将得到同样的错误。
如果您将上述卷挂载到 /data,数据将不会存储在 NFS 上,因为 /data/db 的挂载点将写入覆盖层。但是您不会再遇到那个错误了。