網(wǎng)站開發(fā)有哪些職位中國(guó)十大流量網(wǎng)站
意義:存儲(chǔ)卷----數(shù)據(jù)卷
容器內(nèi)的目錄和宿主機(jī)的目錄進(jìn)行掛載
容器在系統(tǒng)上的生命周期是短暫的,delete,k8s用控制器創(chuàng)建的pod,delete相當(dāng)于重啟,容器的狀態(tài)也會(huì)回復(fù)到初始狀態(tài)
一旦回到初始狀態(tài),所有的后天編輯的文件都會(huì)消失。
容器和節(jié)點(diǎn)之間創(chuàng)建一個(gè)可以持久化保存容器內(nèi)文件的存儲(chǔ)卷,即使容器被銷毀,刪除,重啟,節(jié)點(diǎn)上存儲(chǔ)卷的數(shù)據(jù)依然存在,后續(xù)也可以繼續(xù)使用,繼續(xù)將容器內(nèi)的目錄和宿主機(jī)掛載,保存的數(shù)據(jù)繼續(xù)使用
1、emptyDir
容器內(nèi)部共享存儲(chǔ)卷,k8s系統(tǒng)中,是一個(gè)pod當(dāng)中的多個(gè)容器共享一個(gè)存儲(chǔ)卷目錄
emptyDir卷可以使pod當(dāng)中的容器在這個(gè)存儲(chǔ)卷上讀取和寫入
emptyDir是不能掛載到節(jié)點(diǎn)的。隨著pod生命周期結(jié)束,emptyDir也會(huì)結(jié)束,數(shù)據(jù)也不會(huì)保留
容器內(nèi)部共享。LNMP
2、hostPath
將容器內(nèi)的掛載點(diǎn),和節(jié)點(diǎn)上的目錄進(jìn)行掛載,hostPath可以實(shí)現(xiàn)數(shù)據(jù)的持久。node節(jié)點(diǎn)被銷毀,那么數(shù)據(jù)也會(huì)丟失
污點(diǎn)設(shè)置為:
NoExecute:節(jié)點(diǎn)上的pod會(huì)被驅(qū)逐,文件數(shù)據(jù)在不在?
pod被驅(qū)逐,并不是node節(jié)點(diǎn)被銷毀。所有數(shù)據(jù)還保留在節(jié)點(diǎn)上
pod被驅(qū)逐 (基于控制器創(chuàng)建的)會(huì)在其他重新部署,又會(huì)在其他節(jié)點(diǎn)生成一個(gè)新的存儲(chǔ)卷。數(shù)據(jù)依然可以持久化
emptyDir的共享數(shù)據(jù),會(huì)丟失
apiVersion: apps/v1
kind: Deployment
metadata:name: nginxlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: nginx:1.22name: nginx1volumeMounts:- name: htmlmountPath: /usr/share/nginx/html
#第一個(gè)name,存儲(chǔ)的名稱,可以自定義,mountpath,定義容器內(nèi)的掛載目錄點(diǎn),和節(jié)點(diǎn)或者##其他容器的
共享目錄- image: nginx:1.22name: nginx2volumeMounts:- name: htmlmountPath: /data
#引用上一個(gè)掛載的名稱,表示我將和、usr/share/nginx/html這個(gè)目錄掛載,由data目錄和他掛載 command: ["/bin/bash","-c", "while true; do echo $(date) >> /data/index.html; sleep 2; done"]volumes:- name: htmlhostPath:path: /opt/testtype: DirectoryOrCreate
3、NFS共享存儲(chǔ)
所有的pod內(nèi)的目錄都和節(jié)點(diǎn)上的nfs共享目錄形成數(shù)據(jù),所有的數(shù)據(jù)文件都保存在共享目錄當(dāng)中,集中,方便管理
apiVersion: apps/v1
kind: Deployment
metadata:name: nginxlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: nginx:1.22name: nginx1volumeMounts:- name: htmlmountPath: /usr/share/nginx/html
#第一個(gè)name,存儲(chǔ)的名稱,可以自定義,mountpath,定義容器內(nèi)的掛載目錄點(diǎn),和節(jié)點(diǎn)或者##其他容器的
共享目錄- image: nginx:1.22name: nginx2volumeMounts:- name: htmlmountPath: /data
#引用上一個(gè)掛載的名稱,表示我將和、usr/share/nginx/html這個(gè)目錄掛載,由data目錄和他掛載 command: ["/bin/bash","-c", "while true; do echo $(date) >> /data/index.html; sleep 2; done"]volumes:- name: htmlnfs:path: /data/volumesserver: harbor
#server可以是共享節(jié)點(diǎn)的ip地址,也可以是主機(jī)名,主機(jī)名要做映射
pvc和pv
pv:全稱Persistent Volume 持久化存儲(chǔ)卷,描述和定義一個(gè)存儲(chǔ)卷,pv是由我們運(yùn)維人員來(lái)定的
pvc:全稱Persistent Volume Claim 持久化存儲(chǔ)的請(qǐng)求,pvc實(shí)際上是用來(lái)描述或者聲明我希望使用什么樣的pv來(lái)進(jìn)行存儲(chǔ)
pvc-pv是一一對(duì)應(yīng)的關(guān)系(描述,存儲(chǔ)(大小))
pvc---->pv----->NFS
pvc和pv都是虛擬化的概念,是k8s的抽象的虛擬的存儲(chǔ)資源
pv是集群當(dāng)中的存儲(chǔ)資源,pvc請(qǐng)求存儲(chǔ)資源,也是對(duì)存儲(chǔ)資源的一個(gè)檢索 (檢查索引),選擇一個(gè)最合適的pv來(lái)存儲(chǔ)資源
pv和pvc之間是有生命周期管理:
1、Provisioning(配置)-----pvc請(qǐng)求request-----檢索(找一個(gè)合適的pv)----pvc和pv(binding 綁定)-------使用-----
pod被刪除-------pv的releasing(釋放)------資源回收recyling
配置:靜態(tài),動(dòng)態(tài)
綁定:就是把pv分配給pvc
使用:就是pod通過(guò)pvc使用存儲(chǔ)資源—NFS
釋放:pod解除和掛載卷的關(guān)系,刪除pvc
回收:保留pv,以供下一次pvc使用
pv的狀態(tài)
Avaliable:可用,而且沒(méi)有被任何pvc綁定
Bound:綁定,pv已經(jīng)綁定了pvc,綁定即使用
released:釋放,pvc已經(jīng)被刪除了,但是pv的存儲(chǔ)資源還沒(méi)有被集群回收
Failed:表示pv資源回收失敗,而且pv為不可用狀態(tài)。
ReadWriteOnce RWO,配置文件里是全稱,存儲(chǔ)pv可讀可寫,但是只能被單個(gè)pod掛載
ReadOnlyMany:ROX 存儲(chǔ)pv可以以只讀的方式被多個(gè)pod掛載
ReadWriteMany:RWX 存儲(chǔ)可以支持讀寫的方式被多個(gè)pod共享
NFS:可以支持以上三種讀寫和掛載方式
SCSI
[root@master01 opt]# lsscsi
[0:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda
[2:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0
ISCSI 不支持ReadWriteMany(RWX )
[root@master01 opt]# iscsiadm -m session -P 3
iscsiadm: No active sessions.
查詢服務(wù)器是否有ISCSI設(shè)備 -m seesion 管理iscsi的會(huì)話 -P 3 顯示詳細(xì)信息的級(jí)別
hostpath:只支持RWO ,其他兩個(gè)不支持
回收策略
集群回收pv資源的方式
Retain保留,pod和掛載點(diǎn)的數(shù)據(jù)不會(huì)被刪除
Recycle:回收,pv上的數(shù)據(jù)會(huì)被刪除,掛載點(diǎn)的數(shù)據(jù)也被刪除
Delete: 刪除,解綁時(shí)會(huì)自動(dòng)刪除pv上的數(shù)據(jù) (本地硬盤無(wú)法使用)支持動(dòng)態(tài)卷的可以使用,pv也不再可用(云平臺(tái)自己處理)
補(bǔ)充:當(dāng)pod運(yùn)行之后,通過(guò)pvc請(qǐng)求到了pv,除非pod被銷毀,否則無(wú)法刪除pvc
pvc----請(qǐng)求用哪個(gè)pv的存儲(chǔ)----pv和物理存儲(chǔ)做映射 (掛載)----物理設(shè)備提供存儲(chǔ)卷
pvc yaml文件
apiVersion: v1
kind: PersistentVolume
metadata:name: pv001labels:name: pv001
spec:nfs:path: /data/v1server: 192.168.211.40accessModes:- ReadWriteMany- ReadWriteOncecapacity:storage: 1Gi
更改回收策略
apiVersion: v1
kind: PersistentVolume
metadata:name: pv004labels:name: pv004
spec:nfs:path: /data/v4server: 192.168.211.40accessModes:- ReadWriteMany- ReadWriteOncepersistentVolumeReclaimPolicy: Recycle 添加這一行 capacity:storage: 4Gi[root@master01 opt]# kubectl apply -f pv.yaml
persistentvolume/pv001 unchanged
persistentvolume/pv002 unchanged
persistentvolume/pv003 configured *
persistentvolume/pv004 configured * 顯示這個(gè)就是更改策略成功
persistentvolume/pv005 unchanged
k8s當(dāng)中存儲(chǔ)卷的模式:
emptyDir:容器內(nèi)的存儲(chǔ)卷,隨著pod被銷毀,也會(huì)被銷毀,數(shù)據(jù)不保留
hostPath:節(jié)點(diǎn)目錄的存儲(chǔ)卷,可以實(shí)現(xiàn)持久化存儲(chǔ),數(shù)據(jù)在每個(gè)節(jié)點(diǎn)上都有,不方便集中管理
nfs:共享目錄存儲(chǔ)卷,既可以實(shí)現(xiàn)持久化,也可以數(shù)據(jù)集中在一個(gè)目錄,方便管理
pv和pvc:
pvc請(qǐng)求----pv的存儲(chǔ)資源----硬盤空間(NFS)
NFS支持pvc的所有類型掛載權(quán)限和讀寫方式
hostpath:僅支持ReadWriteOnce 方式
pvc是以檢索的方式找到匹配的pv資源
檢索掛載方式和讀寫模式
檢索pv能提供的存儲(chǔ)資源的大小
誰(shuí)合適選誰(shuí)
保留:默認(rèn)可以不寫
回收:自動(dòng)回收,節(jié)點(diǎn)上的數(shù)據(jù)也會(huì)被刪除
刪除:pv會(huì)變成failed模式,不可用,數(shù)據(jù)也會(huì)被刪除
靜態(tài)比較麻煩,但是如何自動(dòng)匹配pv資源? 下回分解