searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

海纳百川的容器存储虚拟化

2023-06-29 02:11:45
14
0

一、容器存储虚拟化的机巧

以rbd块存储的容器存储卷为例,我们掀开容器存储卷的盖板,从宿主机视角看容器存储虚拟化落地的机巧:

1、容器内/data绑定挂载自宿主机路径/var/lib/kubelet/pods/$pod_id/.../$pv-name

2、宿主机/var/lib/kubelet/pods/$pod_id/.../$pv-name路径由文件挂载自设备/dev/rbd1

3、宿主机/dev/rbd1设备映射自远端存储ceph rbd块设备

上述挂载映射路径见示意图:

二、海纳百川的容器存储集成方案

分布式存储历经数十年发展,形成了以对象、块以及文件为主的主流存储形态,在各类行业市场久经考验。

计算虚拟化新贵docker&kubernetes自问世来与分布式存储前辈打得火热,陆续提供了in-tree plugin、flexvolume以及csi系列容器存储集成方案,实现海纳百川的容器存储虚拟化。

in-tree plugin为kubernetes版本早期内建的存储插件,支持ceph、nfs等主流第三方存储。

in-tree plugin在丰富了kubernetes容器存储虚拟化选项的同时,也带来了kubernetes代码上的繁冗与版本迭代效率的下降。

flexvolume是kubernetes指给社区可自助存储集成的曲径小道,支持mount、unmount与init等最小方法集,可快速实现第三方存储集成方案。

CSI是kubernetes提供社区可自助存储集成的康庄大道。基于csi规范,支持attach、dettach、mount与unmount的接口能力,实现自动化的第三方存储集成方案。

三、百川通衢的CSI规范

CSI (container storage interface)是由Kubernetes、Cloud Foundry 以及Mesos等联合制定的容器存储行业接口规范,

目标指引社区开发者将第三方厂商分布式存储接入至容器化应用。

下图为符合CSI规范的存储插件在kubernetes中的实践:

 

结合kubernetes,csi插件与pod交互实现pod内存储卷到远端分布式存储的映射,详细交互过程如下:

1、kube-apiserver响应外部请求,创建PVC X

2、external provisioner调用createvolume接口在外部存储系统上创建存储卷,而后请求kube-apiserver创建PV Y对象

3、kube-controllermanager内PersistentVolumeController绑定PVC X和PV Y

4、kube-apiserver响应外部请求,创建新Pod,而后此Pod被kube-scheduler调度至节点A上

5、kube-controllermanager内AttachDetachController控制器创建VolumeAttachment对象Z

6、external provisioner调用controllerPublishvolume接口实现外部存储卷到节点A的绑定

7、kubelet的VolumeManagerReconciler调用csiNode的NodeStageVolume和NodePublishVolume方法完成存储卷的格式化以及mount过程

至此,此Pod实现对外部块存储卷的成功挂载

四、水到渠成

前文所述,kubernetes通过in-tree plugin、flexvolume以及csi插件能力实现容器存储虚拟化的落地。

换句话说,csi等存储插件实现了容器存储卷从pvc声明起始,到宿主上pv、存储设备以及远端块存储的创建,配置的全流程自动化。

 

0条评论
0 / 1000
lorland
10文章数
0粉丝数
lorland
10 文章 | 0 粉丝
原创

海纳百川的容器存储虚拟化

2023-06-29 02:11:45
14
0

一、容器存储虚拟化的机巧

以rbd块存储的容器存储卷为例,我们掀开容器存储卷的盖板,从宿主机视角看容器存储虚拟化落地的机巧:

1、容器内/data绑定挂载自宿主机路径/var/lib/kubelet/pods/$pod_id/.../$pv-name

2、宿主机/var/lib/kubelet/pods/$pod_id/.../$pv-name路径由文件挂载自设备/dev/rbd1

3、宿主机/dev/rbd1设备映射自远端存储ceph rbd块设备

上述挂载映射路径见示意图:

二、海纳百川的容器存储集成方案

分布式存储历经数十年发展,形成了以对象、块以及文件为主的主流存储形态,在各类行业市场久经考验。

计算虚拟化新贵docker&kubernetes自问世来与分布式存储前辈打得火热,陆续提供了in-tree plugin、flexvolume以及csi系列容器存储集成方案,实现海纳百川的容器存储虚拟化。

in-tree plugin为kubernetes版本早期内建的存储插件,支持ceph、nfs等主流第三方存储。

in-tree plugin在丰富了kubernetes容器存储虚拟化选项的同时,也带来了kubernetes代码上的繁冗与版本迭代效率的下降。

flexvolume是kubernetes指给社区可自助存储集成的曲径小道,支持mount、unmount与init等最小方法集,可快速实现第三方存储集成方案。

CSI是kubernetes提供社区可自助存储集成的康庄大道。基于csi规范,支持attach、dettach、mount与unmount的接口能力,实现自动化的第三方存储集成方案。

三、百川通衢的CSI规范

CSI (container storage interface)是由Kubernetes、Cloud Foundry 以及Mesos等联合制定的容器存储行业接口规范,

目标指引社区开发者将第三方厂商分布式存储接入至容器化应用。

下图为符合CSI规范的存储插件在kubernetes中的实践:

 

结合kubernetes,csi插件与pod交互实现pod内存储卷到远端分布式存储的映射,详细交互过程如下:

1、kube-apiserver响应外部请求,创建PVC X

2、external provisioner调用createvolume接口在外部存储系统上创建存储卷,而后请求kube-apiserver创建PV Y对象

3、kube-controllermanager内PersistentVolumeController绑定PVC X和PV Y

4、kube-apiserver响应外部请求,创建新Pod,而后此Pod被kube-scheduler调度至节点A上

5、kube-controllermanager内AttachDetachController控制器创建VolumeAttachment对象Z

6、external provisioner调用controllerPublishvolume接口实现外部存储卷到节点A的绑定

7、kubelet的VolumeManagerReconciler调用csiNode的NodeStageVolume和NodePublishVolume方法完成存储卷的格式化以及mount过程

至此,此Pod实现对外部块存储卷的成功挂载

四、水到渠成

前文所述,kubernetes通过in-tree plugin、flexvolume以及csi插件能力实现容器存储虚拟化的落地。

换句话说,csi等存储插件实现了容器存储卷从pvc声明起始,到宿主上pv、存储设备以及远端块存储的创建,配置的全流程自动化。

 

文章来自个人专栏
kubernetes
10 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0