PV:
? 由管理員在集群中提供的存儲(chǔ)
PVC:
? 用戶對(duì)存儲(chǔ)的請(qǐng)求
PV 和 PVC 的交換過(guò)程
? 供應(yīng)(Provisioning):創(chuàng)建PV
? 綁定(Binding):將PV分配給PVC
? 使用(Using):Pod通過(guò)PVC使用該P(yáng)V
? 釋放(Releasing):Pod釋放Volume并刪除PVC察迟,刪除后根據(jù)策略進(jìn)行PVC的數(shù)據(jù)處理
? 回收(Reclaiming):回收PV,可以保留PV以便下次使用艰赞,也可以直接從云存儲(chǔ)中刪除,策略包括保留蓬抄、回收钾挟、刪除
??? 保留(Retained):此策略允許手工回收坷随,PVC刪除首启,PV將仍然存儲(chǔ)暮屡,存儲(chǔ)卷被認(rèn)為處于已釋放狀態(tài),但對(duì)于其他PVC是不可用的毅桃,因?yàn)橹皵?shù)據(jù)???? 仍然保留在數(shù)據(jù)卷中褒纲,可通過(guò)以下步驟手工回收存儲(chǔ)卷
??? 1)刪除PV:在PV被刪除后,在外部設(shè)施中相關(guān)的存儲(chǔ)資產(chǎn)仍然存在钥飞;
??? 2)手工刪除遺留在外部存儲(chǔ)中的數(shù)據(jù)莺掠;
??? 循環(huán)(Recycled):此策略未來(lái)會(huì)被遺棄,建議后續(xù)使用動(dòng)態(tài)供應(yīng)的模式
?????????????? 循環(huán)回收會(huì)在存儲(chǔ)卷上執(zhí)行基本擦除命令:rm -rf /thevolume/*, 使數(shù)據(jù)對(duì)于新的PVC可用
??? 刪除(Deleted):即從kubernetes中移除PV读宙,也會(huì)從相關(guān)外部設(shè)施中刪除存儲(chǔ)資產(chǎn).
存儲(chǔ)卷狀態(tài)
? Available:可用狀態(tài)彻秆,表示PV已經(jīng)準(zhǔn)備就緒,可以被PVC使用
? Bound:綁定狀態(tài),表明PV已被分配給了PVC
? Released:釋放狀態(tài)唇兑,表明PVC解綁PV墓律,但還未執(zhí)行回收策略
? Failed:錯(cuò)誤狀態(tài),表明PV發(fā)生錯(cuò)誤
示例:
NFS服務(wù)器
? IP :172.17.66.208
? 目錄: /data/mysql_slave_pv
NFS服務(wù)器配置完成后檢查沒(méi)有問(wèn)題進(jìn)行PV幔亥、PVC和pod使用PVC操作
創(chuàng)建PV
# cat mysql-slave-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
? name: mysql-slave-pv
? namespace: codeus?????????????? #PV和PVC的命名空間不同可能無(wú)法綁定
? labels:
? ? release: stable?????????????????????? ###標(biāo)簽,下面的pvc也需要指定此標(biāo)簽
spec:
? capacity:
? ? storage: 5Gi???????????????????????? ###空間5個(gè)G
? accessModes:
? - ReadWriteOnce????????????????? ###權(quán)限察纯,可讀可寫
? persistentVolumeReclaimPolicy: Recycle?????????? ###持久卷回收策略
? nfs:?????????????? ###nfs信息
? ? path: /data/mysql_slave_pv
? ? server: 172.17.66.208
創(chuàng)建PVC
# cat mysql-slave-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
? name: mysql-slave-pvc
? namespace: codeus
spec:
? accessModes:
? - ReadWriteOnce
? resources:
? ? requests:
? ? ? storage: 5Gi
? selector:
? ? matchLabels:
? ? ? release: stable??? ###指定PV標(biāo)簽
Pod使用PVC
# cat mysql-slave-rc.yaml
............中間省略
volumeMounts:
? ? ? ? - mountPath: "/var/lib/mysql/"
? ? ? ? ? name: data
? ? ? volumes:
? ? ? - name: data
? ? ? ? persistentVolumeClaim:
? ? ? ? ? claimName: myclaim-1
查看PV帕棉、PVC狀態(tài)
# kubectl -n codeus get pv,pvc????? ##可以看到狀態(tài)都是Bound綁定狀態(tài)