【问题标题】:chown: changing ownership of '/data/db': Operation not permittedchown:更改“/data/db”的所有权:不允许操作
【发布时间】:2018-12-14 10:56:34
【问题描述】:

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

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

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

云任何机构,请建议我如何解决错误? (或)

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

【问题讨论】:

  • 使用格式化工具使您的帖子更具可读性。使用 code blocking 表示代码、日志和错误文本,使用 bolditalics 突出显示内容
  • 我们可以使用 nfs 卷插件来维护 kubernetes 集群之间的高可用性和灾难恢复吗? 您需要非常小心地使用带有“数据库”的 NFS --我知道 mongo 只是松散地被称为“数据库”,但我的观点是正确的。如果这适用于您,您将希望 Run Like The Wind™ 远离将 EFS 用作 NFS。

标签: kubernetes kubernetes-security


【解决方案1】:

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

您需要以 root 的身份启动 mongo 容器,以便 可以 chown 目录,或者如果图像禁止它(因为某些图像已经有 @987654323 @ 子句禁止容器将权限升级回root),然后是以下两种情况之一:在containers: 中使用securityContext 节取代用户或使用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

【讨论】:

  • 你能把yaml文件分享给我吗
  • 如果我设置 rusAsUser: 0。它说必须在 1000570000 - 1000579999 的范围内。当我设置为 1000570000 时。 DBException in initAndListen, terminating","attr":{"error":"IllegalOperation: Attempted to create a lock file on a read-only directory: /data/db"} 当命令 CHOWN 如上所示.. 然后它说:启动容器进程导致“exec:\"sudo chown -R mongodb:mongodb /data/db\": stat sudo chown -R mongodb:mongodb /data/db: no such file or directory”。
【解决方案2】:

/data/db 是一个挂载点,即使您没有在此处显式挂载卷。数据被持久化到特定于 pod 的覆盖层中。 Kubernetes 将所有卷挂载为 0755 root.root,无论该目录最初的权限是什么。 当然 mongo 不能这样。

如果你将卷挂载在 /data/db 下面的某个地方,你会得到同样的错误。

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

【讨论】:

  • 我相信这应该被标记为真正的答案
【解决方案3】:

通过在部署清单中添加command:["mongod"],它将覆盖默认入口点脚本并阻止执行 chown。

...
    spec:
      containers:
      - name: mongodb
        image: mongo:4.4.0-bionic
        command: ["mongod"]
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    相关资源
    最近更新 更多