2017-10-16 37 views
0

我剛創建的圖像使用泊塢窗文件和改變我只是用用戶:如何更改kubernetes映射卷的許可/泊塢

USER myuser 

我們正在使用一個目錄來存儲數據,我們改變目錄權限使用:

chown -R myuser:myuser /data-dir 

此Docker文件用於etcd,我們希望/ data-dir使用etcd來存儲數據。現在,我們使用kubernetes yml文件將/ data-dir映射到efs卷。

隨着下面的代碼:

volumeMounts: 
     - name: etcdefs 
      mountPath: /data-dir 
     volumes: 
     - name: etcdefs 
     persistentVolumeClaim: 
      claimName: efs-etcd 

在此之後,我想到,這映射目錄/ data-dir來應該有權限爲myuser的:myuser的,但它使目錄根:根

燦有人建議我在這裏做錯了嗎?

回答

2

這是因爲碼頭工人。它僅以root權限安裝卷,您可以使用chmod進行更改,但只能在容器啓動後進行更改。

您可以在這裏閱讀更多關於https://github.com/moby/moby/issues/2259 這個問題在這裏很長一段時間。

您可以在kubernetes中執行的操作是使用fsGroupforce該卷可通過指定的GID進行寫入。這是工作的解決方案,並記錄在案。這裏更多信息https://kubernetes.io/docs/tasks/configure-pod-container/security-context/

下面是一個例子部署:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: alpine 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: alpine 
    spec: 
     securityContext: 
     fsGroup: 1000 
     containers: 
     - name: alpine 
      image: alpine 
      volumeMounts: 
       - mountPath: /var/alpine 
       name: alpine 
     volumes: 
     - name: alpine 
      awsElasticBlockStore: 
      volumeID: vol-1234567890 
      fsType: ext4 
+0

嘿,你能不能給我舉例如何編寫利用kubernetes與fsGroup。在我的例子給出以上 –

+0

@SaganPariyar我修改了我的答案,現在它有例子部署使用'fsGroup' – 3h4x

+0

嘿,謝謝你的答案,其實錯誤是別的。之前我們使用root用root創建docker鏡像,並使用root用它映射創建的目錄,下次我使用myuser作爲映射卷時,已經擁有使用root用戶創建的目錄,所以它提供了權限問題。我只是刪除目錄,並用myuser重新創建它,它工作正常。 –