網站開發(fā)有哪些職位中國十大流量網站
意義:存儲卷----數(shù)據(jù)卷
容器內的目錄和宿主機的目錄進行掛載
容器在系統(tǒng)上的生命周期是短暫的,delete,k8s用控制器創(chuàng)建的pod,delete相當于重啟,容器的狀態(tài)也會回復到初始狀態(tài)
一旦回到初始狀態(tài),所有的后天編輯的文件都會消失。
容器和節(jié)點之間創(chuàng)建一個可以持久化保存容器內文件的存儲卷,即使容器被銷毀,刪除,重啟,節(jié)點上存儲卷的數(shù)據(jù)依然存在,后續(xù)也可以繼續(xù)使用,繼續(xù)將容器內的目錄和宿主機掛載,保存的數(shù)據(jù)繼續(xù)使用
1、emptyDir
容器內部共享存儲卷,k8s系統(tǒng)中,是一個pod當中的多個容器共享一個存儲卷目錄
emptyDir卷可以使pod當中的容器在這個存儲卷上讀取和寫入
emptyDir是不能掛載到節(jié)點的。隨著pod生命周期結束,emptyDir也會結束,數(shù)據(jù)也不會保留
容器內部共享。LNMP
2、hostPath
將容器內的掛載點,和節(jié)點上的目錄進行掛載,hostPath可以實現(xiàn)數(shù)據(jù)的持久。node節(jié)點被銷毀,那么數(shù)據(jù)也會丟失
污點設置為:
NoExecute:節(jié)點上的pod會被驅逐,文件數(shù)據(jù)在不在?
pod被驅逐,并不是node節(jié)點被銷毀。所有數(shù)據(jù)還保留在節(jié)點上
pod被驅逐 (基于控制器創(chuàng)建的)會在其他重新部署,又會在其他節(jié)點生成一個新的存儲卷。數(shù)據(jù)依然可以持久化
emptyDir的共享數(shù)據(jù),會丟失
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
#第一個name,存儲的名稱,可以自定義,mountpath,定義容器內的掛載目錄點,和節(jié)點或者##其他容器的
共享目錄- image: nginx:1.22name: nginx2volumeMounts:- name: htmlmountPath: /data
#引用上一個掛載的名稱,表示我將和、usr/share/nginx/html這個目錄掛載,由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共享存儲
所有的pod內的目錄都和節(jié)點上的nfs共享目錄形成數(shù)據(jù),所有的數(shù)據(jù)文件都保存在共享目錄當中,集中,方便管理
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
#第一個name,存儲的名稱,可以自定義,mountpath,定義容器內的掛載目錄點,和節(jié)點或者##其他容器的
共享目錄- image: nginx:1.22name: nginx2volumeMounts:- name: htmlmountPath: /data
#引用上一個掛載的名稱,表示我將和、usr/share/nginx/html這個目錄掛載,由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é)點的ip地址,也可以是主機名,主機名要做映射
pvc和pv
pv:全稱Persistent Volume 持久化存儲卷,描述和定義一個存儲卷,pv是由我們運維人員來定的
pvc:全稱Persistent Volume Claim 持久化存儲的請求,pvc實際上是用來描述或者聲明我希望使用什么樣的pv來進行存儲
pvc-pv是一一對應的關系(描述,存儲(大小))
pvc---->pv----->NFS
pvc和pv都是虛擬化的概念,是k8s的抽象的虛擬的存儲資源
pv是集群當中的存儲資源,pvc請求存儲資源,也是對存儲資源的一個檢索 (檢查索引),選擇一個最合適的pv來存儲資源
pv和pvc之間是有生命周期管理:
1、Provisioning(配置)-----pvc請求request-----檢索(找一個合適的pv)----pvc和pv(binding 綁定)-------使用-----
pod被刪除-------pv的releasing(釋放)------資源回收recyling
配置:靜態(tài),動態(tài)
綁定:就是把pv分配給pvc
使用:就是pod通過pvc使用存儲資源—NFS
釋放:pod解除和掛載卷的關系,刪除pvc
回收:保留pv,以供下一次pvc使用
pv的狀態(tài)
Avaliable:可用,而且沒有被任何pvc綁定
Bound:綁定,pv已經綁定了pvc,綁定即使用
released:釋放,pvc已經被刪除了,但是pv的存儲資源還沒有被集群回收
Failed:表示pv資源回收失敗,而且pv為不可用狀態(tài)。
ReadWriteOnce RWO,配置文件里是全稱,存儲pv可讀可寫,但是只能被單個pod掛載
ReadOnlyMany:ROX 存儲pv可以以只讀的方式被多個pod掛載
ReadWriteMany:RWX 存儲可以支持讀寫的方式被多個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.
查詢服務器是否有ISCSI設備 -m seesion 管理iscsi的會話 -P 3 顯示詳細信息的級別
hostpath:只支持RWO ,其他兩個不支持
回收策略
集群回收pv資源的方式
Retain保留,pod和掛載點的數(shù)據(jù)不會被刪除
Recycle:回收,pv上的數(shù)據(jù)會被刪除,掛載點的數(shù)據(jù)也被刪除
Delete: 刪除,解綁時會自動刪除pv上的數(shù)據(jù) (本地硬盤無法使用)支持動態(tài)卷的可以使用,pv也不再可用(云平臺自己處理)
補充:當pod運行之后,通過pvc請求到了pv,除非pod被銷毀,否則無法刪除pvc
pvc----請求用哪個pv的存儲----pv和物理存儲做映射 (掛載)----物理設備提供存儲卷
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 * 顯示這個就是更改策略成功
persistentvolume/pv005 unchanged
k8s當中存儲卷的模式:
emptyDir:容器內的存儲卷,隨著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ù)也會被刪除
刪除:pv會變成failed模式,不可用,數(shù)據(jù)也會被刪除
靜態(tài)比較麻煩,但是如何自動匹配pv資源? 下回分解