2017-04-24 81 views
2

问题:无法写入容器内的目录。Kubernetes:hostPath存储权限

我正在使用hostPath存储来满足持久存储要求。我不使用PV和PVC来使用hospath,而是使用它的卷插件。例如

{ 
    "apiVersion": "v1", 
    "id": "local-nginx", 
    "kind": "Pod", 
    "metadata": { 
     "name": "local-nginx" 
    }, 
    "spec": { 
     "containers": [ 
      { 
       "name": "local-nginx", 
       "image": "fedora/nginx", 
       "volumeMounts": [ 
        { 
         "mountPath": "/usr/share/nginx/html/test", 
         "name": "localvol" 
        } 
       ] 
      } 
     ], 
     "volumes": [ 
      { 
       "name": "localvol", 
       "hostPath": { 
        "path": "/logs/nginx-logs" 
       } 
      } 
     ] 
    } 
} 

注意:nginx pod仅供参考。我在主机上的目录被创建为“drwxr-xr-x。2 root root 6 Apr 23 18:42/logs/nginx-logs” ,同样的权限反映在pod内部,但因为它是755,其他用户(即用户内部的用户)无法在已安装的目录中写入/创建文件。

问题:

  1. 是thetr任何方式,以避免上述规定的问题呢?

  2. 在Hostpath存储的情况下,有什么方法可以指定目录权限吗?

  3. 有没有我可以在下面的定义中给出所需的许可的任何字段?


"volumes":{ 
    "name": "vol", 
    "hostPath": { 
     "path": "/any/path/it/will/be/replaced"}} 
+0

你能解决这个@Yudi?我也有同样的问题。 – lppier

回答

2

我想你遇到的不相关的用户或组的问题(你荚定义没有RunAsUser规范,所以默认情况下它是作为root运行),而是到SELinux策略。为了使用rw权限将主机目录装载到该容器,它应该具有以下标签:svirt_sandbox_file_t。您可以使用以下命令检查当前的SElinux标签:ls -laZ <your host directory>并使用chcon -Rt svirt_sandbox_file_t <your host directory>更改它。