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