hostPath類型的卷掛載


卷類型之hostPath

hostPath類型的卷可以把宿主機節點上的文件或文件夾掛載到pod中

先來看看hostPath類型的卷如何配置:

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  volumes:
  - name: test-volume
    hostPath:
      path: /data
      type: Directory
  containers:
  - image: k8s.gcr.io/test-webserver
    name: test-container
    volumeMounts:
    - name: test-volume
      mountPath: /test-pd
      mountPropagation: None
      readOnly: true
      subPath: test.txt
      subPathExpr: 

這里針對每一個配置項逐一解釋:

    sepc.volumes: 配置宿主機節點上的掛載目錄

配置項名稱 是否必須 說明
name 必須 卷的名稱,在pod內必須唯一
hostPath.path 必須 宿主機上的目錄路徑,如果是符號鏈接,它將根據符號鏈接追蹤到實際路徑
hostPath.type 可選 hostPath卷的類型,默認為“”


hostPath.type的枚舉值有:

取值 說明
DirectoryOrCreate   如果給定路徑不存在,將根據需要在那里創建一個空目錄,權限設置為755,與Kubelet具有相同的組和所有權。
Directory 給定的目錄路徑必須存在
FileOrCreate 如果給定路徑不存在,將根據需要在那里創建一個空文件,權限設置為644,與Kubelet具有相同的組和所有權。
File 給定路徑上必須存在對應文件
Socket 給定路徑上必須存在一個UNIX socket
CharDevice 給定路徑上必須存在字符設備
BlockDevice 給定路徑上必須存在塊設備

 

使用type字段時需要注意:

        由於節點上的文件不同,具有相同配置(如從podTemplate創建的)的Pods在不同節點上的行為可能不同
        當Kubernetes按照計划添加資源感知調度(?)時,它將不會使用hostPath聲明的資源
        在主機上創建的文件或目錄只能由根用戶寫。你需要在一個有特權的容器中以root身份運行進程,或者修改主機上的文件權限,以便能夠寫入hostPath卷

    containers.volumeMounts: 配置掛載到pod里的路徑

配置項名稱 是否必須 說明
name 必須 此處卷的名稱必須和spec.volumes下的某個卷的名稱一致
mountPath 必須 掛載到容器里的路徑,不能包含英文冒號‘:’
mountPropagation 可選 該參數決定如何將掛載從主機傳播到容器,反之亦然。默認為None
readOnly 可選 是否只讀,默認為可讀寫
subPath 可選 將spec.volumes中的子目錄掛載到容器中不同的位置,默認為“”,也就是掛載到spec.volumes定義的根目錄
subPathExpr 可選 與subPath類似,但是路徑中可以支持從環境變量取值:${VAR_NAME},默認為“”,也就是spec.volumes定義的根目錄。和subPath只能有一個出現


mountPropagation的取值有:
    None:默認值,卷在容器中以及宿主機上的后續掛載相互隔離
    HostToContainer:任何在宿主機上創建的卷掛載在容器中都是可見的
    Bidirectional:任何在容器中創建的卷掛載都會傳播到宿主機,然后傳播到所有使用此掛載的pod中的容器里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM