華為云云原生鉆石集訓(xùn)營 第四課:Kubernetes存儲架構(gòu)原理深度剖析(上)
課程目標:
1.了解Kubernetes容器存儲發(fā)展歷程
2.了解Kubernetes持久化存儲原理
3.了解PV/PVC的工作原理
4.了解華為云CCE云原生存儲解決方案Everest的架構(gòu)
目錄:
1. Kubernetes容器存儲發(fā)展歷程
2. Kubernetes持久化存儲體系
3. PV/PVC的工作原理剖析
4.華為云CCE云原生存儲解決方案Everest的架構(gòu)介紹
在生產(chǎn)環(huán)境中,存儲也是種類繁雜多樣的:
1.存儲產(chǎn)品:不同存儲提供商的產(chǎn)品存在差異性;
2.存儲性能:不同磁盤(SATA、SAS、PCIE)的性能存在差異性;
3.存儲類型:本地盤、塊存儲、文件存儲、對象存儲;
4.存儲網(wǎng)絡(luò):IP、FC等
5.存儲地域:不同存儲池所服務(wù)的地域不同
6。。。。。。
面對復(fù)雜存儲環(huán)境,k8s是如何應(yīng)對的呢?
這就是我們要將討論的云原生存儲體系。
一、Kubernetes容器存儲發(fā)展歷程
應(yīng)用程序生成的數(shù)據(jù)可簡單分為兩類:
1.臨時數(shù)據(jù):經(jīng)過程序處理生成的中間態(tài)數(shù)據(jù),不需要保留;
2.結(jié)果數(shù)據(jù):經(jīng)過程序處理生成的最終態(tài)數(shù)據(jù),需要永久保留。
k8s初期為存算分離所做的解耦設(shè)計Volume,采用強耦合、靈活性差的in-tree模式,雖然已經(jīng)讓用戶專注于業(yè)務(wù)功能設(shè)計。但這類存儲卷的生命周期是跟隨pod的,只能用作存儲臨時數(shù)據(jù),無法做為最終數(shù)據(jù)使用。
隨著k8s的不斷成熟,為支持更多的應(yīng)用場景,提供了一種脫離pod生命周期的、用戶可管理的存儲抽象設(shè)計低耦合、靈活性更強的PersistentVolume/PersistentVolumeClaim。
二、Kubernetes持久化存儲體系
1. PersistentVolume:簡稱pv,持久化存儲,是k8s為云原生應(yīng)用提供一種擁有獨立生命周期的、用戶可管理的存儲抽象設(shè)計
2. PersistentVolumeClaim:簡稱pvc,持久化存儲聲明,是K8S為解耦云原生應(yīng)用和數(shù)據(jù)存儲而設(shè)計的,通過PVC可以讓資源管控更細更靈活、團隊職責(zé)分離、應(yīng)用模板更通用,進一步解除了用戶被云平臺鎖定的顧慮。
3. StorageClass: 簡稱sc,存儲類,是K8S平臺為存儲提供商提供存儲接入的一種聲明,通過sc和相應(yīng)的存儲插件(csi)為容器應(yīng)用提供動態(tài)分配存儲卷的能力;
4.Driver Plugin:存儲驅(qū)驅(qū)動插件,由存儲提供商提供,能夠?qū)泳W(wǎng)絡(luò)存儲,并管理持久存儲卷的生命周期。
持久化存儲優(yōu)勢分析
與臨時存儲相比,PV具有:
1.每個存儲卷可以擁有獨立的生命周期,不再跟隨pod創(chuàng)建和銷毀;
2.使能計算+數(shù)據(jù)的遷移,也即:存儲卷中的數(shù)據(jù)可以隨pod在集群中遷移;
3.多個不同的pod可以共享同一個存儲卷(存儲卷支持共享);
引入PVC/SC后,帶來更大的收益:
1.資源管控更加靈活,可適應(yīng)資源管控嚴格、寬松的不同場景;
2.團隊職責(zé)更加明確,開發(fā)人員只需考慮存儲需求(IO、容量、訪問模式等),不需要關(guān)注存儲類型,甚至品牌;
3.靈活的擴展一些增強功能,比如:擴容、快照能力;
4.應(yīng)用模板更加通用,可通過參數(shù)配置,適應(yīng)不同類型的k8s平臺;
5.進一步消除用戶被存儲提供商、云平臺鎖定的顧慮.
三、PV/PVC的工作原理剖析
pv/pvc綁定原理分析
pvc刷選pv的流程(findBestMatchForClaim) :
1.通過size刷選恰當?shù)膒v;
2通過volumeMode刷選一致的pv;
3.通過Label刷選合適的pv;
4.通過sc刷選符合的pv;
5.通過AccessMode刷選符合條件的pv;
6.返回并綁定符合pvc條件,且size最小的pv。
靜態(tài)卷:pv/pvc使用場景示例
pv/pvc適合在資源管理比較嚴格的場景:
1.開發(fā)人員向集群管理員申請存儲需求;
2.存儲管理員按需求分配存儲;
3.集群管理員按照分配的存儲創(chuàng)建pv;
4.開發(fā)人員創(chuàng)建pvc, pvc關(guān)聯(lián)合適的pv;
5.開發(fā)人員創(chuàng)建pod,并且pod使用pvc.
四、華為云CCE云原生存儲解決方案Everest的架構(gòu)介紹
Everest架構(gòu)介紹
1.部署在系統(tǒng)命名空間下(kube-system)
2.Everest管理面:Everest-csi-controller
①Csi-external-provisioner:負責(zé)云存儲卷的創(chuàng)建
②Csi-external-resizer:負責(zé)云存儲卷的擴容
③Csi-external-attacher:負責(zé)云盤的掛卷/卸卷
④Csi-external-snapshotter:負責(zé)云盤的快照
3.Everest數(shù)據(jù)面:Everest-csi-driver (agent)
①Evs-csi-driver:負責(zé)將云盤格式化,并掛給pod使用;
②Sfs-csi-driver:負責(zé)將文件存儲卷掛給pod使用
③Sfsturbo-csi-driver:負責(zé)將極速文件系統(tǒng)掛給pod使用使用;
④Obs-csi-driver:負責(zé)將對象存儲的并行文件系統(tǒng)準備好,并給pod使用;
本課總結(jié):
StatefulSet:簡稱sts,有狀態(tài)應(yīng)用,一種k8s為用戶提供一組具有有序、唯一、穩(wěn)定的應(yīng)用實例集合。
Volume:卷,k8s為存算分離所做的解耦設(shè)計,讓用戶更加專注于業(yè)務(wù)功能設(shè)計。它在k8s中是依托于pod而使用的。
PersistentVolume:簡稱pv,持久化存儲,是k8s為云原生應(yīng)用提供一種擁有獨立生命周期的、用戶可管理的存儲抽象設(shè)計。
PersistentVolumeClaim:簡稱pvc,持久化存儲聲明,是K8S為解耦云原生應(yīng)用和數(shù)據(jù)存儲而設(shè)計的,通過PVC可以讓資源管控更細更靈活、團隊職責(zé)分離應(yīng)用模板更通用,進一步解除了用戶被云平臺鎖定的顧慮。
StorageClass:簡稱sc,存儲類,是K8S平臺為存儲提供商提供存儲接入的一種聲明,通過sc和相應(yīng)的存儲插件(csi/flexvolume)為容器應(yīng)用提供動態(tài)分配存儲卷的能力。
參考鏈接:
1.相關(guān)內(nèi)容的華為云官網(wǎng)鏈接: https://support.huaweicloud.com/usermanual-cce/cce 01_0042.html
2.CCE云容器引擎官方首頁: https://www.huaweicloud.com/product/cce.html
3. Kubernetes官方文檔:
StatefulSet: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
Storage: https://kubernetes.io/docs/concepts/storagel/
Kubernetes 云原生 容器
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。