2021/05/06

Container 的硬碟空間是短暫的,會隨著 Container 生命週期結束而跟著消失。因此如果我們要保存 Container 裡面的資料,就需要創立一個獨立空間,讓 Pod 中的 Container 即便因為某些因素而 crash,資料仍可以完整的被保存下來。 另一個相關應用是,如果要在 Kubernetes 裡面建立資料庫系統,並且 Replicas 大於1個的話,問題會是兩個 Pod 各自的 Container 裡面,存放各自的 Database file,理論上應該存取同一份 Database file。因此就需要一個獨立於 Pod 之外的空間去存放資料,也就是本文要介紹的 Persistent Volume。

Persistent Volume

Persistent volume(以下簡稱 PV)是一個在 Kubernetes 中提供一串儲存區的虛擬化物件

apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
	persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: /tmp

Volume type

在 PV 中包含多種 Volume Type:

Access modes

Access Modes 有三種

<aside> 💡 Access modes 會受到儲存區的限制。例如: GCE 不支援 Disk 被多個 Node 掛載為 read/write 模式。

</aside>

Status

PV 有四種狀態