如何在Kubernetes中創建HostPath持久卷?
譯文【51CTO.com快譯】
您可能知道Pod中的數據在Pod的整個生命周期過程中一直存在。如果Pod消失,屬于該Pod的所有數據也隨之消失。因此,如果您希望在Pod的生命周期結束后保留數據,Kubernetes中就要有所謂的持久卷。
不妨學習如何創建HostPath持久卷,這很容易上手。同時了解有關持卷的基礎知識。
就不同供應商而言,kubernetes中可供使用的持久卷有以下類型。
- GCEPersistentDisk
- AWSElasticBlockStore
- AzureFile
- AzureDisk
- CSI
- FC(光纖通道)
- FlexVolume
- Flocker
- NFS
- iSCSI
- RBD(Ceph Block Device)
- CephFS
- Cinder(OpenStack塊存儲)
- Glusterfs
- VsphereVolume
- Quobyte Volumes
- HostPath(僅用于單節點測試——不以任何方式支持本地存儲,無法在多節點集群中運行)
- Portworx Volumes
- ScaleIO Volumes
- StorageOS
如您所見,就HostPath而言,應僅將其用于測試目的。它也不支持多節點集群。如果您想了解有關持久卷的更多信息,可以點擊該鏈接(https://kubernetes.io/docs/concepts/storage/persistent-volumes/)。
持久卷的基本過程如下:
- K8s管理員在集群中創建持久卷。
- 用戶一旦聲明其狀態變為“Bound”,便使用“持久卷聲明”對其進行聲明。
- 然后Pod使用該卷存儲將在Pod的生命周期結束后持續存在的數據。
理論方面講得夠多了,不妨說說技術步驟:
- 創建持久卷
在該步驟中,我們使用以下yaml清單文件來實現同樣的目的。
圖1
如上述定義文件顯示,其存儲大小是1GB。路徑是“/tmp/kube”。不妨創建PV,如下所示:
圖2
使用以下命令,再次核查PV和持久卷聲明:
圖3
如您所見,PV已創建,其狀態為Available;由于我們未指定重新聲明策略,使用默認值“Retain”,這意味著即使pvc(持久卷聲明)被刪除,PV和數據也不會自動被刪除。我們會對此進行測試。
- 創建持久卷聲明
為了使用PV,我們需要創建持久卷聲明或PVC來使用它。以下是同樣的yaml清單文件。
圖4
上述定義中有必要指出,聲明僅針對100mb(>= size of PV),另外Access模式是“ReadWriteOnce”,這與PV的模式一樣。因此,我們能夠創建PVC,如下所示:
圖5
檢查pv和pvc的狀態。
圖6
您會看到,pv的狀態已從之前的Available變成了Bound。
- 創建Pod,把該PV作為里面的掛載點來使用。
圖7
如Pod定義文件中所述,它會在Pod里面創建掛載點/tmp/mydata。不妨使用上述定義文件創建Pod。
圖8
檢查狀態,并檢查Pod:
圖9
在描述輸出中,您可以看到/tmp/mydata卷是使用來自聲明pvc-hostpath的host-volume創建的。另外,Pod是在節點“kworker01”上按計劃/創建的。
不妨登錄進入到Pod創建示例文件。為了演示Pod消失后數據的生命周期:
圖10
在上述演示中,我們在/tmp/mydata里面創建了“Hello.txt”。現在不妨刪除Pod。
圖11
Pod已成功刪除,不妨登錄入節點“kworker01”,Pod之前已按計劃創建,檢查數據在Pod刪除后是否持久存在。
圖12
您可以看到,即便Pod已消失,我們的文件“Hello.txt”仍駐留在節點上。
原文標題:How to create HostPath persistent volume in Kubernetes
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】