CSI Provisioner(容器存储接口供应者)是基于Container Storage Interface (CSI)规范实现的存储卷供应组件。该镜像封装了CSI Provisioner核心功能,主要用于与Kubernetes等容器编排平台集成,实现存储卷的动态创建、绑定、删除等生命周期管理,解决容器集群中存储资源的自动供应问题,为容器化应用提供可靠的存储支持。
CSI Provisioner通常作为Kubernetes控制平面组件部署,以Deployment形式运行。需配合CSI驱动(如特定存储后端的CSI插件)使用。
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共享套接字目录
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
| 环境变量名 | 描述 | 示例值 |
|---|---|---|
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 |
除环境变量外,可通过命令行参数配置(优先级高于环境变量):
--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 Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429