
longhornio/csi-provisionerCSI 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配置)以提高可用性



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务