当vSAN遇上Kubernetes
作者:互联网
Kubernetes项目在2015年成为CNCF的首个项目,该容器编排平台是由谷歌开源给CNCF的,最初是从谷歌的Borg项目中脱颖而出。Kubernetes开源之后迅速成为整个云原生领域的首选开源容器编排器,支持并集成Kubernetes等开源技术的原生云计算基金会(CNCF)于2018年3月8号宣布,Kubernetes从CNCF旗下正式毕业,这也意味着该开源项目已经成熟,并且足够灵活,可在任何行业、各种规模的公司中大规模地管理容器。
从2018年8月29号发布的最新CNCF用户调查报告可看到,企业在部署Kubernetes架构时面临的容器持久化存储挑战仍然处在高位。虽然当前Kubernetes Rook Ceph与CSI等开放Plugins接口致力于支撑Kubernetes容器持久化存储管理方面的问题,但这些技术均为开源项目,一般的企业客户难于掌握和持续运维这些成熟度不高的存储架构。
VMware vSAN产品作为一款企业级分布式架构自2013年推出后,迅速成为SDS市场上主流产品,得到全球范围内19000家客户的采购与部署。
本文致力于介绍如何通过VMware vSAN存储平台解决企业客户所面临Kubernetes容器持久化存储难度。
首先,我们了解为Kubernetes提供持久数据的一些关键要求:
工作负载Pod的数据需要通过重新启动/重新调度容器来持久化存储。
当容器被重新调度时,它们可能暂时固定在一台主机上,也可能被调度到另一台主机上。
对持久数据的Pod引用应该保持工作负载的可移植性。
在容器上,重新调度磁盘需要与正确的ID重新关联。
容器还可以跨Pod共享和并发访问数据。
因为这些关键要求,使得Kubernetes要实现容器持久化存储非常困难,这也是社区正在致力解决的问题之一,主要困难如下:
存储操作(挂载/绑定/创建/删除)需要让Kubernetes协调和编排。
需要让Kubernetes调度平台感知到不同存储平台的特征和功能。
需要为Kubernetes主节点和所有工作节点提供配置。
其次,正是为了弥补这些关键要求与困难之间的差距,VMware Kubernetes Cloud provider 插件则可以帮助企业客户解决这些问题。
一、为虚拟化下环境下的Kubernets 管理节点和工作节点提供存储空间
一般情况下:管理节点和工作节点需要以下空间:
2个ephemeral磁盘空间
1个持久化空间(用于存放持久化数据如管理节点的etcd key/value数据和工作节点的docker images文件 )
这部分的操作比较简单,只需要在VMware vCenter管理界面为不同管理VM和工作节点创建不同的磁盘即可。
二、 为Kubernets Pod空号提供存储空间
Kubernetes Pod存储空间需要通过Persistent Volume (PV)来实现
在vSphere vCenter管理界面上通过K8s Cloud Provider plugin将Persistent Volume 映射到vSANDatastore存储空间上的VMDK文件。
附加VMDK文件到工作节点VM,作为磁盘使用。
Pod再从这个磁盘挂载volume进行使用。
三、同时还可通过Cloud Provider plugin为PV分配不同的SPBM,过程如下:
可在VMware vCenter管理界面创建对应的SPBM policy,如副本保护数量,磁盘条带数等参数(如右图所示)。
将Provisioner、Datastore、StoragePolicyName等参数写入Pod创建时所用到的volume yaml文件(如左图所示)。
最终将实现Pod volume被分配到vSANDatastore存储空间,并采用指定的存储策略。
标签:容器,存储,Kubernetes,节点,开源,Pod,vSAN,遇上 来源: https://blog.51cto.com/u_15127585/2726690