從2018年8月29號(hào)發(fā)布的最新CNCF用戶調(diào)查報(bào)告可看到,企業(yè)在部署Kubernetes架構(gòu)時(shí)面臨的容器持久化存儲(chǔ)挑戰(zhàn)仍然處在高位。雖然當(dāng)前Kubernetes Rook Ceph與CSI等開(kāi)放Plugins接口致力于支撐Kubernetes容器持久化存儲(chǔ)管理方面的問(wèn)題,但這些技術(shù)均為開(kāi)源項(xiàng)目,一般的企業(yè)客戶難于掌握和持續(xù)運(yùn)維這些成熟度不高的存儲(chǔ)架構(gòu)。
VMware vSAN產(chǎn)品作為一款企業(yè)級(jí)分布式架構(gòu)自2013年推出后,迅速成為SDS市場(chǎng)上主流產(chǎn)品,得到全球范圍內(nèi)19000家客戶的采購(gòu)與部署。
本文致力于介紹如何通過(guò)VMware vSAN存儲(chǔ)平臺(tái)解決企業(yè)客戶所面臨Kubernetes容器持久化存儲(chǔ)難度。
首先,我們了解為Kubernetes提供持久數(shù)據(jù)的一些關(guān)鍵要求:
- 工作負(fù)載Pod的數(shù)據(jù)需要通過(guò)重新啟動(dòng)/重新調(diào)度容器來(lái)持久化存儲(chǔ)。
- 當(dāng)容器被重新調(diào)度時(shí),它們可能暫時(shí)固定在一臺(tái)主機(jī)上,也可能被調(diào)度到另一臺(tái)主機(jī)上。
- 對(duì)持久數(shù)據(jù)的Pod引用應(yīng)該保持工作負(fù)載的可移植性。
- 在容器上,重新調(diào)度磁盤需要與正確的ID重新關(guān)聯(lián)。
- 容器還可以跨Pod共享和并發(fā)訪問(wèn)數(shù)據(jù)。
因?yàn)檫@些關(guān)鍵要求,使得Kubernetes要實(shí)現(xiàn)容器持久化存儲(chǔ)非常困難,這也是社區(qū)正在致力解決的問(wèn)題之一,主要困難如下:
- 存儲(chǔ)操作(掛載/綁定/創(chuàng)建/刪除)需要讓Kubernetes協(xié)調(diào)和編排。
- 需要讓Kubernetes調(diào)度平臺(tái)感知到不同存儲(chǔ)平臺(tái)的特征和功能。
- 需要為Kubernetes主節(jié)點(diǎn)和所有工作節(jié)點(diǎn)提供配置。
其次,正是為了彌補(bǔ)這些關(guān)鍵要求與困難之間的差距,VMware Kubernetes Cloud provider 插件則可以幫助企業(yè)客戶解決這些問(wèn)題。
一、為虛擬化下環(huán)境下的Kubernets 管理節(jié)點(diǎn)和工作節(jié)點(diǎn)提供存儲(chǔ)空間
一般情況下:管理節(jié)點(diǎn)和工作節(jié)點(diǎn)需要以下空間:
- 2個(gè)ephemeral磁盤空間
- 1個(gè)持久化空間(用于存放持久化數(shù)據(jù)如管理節(jié)點(diǎn)的etcd key/value數(shù)據(jù)和工作節(jié)點(diǎn)的docker images文件 )
這部分的操作比較簡(jiǎn)單,只需要在VMware vCenter管理界面為不同管理VM和工作節(jié)點(diǎn)創(chuàng)建不同的磁盤即可。
二、 為Kubernets Pod空號(hào)提供存儲(chǔ)空間
Kubernetes Pod存儲(chǔ)空間需要通過(guò)Persistent Volume (PV)來(lái)實(shí)現(xiàn)
- 在vSphere vCenter管理界面上通過(guò)K8s Cloud Provider plugin將Persistent Volume 映射到vSANDatastore存儲(chǔ)空間上的VMDK文件。
- 附加VMDK文件到工作節(jié)點(diǎn)VM,作為磁盤使用。
- Pod再?gòu)倪@個(gè)磁盤掛載volume進(jìn)行使用。
三、同時(shí)還可通過(guò)Cloud Provider plugin為PV分配不同的SPBM,過(guò)程如下:
可在VMware vCenter管理界面創(chuàng)建對(duì)應(yīng)的SPBM policy,如副本保護(hù)數(shù)量,磁盤條帶數(shù)等參數(shù)(如右圖所示)。
將Provisioner、Datastore、StoragePolicyName等參數(shù)寫入Pod創(chuàng)建時(shí)所用到的volume yaml文件(如左圖所示)。
最終將實(shí)現(xiàn)Pod volume被分配到vSANDatastore存儲(chǔ)空間,并采用指定的存儲(chǔ)策略。
來(lái)源:vmware中國(guó)