2017-04-24 2242 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>更改它。