2、hostPathjava
hostPath Volume 的做用是將 Docker Host 文件系統中已存在的目錄 mount 給 Pod 的容器。api
大部分應用都不會使用 hostPath Volume, 由於這實際上增長了 Pod 與節點的耦合,限制了 Pod 的使用。ide
不過那些須要訪問 Kubernetes 和 Docker 內部數據的應用則須要使用 hostPath。spa
若是 Pod 被銷燬了,hostPath 對應目錄仍是會被保留,從這一點來看,hostPath 的持久性比 emptyDir 強。blog
不過一旦 H ost 崩潰, hostPath 也就沒法訪問了。部署
3、外部 Storage Providerit
若是 Kubernetes 部署在諸如 AWS、GCE、Azure 等公有云上,能夠直接使用雲硬盤做爲 Volume。io
一個 AWS Elastic Block Store 的例子:ast
apiVersion: v1 kind: Pod metadata: name: using-ebs spec: containers: - image: busybox name: using-ebs volumeMounts: - mountPath: /test-rbs name: ebs-volume volumes: - name: ebs-volume awsElasticBlockStore: volumeID: <volume-id> fsType: ext4
要在 Pod 中使用 ESB volume,必須先在 AWS 中建立,而後經過 volume-id 引用。class
一個 Ceph 的例子:
apiVersion: v1 kind: Pod metadata: name: using-ceph spec: containers: - image: busybox name: using-ceph volumeMounts: - mountPath: /test-ceph name: ceph-volume volumes: - name: ceph-volume cephfs: path:/some/path/in/side/cephfs monitors:"10.16.154.78:6789" secretFile: "/etc/ceph/admin.secret"
Ceph 文件系統的 /some/path/in/side/cephfs 目錄被 mount 到容器路徑 /test-ceph。
* 相對於 emptyDir 和 hotPath,這些 Volume 類型的最大特色就是不依賴 Kubernetes。Volume 的底層基礎設施由獨立的存儲系統管理,與 Kubernetes 集羣是分離的。數據被持久化後,即便整個 Kubernetes 崩潰也不會受損。