K8s CSI(Container Storage Interface)

本文介绍了Kubernetes的Container Storage Interface (CSI)规范,旨在解决存储供应商在不同容器编排系统中实现存储系统的挑战。CSI通过标准化接口让供应商只需维护out-of-tree CSI Volume Driver,Kubernetes等CO维护in-tree CSI Volume Plugin。文章详细阐述了Kubernetes的存储架构,推荐的CSI Volume Driver部署模式,包括CVD、Controller Server和Node Server,以及服务注册和工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

名词解释

名词 解释
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 PluginCSI 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规范中所定义的包括ControllerNode,和Identity服务,并通过Unix域套接字公开gRPC接口。

部署

在这里插入图片描述
部署主要包含两个部分:CSI Controller Server 与 CSI Node Server。

  • Controller Server(StatefulSet或Deployment)是控制端的功能,主要实现create/delet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值