從2018年8月29號發(fā)布的最新CNCF用戶(hù)調查報告可看到,企業(yè)在部署Kubernetes架構時(shí)面臨的容器持久化存儲挑戰仍然處在高位。雖然當前Kubernetes Rook Ceph與CSI等開(kāi)放Plugins接口致力于支撐Kubernetes容器持久化存儲管理方面的問(wèn)題,但這些技術(shù)均為開(kāi)源項目,一般的企業(yè)客戶(hù)難于掌握和持續運維這些成熟度不高的存儲架構。

VMware vSAN產(chǎn)品作為一款企業(yè)級分布式架構自2013年推出后,迅速成為SDS市場(chǎng)上主流產(chǎn)品,得到全球范圍內19000家客戶(hù)的采購與部署。
本文致力于介紹如何通過(guò)VMware vSAN存儲平臺解決企業(yè)客戶(hù)所面臨Kubernetes容器持久化存儲難度。
首先,我們了解為Kubernetes提供持久數據的一些關(guān)鍵要求:
- 工作負載Pod的數據需要通過(guò)重新啟動(dòng)/重新調度容器來(lái)持久化存儲。
- 當容器被重新調度時(shí),它們可能暫時(shí)固定在一臺主機上,也可能被調度到另一臺主機上。
- 對持久數據的Pod引用應該保持工作負載的可移植性。
- 在容器上,重新調度磁盤(pán)需要與正確的ID重新關(guān)聯(lián)。
- 容器還可以跨Pod共享和并發(fā)訪(fǎng)問(wèn)數據。
因為這些關(guān)鍵要求,使得Kubernetes要實(shí)現容器持久化存儲非常困難,這也是社區正在致力解決的問(wèn)題之一,主要困難如下:
- 存儲操作(掛載/綁定/創(chuàng )建/刪除)需要讓Kubernetes協(xié)調和編排。
- 需要讓Kubernetes調度平臺感知到不同存儲平臺的特征和功能。
- 需要為Kubernetes主節點(diǎn)和所有工作節點(diǎn)提供配置。
其次,正是為了彌補這些關(guān)鍵要求與困難之間的差距,VMware Kubernetes Cloud provider 插件則可以幫助企業(yè)客戶(hù)解決這些問(wèn)題。
一、為虛擬化下環(huán)境下的Kubernets 管理節點(diǎn)和工作節點(diǎn)提供存儲空間

一般情況下:管理節點(diǎn)和工作節點(diǎn)需要以下空間:
- 2個(gè)ephemeral磁盤(pán)空間
- 1個(gè)持久化空間(用于存放持久化數據如管理節點(diǎn)的etcd key/value數據和工作節點(diǎn)的docker images文件 )
這部分的操作比較簡(jiǎn)單,只需要在VMware vCenter管理界面為不同管理VM和工作節點(diǎn)創(chuàng )建不同的磁盤(pán)即可。
二、 為Kubernets Pod空號提供存儲空間

Kubernetes Pod存儲空間需要通過(guò)Persistent Volume (PV)來(lái)實(shí)現
- 在vSphere vCenter管理界面上通過(guò)K8s Cloud Provider plugin將Persistent Volume 映射到vSANDatastore存儲空間上的VMDK文件。
- 附加VMDK文件到工作節點(diǎn)VM,作為磁盤(pán)使用。
- Pod再從這個(gè)磁盤(pán)掛載volume進(jìn)行使用。
三、同時(shí)還可通過(guò)Cloud Provider plugin為PV分配不同的SPBM,過(guò)程如下:

可在VMware vCenter管理界面創(chuàng )建對應的SPBM policy,如副本保護數量,磁盤(pán)條帶數等參數(如右圖所示)。
將Provisioner、Datastore、StoragePolicyName等參數寫(xiě)入Pod創(chuàng )建時(shí)所用到的volume yaml文件(如左圖所示)。
最終將實(shí)現Pod volume被分配到vSANDatastore存儲空間,并采用指定的存儲策略。
來(lái)源:vmware中國