
CSI Provisioner(容器存储接口供应者)是基于Container Storage Interface (CSI)规范实现的存储卷供应组件。该镜像封装了CSI Provisioner核心功能,主要用于与Kubernetes等容器编排平台集成,实现存储卷的动态创建、绑定、删除等生命周期管理,解决容器集群中存储资源的自动供应问题,为容器化应用提供可靠的存储支持。
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: 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.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部署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 # 允许卷扩容
yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: example-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: csi-storageclass # 引用创建的StorageClass
bashkubectl get pv kubectl get pvc example-pvc
parameters需与CSI驱动要求匹配,否则可能导致供应失败replicas配置)以提高可用性您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务