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接口实现格式化、挂载等功能。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
存储 Kubernetes 数据可视化
|
9月前
|
监控 Java Perl
17-Kubernetes-Pod控制器详解-DaemonSet(DS)
17-Kubernetes-Pod控制器详解-DaemonSet(DS)
|
4月前
|
存储 Kubernetes Unix
k8s教程(Volume篇)-CSI存储机制详解
k8s教程(Volume篇)-CSI存储机制详解
277 0
k8s教程(Volume篇)-CSI存储机制详解
|
6月前
|
存储 Kubernetes 负载均衡
【Kubernetes的Service Mesh发展历程及Istio架构、存储供应使用NFS flexvolume CSI接口】
【Kubernetes的Service Mesh发展历程及Istio架构、存储供应使用NFS flexvolume CSI接口】
|
存储 Kubernetes 监控
k8s csi存储机制
k8s csi存储机制详解
395 0
|
存储 Kubernetes Unix
浅析 CSI 工作原理
CSI 的 cloud providers 有两种类型,一种为 in-tree 类型,一种为 out-of-tree 类型。前者是指运行在 k8s 核心组件内部的存储插件;后者是指独立在 k8s 组件之外运行的存储插件。本文主要介绍 out-of-tree 类型的插件。
978 0
|
Kubernetes 容器 Perl
ACK 1.18集群升级 - CSI Block Volume升级说明
ACK1.16集群升级到1.18版本时,CSI Block Volume出现一个不兼容的问题需要处理;
1122 0
|
存储
CSI 存储插件部署升级指南
新创建的ACK集群都是默认安装最新的存储插件。在升级时,有些模板变化较大的版本需要参考下面升级步骤: CSI-Plugin升级: CSI-Plugin镜像版本信息:
8147 0
|
存储 Kubernetes 应用服务中间件
阿里云Kubernetes CSI实践—CPFS存储卷使用
1. 前言 CPFS(Cloud Paralleled File System)是一种并行文件系统。CPFS 的数据存储在集群中的多个数据节点,并可由多个客户端同时访问,从而能够为大型高性能计算机集群提供高 IOPS、高吞吐、低时延的数据存储服务。
4505 0
阿里云Kubernetes CSI实践—CPFS存储卷使用
|
容器 Kubernetes 应用服务中间件
阿里云 Kubernetes CSI 实践--部署详解
Kubernetes 作为一个可以自动部署、扩展和管理容器化应用程序的开源系统,深受开发者喜爱,那么在 Kubernetes 系统中应该如何来部署 CSI 插件呢?本文将以阿里云 ACK 环境为例,为大家详细介绍如何在 Kubernetes 系统中部署 CSI 插件。
2660 0