K8s CSI(Container Storage Interface)

名词解释

名词 解释
in-tree 存在于核心 Kubernetes 存储库中的代码。
out-of-tree 存在于 Kubernetes 核心代码库之外的代码。
Volume Plugin PV Controller、ADController 以及 Volume Manager 对某一 volume 进行 Provision/Delete、Attach/Detach、Mount/Umount 等操作,其实都是通过调用 volume 所对应的 Volume Plugin 实现的 k8s 定义的 VolumePlugin 接口来完成的。Volume Plugin 有多种,包括 NFS Volume Plugin,CSI Volume Plugin 等(Volume Plugin 都是 in-tree 的)
Container Storage Interface (CSI) 一个行业标准的接口规范,使容器编排系统(COs)能够将任意存储系统暴露给其容器化工作负载。
CSI Volume Driver 实现了 CSI 的驱动程序。CSI Volume Plugin 将会调用 CSI Volume Driver 实现的 CSI,完成对 volume 的 Provision/Delete、Attach/Detach、Mount/Umount 等操作(CSI Volume Driver 都是 out-of-tree 的)

背景和动机

由于,Kubernetes所有的Volume Plugin是in-tree的,意味着存储供应商(Storage Provider,SP)向Kubernetes添加新的存储系统需要实现新的Volume Plugin,并将代码检入核心Kubernetes代码仓库中。这样做有很多不好的地方。同时SP也一直在应对如何使他们的存储系统在不同的容器编排系统(COs)中可用。SP必须为同一个存储系统编写和支持多个Volume Plugin以适用于不同的CO或选择不支持某些CO。

容器存储接口(CSI)是一个规范,由来自各种CO(包括Kubernetes、Mesos、Cloud Foundry和Docker)的社区成员合作而产生。 该接口旨在建立标准化机制,这样SP只需要各自维护其符合CSI规范的out-of-tree的CSI Volume Driver,并由各CO来维护各自的in-tree的CSI Volume Plugin,就可以在各种CO中使用其存储系统。

Kubernetes 的存储架构

在Kubernetes上CSI Volume Driver的推荐部署模式

CVD

第三方SP需要实现并创建一个CSI Volume Driver(以下简称CVD)容器,要求其中的bin(例如alibaba-cloud-csi-driver)实现CSI规范中所定义的包括Controller,Node,和Identity服务,并通过Unix域套接字公开gRPC接口。

部署

K8s CSI(Container Storage Interface)_第1张图片
部署主要包含两个部分:CSI Controller Server 与 CSI Node Server。

  • Controller Server(StatefulSet或Deployment)是控制端的功能,主要实现create/delet

你可能感兴趣的:(kubernetes,容器,云原生)