CSI Provisioner Docker 镜像
longhornio查看 Docker Hub 原文页
CSI Provisioner是实现容器存储接口(CSI)的存储卷供应组件,用于为Kubernetes等容器集群动态创建、管理存储卷,支持存储资源的自动分配与生命周期管理,满足容器化应用的存储需求。
下载次数: 0状态:社区镜像维护者:longhornio仓库类型:镜像最近更新:14 天前
CSI Provisioner 镜像文档
1. 镜像概述和主要用途
CSI Provisioner(容器存储接口供应者)是基于Container Storage Interface (CSI)规范实现的存储卷供应组件。该镜像封装了CSI Provisioner核心功能,主要用于与Kubernetes等容器编排平台集成,实现存储卷的动态创建、绑定、删除等生命周期管理,解决容器集群中存储资源的自动供应问题,为容器化应用提供可靠的存储支持。
2. 核心功能和特性
2.1 核心功能
- 动态存储卷供应:根据容器集群的存储需求(通过PersistentVolumeClaim,PVC)自动创建存储卷(PersistentVolume,PV)
- 存储卷生命周期管理:支持存储卷的创建、绑定、删除、扩容等全生命周期操作
- CSI规范兼容:遵循CSI 1.0+规范,可与符合CSI标准的存储驱动集成
2.2 关键特性
- 存储类支持:与Kubernetes StorageClass资源深度集成,可基于存储类配置供应策略
- 拓扑感知:支持根据节点拓扑信息(如区域、可用区)分配存储资源,满足数据本地化需求
- 重试机制:内置操作失败重试逻辑,提高存储供应可靠性
- 多存储后端适配:可与AWS EBS、GCP PD、Azure Disk、Ceph、NFS等多种存储后端集成
- 监控与日志:支持标准日志输出,可集成Prometheus等监控工具监控供应状态
3. 使用场景和适用范围
3.1 典型使用场景
- Kubernetes集群存储自动化:为Kubernetes集群提供存储卷的动态供应能力,替代手动创建PV的传统方式
- 多存储后端统一管理:通过CSI接口标准化不同存储后端的接入,简化多存储系统的管理复杂度
- 大规模容器部署:在微服务、大数据等大规模容器化部署场景中,实现存储资源的自动分配
- 存储卷动态扩缩容:支持根据应用需求自动调整存储卷大小,满足业务增长需求
3.2 适用范围
- Kubernetes集群(1.13+版本,支持CSI规范)
- 需动态管理存储资源的容器化应用
- 采用CSI兼容存储驱动的存储系统(如Ceph RBD、GlusterFS、AWS EBS等)
- 需要存储资源隔离与权限控制的多租户环境
4. 使用方法和配置说明
4.1 部署方式
CSI Provisioner通常作为Kubernetes控制平面组件部署,以Deployment形式运行。需配合CSI驱动(如特定存储后端的CSI插件)使用。
4.1.1 Kubernetes Deployment示例
yamlapiVersion: apps/v1 kind: Deployment metadata: name: csi-provisioner namespace: kube-system spec: replicas: 1 selector: matchLabels: app: csi-provisioner template: metadata: labels: app: csi-provisioner spec: serviceAccountName: csi-provisioner-sa containers: - name: csi-provisioner image: docker.xuanyuan.run/csi-provisioner:latest # 替换为实际镜像名称 args: - "--csi-address=$(CSI_ENDPOINT)" - "--provisioner=$(PROVISIONER_NAME)" - "--volume-name-prefix=csi" - "--v=5" # 日志详细级别 env: - name: CSI_ENDPOINT value: "unix:///csi/csi.sock" # CSI驱动通信端点(需与CSI驱动共享) - name: PROVISIONER_NAME value: "storage.example.com/csi" # 供应者名称(需与StorageClass匹配) volumeMounts: - name: csi-socket-dir mountPath: /csi volumes: - name: csi-socket-dir emptyDir: {} # 通常与CSI驱动通过EmptyDir或HostPath共享套接字目录
4.1.2 RBAC权限配置
CSI Provisioner需要访问Kubernetes API以管理PV、PVC等资源,需配置RBAC权限:
yamlapiVersion: v1 kind: ServiceAccount metadata: name: csi-provisioner-sa namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: csi-provisioner-role rules: - apiGroups: [""] resources: ["persistentvolumes"] verbs: ["create", "delete", "get", "list", "watch", "update"] - apiGroups: [""] resources: ["persistentvolumeclaims"] verbs: ["get", "list", "watch", "update"] - apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "list", "watch"] # 其他必要权限(如events、nodes等) --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: csi-provisioner-binding subjects: - kind: ServiceAccount name: csi-provisioner-sa namespace: kube-system roleRef: kind: ClusterRole name: csi-provisioner-role apiGroup: rbac.authorization.k8s.io
4.2 环境变量与配置参数
4.2.1 核心环境变量
| 环境变量名 | 描述 | 示例值 |
|---|---|---|
CSI_ENDPOINT | CSI驱动的通信端点,通常为unix域套接字路径 | unix:///csi/csi.sock |
PROVISIONER_NAME | 供应者名称,需与StorageClass中的provisioner字段一致 | storage.example.com/csi |
STORAGECLASS_WHITELIST | 允许供应的StorageClass名称白名单(逗号分隔,默认允许所有) | standard,high-performance |
RETRY_INTERVAL | 操作失败后的重试间隔(秒) | 30 |
VERBOSE | 日志详细程度(0-5,5为最详细) | 5 |
4.2.2 命令行参数
除环境变量外,可通过命令行参数配置(优先级高于环境变量):
--csi-address:同CSI_ENDPOINT--provisioner:同PROVISIONER_NAME--storageclass-whitelist:同STORAGECLASS_WHITELIST--retry-interval-start:初始重试间隔(秒),默认1--retry-interval-max:最大重试间隔(秒),默认300--volume-name-prefix:生成的PV名称前缀,默认pvc
4.3 使用步骤
-
部署CSI驱动:确保目标存储后端的CSI驱动已部署到Kubernetes集群(如Ceph CSI驱动)
-
部署CSI Provisioner:使用上述Deployment配置部署CSI Provisioner,确保与CSI驱动共享套接字目录
-
创建StorageClass:定义StorageClass资源,指定
provisioner为PROVISIONER_NAME的值:
yamlapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-storageclass provisioner: storage.example.com/csi # 需与PROVISIONER_NAME一致 parameters: storageBackend: "ceph" # 存储后端参数,根据CSI驱动要求配置 replicaCount: "3" reclaimPolicy: Delete # PV回收策略(Delete/Retain) allowVolumeExpansion: true # 允许卷扩容
- 创建PVC:创建PersistentVolumeClaim,引用上述StorageClass:
yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: example-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: csi-storageclass # 引用创建的StorageClass
- 验证部署:检查PV是否自动创建并与PVC绑定:
bashkubectl get pv kubectl get pvc example-pvc
4.4 注意事项
- 确保CSI Provisioner与CSI驱动版本兼容(需同时支持相同的CSI规范版本)
- 配置正确的RBAC权限,避免因权限不足导致操作失败
- StorageClass的
parameters需与CSI驱动要求匹配,否则可能导致供应失败 - 对于生产环境,建议部署多个Provisioner副本(通过Deployment的
replicas配置)以提高可用性
longhornio 命名空间的其他可用镜像:
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
轩辕镜像加速拉取命令点我查看更多 csi-provisioner 镜像标签
docker pull docker.xuanyuan.run/longhornio/csi-provisioner:<标签>
DockerHub 原生拉取命令
docker pull longhornio/csi-provisioner:<标签>
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务