CSI 系统介绍

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: CSI 基础CSI只支持PV、PVC方式,不支持Volume方式;官方资料: https://kubernetes-csi.github.io/docs/How to Write CSI Plugin: https://arslan.

CSI 基础

CSI只支持PV、PVC方式,不支持Volume方式;

官方资料: https://kubernetes-csi.github.io/docs/

How to Write CSI Plugin: https://arslan.io/2018/06/21/how-to-write-a-container-storage-interface-csi-plugin/

目前版本信息:

Kubernetes CSI Version CSI Status
v1.9 v0.1 Alpha
v1.10 v0.2 Beta
v1.11 v0.3 Beta
v1.12 v0.3 Beta
v1.13 v1.0.0 GA

CSI基础架构:

下图是典型的数据卷生命周期流程图,一般块存储都是按照这个流程执行;
image

PV-Controller

Controller Manager的一部分,主要做卷的provision/delete,pv、pvc绑定;

PV Controller通过监听API Server中的PV,PVC,SC三类资源更新,当监听到这些资源的创建、删除、修改时,PV Controller做创建、删除、绑定、回收。

PV Controller 会调用注册的Provisioner完成存储卷的创建,然后创建PV对象,并与PVC进行绑定;

AD-Controller

Controller Manager的一部分,主要从事块设备的attach/detach(例如:rbd,ebs块设备需要在mount之前先attach 到主机上)

非必选: attach/detach可以通过kubelet的volume manager驱动,Controller Manager提供配置可以禁用。

通过在kubelet中--enable-controller-attach-detach,设置是否通过AD Controller来管理分配到本节点的pod volume AD;
--enable-controller-attach-detach=true:通过AD-Controller做AD,kubelet禁用;
--enable-controller-attach-detach=false:通过kubelet做AD,AD-Controller对本节点禁用;

作用:当API Server中pod(配置了pvc)与node间的关系发生变化时,通过调用存储插件将这个pod关联的PV Attach/Detach到对应node上. 完成后通知其它关联组件(kubelet)。

Volume Manager

运行在kubelet里,主要完成attach/detach/mount/unmount;

mount/unmount操作是可选的,通过kubelet配置的enable-controller-attach-detach参数确定;

当pod调度到这个node上后才会有卷的相应操作,所以它的触发端是:kubelet根据Pod Manager里pod spec里的存储配置来触发卷的挂载操作;

Kubelet会监听到调度到该节点上的pod,把pod缓存到Pod Manager中;

VolumeManager通过Pod Manager获取PV/PVC的状态,并分析出具体的attach/detach、mount/umount操作,然后调用plugin进行相应的业务处理;

External-Provisioner

监听 Kubernetes PVC 对象,并触发对 CSI Plugin的 CreateVolume 和DeleteVolume 操作;
CreateVolume成功后,创建PV对象;

External-Attacher

监听 VolumeAttachment 对象,触发 ControllerPublish 和 ControllerUnPublish 操作,通过 CSI endpoint 触发;

Driver-Register

向 Kubelet注册 CSI Plugin 程序,并将 NodeId 添加到 Kubernetes Node 对象的 annotation 里面。

Volume Plugin

存储提供的扩展接口, 包含了各类存储提供者的plugin实现;
会调用CSI Plugin的NodeStageVolume、NodePublishVolume接口实现格式化、挂载等功能。

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
canal Kubernetes 网络架构
K8s CNI 网络最强对比:Flannel、Calico、Canal 和 Weave
Kubernetes 采用的 CNI 标准,让 Kubernetes 生态系统中的网络解决方案百花齐放。更多样的选择,意味着大多数用户将能够找到适合其当前需求和部署环境的 CNI 插件,同时还可以在环境发生变化时也能找到新的解决方案。
3706 1
|
Ubuntu Shell 网络安全
实例 : 查看Docker容器内文件系统
dockfile ; docker container ; docker images
4831 0
|
9月前
鸿蒙开发:组件样式的复用
如果要实现多页面之间的组件属性样式复用,建议使用AttributeModifier,如果是单页面,通用属性可以使用@Styles,组件自有属性可以使用@Extend。
158 2
鸿蒙开发:组件样式的复用
|
Prometheus 监控 Cloud Native
prometheus学习笔记之cAdvisor
prometheus学习笔记之cAdvisor
|
存储 负载均衡 网络协议
后端开发中的服务发现
【2月更文挑战第5天】在后端开发中,服务发现是至关重要的一个环节。本文将介绍服务发现的概念和原理,并提供一些实际应用场景以及相关技术解决方案。
|
存储 弹性计算 安全
阿里云服务器ECS产品知识及购买和使用常见问题及答案汇总
本文总结了阿里云用户在购买和使用阿里云服务器中的一些常见的问题,包括什么是云服务器ECS,特性与优势,应用场景,基本概念,使用限制等众多问题,适合新手用户全方位了解阿里云服务器,并根据自己的需求选择自己满意的云服务器。
阿里云服务器ECS产品知识及购买和使用常见问题及答案汇总
|
SQL 弹性计算 分布式计算
使用EMR+DLF+OSS-HDFS进行数据湖分析
本实验通过使用EMR,搭建EMR集群,对OSS-HDFS进行数据湖分析
|
数据安全/隐私保护
⊕是什么意思
⊕是什么意思
1672 0
⊕是什么意思
|
Kubernetes 调度 Perl
k8s中的PVC为何需要延迟绑定?(WaitForFirstConsumer)
有一个pod, 使用的pvc叫pvc-1, 我们希望它只运行在node-2上,在当前的集群中存在两台主机符合pod的pvc的要求, 假如node-1上是pv-1, node-2上是pv-2,这两个完全一样.
694 0