Kubernetes和CSI插件
Kubernetes是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。通过Kubernetes可以快速部署应用,快速扩展应用,无缝对接新的应用功能,节省资源,优化硬件资源的使用。
在Kubernetes集群中运行工作负载时,有应用数据持久化存储、配置数据存储、存储资源动态供应等存储需求。Kubernetes集群基于CSI插件实现了容器存储功能,借助存储资源盘活系统提供并管理静态或动态存储卷资源。容器存储接口(CSI)插件是当前Kubernetes社区推荐的插件实现方案。
企业在使用Kubernetes部署容器时,通常需要使用持久化存储。持久卷(Persistent Volume)是独立于Pod的存储资源,它的生命周期与Pod无关,在存储节点中创建持久卷后,即可将其提供给计算节点中的Pod使用,实现了计算资源和存储资源的解耦。Kubernetes CSI 插件可以为有状态应用提供持久化存储能力。Kubernetes集群中的计算节点挂载持久卷作为磁盘,供节点上运行在Pod内的数据库等应用使用。容器中使用的数据库或有状态应用程序,需要依赖于高稳定性、高性能的存储系统,数据需要在硬件或软件重启后仍能继续保留。Kubernetes通过PV、PVC、Storageclass提供了一种强大的基于插件的存储管理机制,并且引入了容器存储接口Container Storage Interface(CSI)机制,用于在Kubernetes和外部存储系统之间建立一套标准的存储管理接口,通过该接口可以为容器提供存储服务。存储提供方只需要基于标准接口进行存储插件的实现,就能使用Kubernetes的原生存储机制为容器提供存储服务。
HBlock CSI插件
HBlock Container Storage Interface(CSI)插件是一种符合CSI规范的驱动程序。HBlock CSI插件与Kubernetes集成,可以为Kubernetes提供高性能、可扩展、高可靠的持久化存储。HBlock CSI插件架构如下图所示。
HBlock CSI插件运行在CSI Pod中,CSI Pod通过此插件管理持久卷的生命周期,包括创建、删除、挂载和卸载持久卷等操作。每个持久卷在 HBlock存储集群中对应一个iSCSI LUN。当Kubernetes中的Pod需要使用该卷时,将通过 iSCSI 协议在Pod所在的物理节点上挂载该LUN,Pod使用LUN对应的数据目录进行读写。
HBlock CSI插件特点
稳定性强
HBlock CSI插件将存储和计算资源完全解耦,实现了资源的隔离。HBlock CSI插件以容器化方式部署,充分保证了运行的稳定性。
安全性高
对于需要配置在HBlock CSI插件中的敏感信息,支持使用加密方式配置,充分保证用户数据安全,不会泄露密码密钥等重要信息。
兼容性强
HBlock CSI插件以容器化方式部署,不依赖于操作系统版本的限制,可以运行在多种操作系统上,消除环境差异带来的不确定性以及其他约束。
灵活性强
支持静态PV,动态PV,动态PVC等多种调用方法,用户可根据实际应用需要灵活创建、挂载存储卷。
静态PV:即直接使用YAML文件创建的PV,适用于存储卷较少,并且不会频繁修改配置信息的场景。
动态PV:即通过PVC创建的PV,无需提前创建PV,只要通过StorageClass把存储资源定义好,Kubernetes就会根据PVC动态创建PV。适用于存储卷较多,但存储卷的类型都相同的场景。
动态PVC:通过StatefulSet中指定的StorageClass动态创建PVC,Kubernetes根据StorageClass中配置的信息,自动触发HBlock CSI插件创建HBlock 卷。适用于需动态创建多个Pod,并为其挂载存储的场景。