存儲卷----數(shù)據(jù)卷
容器內(nèi)的目錄和宿主機的目錄進行掛載
容器在系統(tǒng)上的生命周期是短暫的,delete,k8s用控制創(chuàng)建的pod,delete相當于重啟,容器的狀態(tài)也會恢復(fù)到初識狀態(tài)
一旦容器回到初始狀態(tài),所有得分后天編輯的文件都會消失
容器和所有節(jié)點之間創(chuàng)建一個可以持久化保存容器內(nèi)文件的存儲卷,即使容器被銷毀,刪除,重啟,節(jié)點上的存儲卷的數(shù)據(jù)依然存在,后續(xù)也可以繼續(xù)使用,可以繼續(xù)將容器內(nèi)目錄和宿主機進行掛載,保存的數(shù)據(jù)繼續(xù)使用
-
emptyDir?
容器內(nèi)部共享存儲卷,k8s系統(tǒng)中,是一個pod當中的多個容器共享一個存儲卷目錄
EmptyDir卷可以是pod當中容器在這個存儲卷上讀取和寫入
EmptyDir是不能掛載到節(jié)點的,隨著pod的生命周期結(jié)束,emptyDir也會結(jié)束,數(shù)據(jù)也不會保留
只能用于內(nèi)部共享
演示:
進入容器:
-
hostPath:
將容器內(nèi)的掛載點,和節(jié)點上的目錄進行掛載,hostpath可以實現(xiàn)數(shù)據(jù)持久化,node節(jié)點將會被銷毀,那么數(shù)據(jù)也就會丟失
污點設(shè)置為NoExecute:節(jié)點上的pod會被驅(qū)逐,文件數(shù)據(jù)在不在?
Pod被驅(qū)逐,并不是node節(jié)點被銷毀,所有的數(shù)據(jù)還保留在節(jié)點上
Pod被驅(qū)逐(基于控制器創(chuàng)建的),會在其他節(jié)點繼續(xù)部署,又會在其他節(jié)點生成一個新的存儲卷,數(shù)據(jù)依然可以持久化
EmptyDir被驅(qū)逐,數(shù)據(jù)會丟失
演示
查看不同pod輸出的日志
第三種
NFS共享存儲方式:
所有的pod內(nèi)部的目錄都和節(jié)點上的NFS共享形成數(shù)據(jù)同步,所有文件都將保存在一個目錄當中,便于管理
驗證
用主機名做
找不到,掛載卷因為沒有映射
每個主機都做映射
HostPath和NFS是我們常用的方式,推薦使用NFS
PVC和PV(必問)
PV:全稱persistent volume持久化存儲卷,描述和定義一個存儲卷,PV是由我們運維人員來定的
PVC:全稱persistent Volume Claim 持久化存儲的請求,PVC實際上是用來描述或者聲明我希望使用什么樣PV來進行存儲
PVC---->pv------NFS 意思就是說,PVC請求PV
PVC是發(fā)起一個請求,PVC是提供一個虛擬化的存儲卷
PVC和PV都是虛擬的概念,是k8s的抽象的虛擬化的存儲資源
結(jié)構(gòu)圖:
PVC和PV之間的靜態(tài)請求,一旦百個PVC怎么辦,所有引申出了動態(tài)請求
PV是集群當中的存儲資源,PVC請求存儲資源,也是對存儲資源的一個索引(檢查索引),選擇一個最合適的PV來存儲資源
PV和PVC之間是有生命周期管理:
Provisioning(配置)------PVC請求request-----檢索(找一個合適的PV)----PVC和PV(binding綁定)----使用---pod被刪除-------PV的releasing(釋放)-------recycling(回收)
配置:靜態(tài),動態(tài)
綁定:就是把PV分配給PVC
使用:就是pod通過PVC使用存儲資源---NFS
釋放:pod解除和掛載卷volume的關(guān)系,刪除PVC
回收:保留PV,讓下一個PVC使用
PV的狀態(tài):
Available:可用,而且沒有被任何PVC綁定
Bound:綁定,PV已經(jīng)綁定了PVC,綁定即使用
Released:釋放,PVC已經(jīng)被刪除了,但是PV的存儲資源還沒有被集群回收
Failed:表示PV資源回收失敗,而且PV為不可用狀態(tài)
ReadWriteOnce: RWO,配置文件里面是全稱,存儲PV可讀可寫,但是只能被單個pod掛載
ReadOnlyMary:ROX 存儲的PV可以以只讀的方式被多個pod掛載
ReadWriteMany:RWX 存儲可以支持讀寫的方式被多個pod共享
EmptyDir:不考慮
NFS:可以支持以上三種讀寫和掛載方式
ISCSI:不支持ReadWriteMany
hostPath:只支持ReadWriteOnce方式
iscsiadm -m session -P 3查看服務(wù)器是否有iscsi設(shè)備
-m session:指定操作的會話模塊,管理iscsi會話
-P 3:顯示詳細信息的級別,級別就是3,顯示詳細信息
集群回收PV資源的方式:
Retain保留,pod和掛載點的數(shù)據(jù)不會被刪除
Recycle:回收,PV上的數(shù)據(jù)被刪除,掛載點的數(shù)據(jù)也被刪除
Delete:淡出,解綁時,自動刪除PV上的數(shù)據(jù)。(本地硬盤不能使用,AWS,EBD,GCE)支持動態(tài)卷的可以使用,PV不再可用(云平臺自己處理)
補充:當pod運行之后,通過PVC請求到了PV,除非pod被銷毀,否則無法刪除PVC
演示PVC靜態(tài)和資源回收方式:
映射(全部)
發(fā)布
每個節(jié)點查看:
vim pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
??name: pv001
??labels:
????name: pv001
spec:
??nfs:
????path: /data/v1
????server: 20.0.0.74
??accessModes: ["ReadWriteMany","ReadWriteOnce"]
??capacity:
????storage: 1Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
??name: pv002
??labels:
????name: pv002
spec:
??nfs:
????path: /data/v2
????server: 20.0.0.74
??accessModes: ["ReadWriteOnce"]
??capacity:
????storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
??name: pv003
??labels:
????name: pv003
spec:
??nfs:
????path: /data/v3
????server: 20.0.0.74
??accessModes: ["ReadWriteMany","ReadWriteOnce"]
??capacity:
????storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
??name: pv004
??labels:
????name: pv004
spec:
??nfs:
????path: /data/v4
????server: 20.0.0.74
??accessModes: ["ReadWriteMany","ReadWriteOnce"]
??capacity:
????storage: 4Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
??name: pv005
??labels:
????name: pv005
spec:
??nfs:
???path: /data/v5
???server: 20.0.0.74
??accessModes: ["ReadWriteMany","ReadWriteOnce"]
??capacity:
????storage: 5Gi
定義一個PVC請求:
vim pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
??name: mypvc
spec:
??accessModes: ["ReadWriteMany"]
#pvc期望請求的PV的讀寫掛載類型是什么
??resources:
????requests:
??????storage: 2Gi
#PVC期望請求PV的存儲大小是2G。上面合起來的意思:期望讀寫模式:ReadWriteMany 并且大小是2G
---
apiVersion: apps/v1
kind: Deployment
metadata:
??labels:
????app: nginx
??name: nginx
spec:
??replicas: 3
??selector:
????matchLabels:
??????app: nginx
??template:
????metadata:
??????labels:
????????app: nginx
????spec:
??????containers:
??????- image: nginx:1.22
????????name: nginx
????????volumeMounts:
????????- name: html
??????????mountPath: /usr/share/nginx/html
??????volumes:
??????- name: html
????????persistentVolumeClaim:
??????????claimName: mypvc
選擇了PV003
測試:
怎么刪除PVC
刪不掉,因為pod還在
怎么刪呢,刪除pod
處在回收狀態(tài)
怎么讓其回到可用狀態(tài)
kubectl edit pv pv003
回到了available狀態(tài)
配置回收策略
persistentVolumeReclaimPolicy: Recycle
稍微等等
也就是掛載內(nèi)容被回收,也就是被刪除了
persistentVolumeReclaimPolicy: Delete
先刪pod,再刪PVC,刪除之后數(shù)據(jù)卷還在
動態(tài)卷是要刪除的,這里還在,只是演示一下
怎么恢復(fù):
總結(jié):
k8s當中存儲卷的模式:
EmptyDir:用于容器內(nèi)共享,隨著pod被銷毀,也會被銷毀,數(shù)據(jù)不保留
hostPath:節(jié)點目錄的存儲卷,可以實現(xiàn)存儲化存儲,數(shù)據(jù)在每個節(jié)點上都有,不方便集中管理
NFS:共享目錄存儲卷,既可以實現(xiàn)持久化,也可以數(shù)據(jù)集中在一個目錄,方便管理
PV和PVC
PVC是一種請求----PV存儲資源----------硬盤空間(NFS)
NFS支持PVC的所有掛載方式和讀寫模式
hostPath僅支持readwriteOnce方式
PVC是以檢索的方式找到匹配的PV資源
檢索掛載方式和讀寫模式:
檢索PV能提供的存儲資源的大小
誰合適選誰
保留:默認可以不寫
回收:自動回收,節(jié)點上的數(shù)據(jù)會被刪除文章來源:http://www.zghlxwxcb.cn/news/detail-818046.html
刪除:PV會變成failed模式,不可用,數(shù)據(jù)也會被刪除文章來源地址http://www.zghlxwxcb.cn/news/detail-818046.html
到了這里,關(guān)于k8s-數(shù)據(jù)卷的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!