k8s.gcr.io/sig-storage/csi-attacher 是 Kubernetes SIG Storage 项目维护的 Docker 镜像,包含 CSI(容器存储接口)规范中的 卷附加器(Attacher) 组件。该组件作为 CSI 驱动的辅助容器(Sidecar Container),负责实现 CSI 规范中的卷附加(Attach)与分离(Detach)操作,是 Kubernetes 集群中部署 CSI 存储驱动时的核心辅助组件之一。
ControllerPublishVolume(Attach)和 ControllerUnpublishVolume(Detach)操作,将存储卷附加到节点或从节点分离。VolumeAttachment 对象,根据对象状态触发 CSI 驱动的 Attach/Detach 动作。VolumeAttachment、Node 等资源,实现与集群控制平面的联动。csi-attacher 实现卷的节点附加/分离逻辑。例如:
csi-provisioner(卷供应)、csi-snapshotter(卷快照)等组件协同,完成存储卷从创建到挂载的全流程。csi-attacher 通信)。csi-attacher 通常作为 Deployment 部署在 Kubernetes 集群中(控制平面组件,非节点级),与 CSI 驱动的 Controller 容器共享同一 Pod,通过挂载 CSI 驱动的 Unix Domain Socket 实现通信。
csi-attacher 通过命令行参数配置,常用参数如下:
| 参数 | 描述 | 默认值 |
|---|---|---|
--v | 日志级别(数值越大日志越详细,如 0=ERROR、5=INFO、10=DEBUG) | 5 |
--csi-address | CSI 驱动的 Unix Domain Socket 路径(需通过 hostPath 或 emptyDir 挂载) | /var/lib/csi/sockets/pluginproxy/csi.sock |
--leader-election | 是否启用 Leader Election(多实例部署时必选) | true |
--leader-election-namespace | Leader Election 锁对象所在命名空间 | 当前 Pod 所在命名空间 |
--retry-interval-start | 初始重试间隔(单位:秒),失败后指数退避 | 1s |
--retry-interval-max | 最大重试间隔(单位:秒) | 30s |
--timeout | CSI 操作超时时间(单位:秒) | 120s |
以下是部署 csi-attacher 作为 Sidecar 的示例 YAML(以 generic CSI 驱动为例):
yamlapiVersion: apps/v1 kind: Deployment metadata: name: csi-attacher namespace: kube-system spec: replicas: 2 # 多实例确保高可用(配合 leader election) selector: matchLabels: app: csi-attacher template: metadata: labels: app: csi-attacher spec: serviceAccountName: csi-attacher-sa # 需绑定 RBAC 权限(见下方) containers: - name: csi-attacher image: k8s.gcr.io/sig-storage/csi-attacher:v4.0.0 # 替换为实际版本 args: - "--v=5" - "--csi-address=/csi/csi.sock" # 对应 CSI 驱动的 socket 路径 - "--leader-election=true" - "--leader-election-namespace=kube-system" - "--retry-interval-start=1" - "--retry-interval-max=30" volumeMounts: - name: csi-socket-dir mountPath: /csi # 挂载 CSI 驱动的 socket 目录 # 此处省略 CSI 驱动的 Controller 容器配置(需与 csi-attacher 共享 csi-socket-dir 卷) volumes: - name: csi-socket-dir emptyDir: {} # 或 hostPath(若 CSI 驱动 socket 位于节点本地)
csi-attacher 需要访问 Kubernetes API 操作 VolumeAttachment 等资源,需配置 RBAC 权限(示例):
yamlapiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: csi-attacher-role rules: - apiGroups: ["storage.k8s.io"] resources: ["volumeattachments"] verbs: ["get", "list", "watch", "create", "update", "delete"] - apiGroups: ["storage.k8s.io"] resources: ["volumeattachments/status"] verbs: ["update"] - apiGroups: [""] resources: ["nodes"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: csi-attacher-binding subjects: - kind: ServiceAccount name: csi-attacher-sa namespace: kube-system roleRef: kind: ClusterRole name: csi-attacher-role apiGroup: rbac.authorization.k8s.io
bash# 需提前准备 CSI 驱动的 socket 文件(如 /host/var/lib/csi/sock/csi.sock) docker run -d \ --name csi-attacher \ -v /host/var/lib/csi/sock:/csi \ # 挂载 CSI 驱动的 socket 目录 k8s.gcr.io/sig-storage/csi-attacher:v4.0.0 \ --v=5 \ --csi-address=/csi/csi.sock \ --leader-election=false # 单实例运行时禁用 leader election
csi-attacher 的服务账户拥有访问 VolumeAttachment、Node 资源的权限,否则会导致操作失败。csi-attacher 版本)。--csi-address 必须指向 CSI 驱动 Controller 暴露的 Unix Domain Socket,且路径需通过卷挂载共享到 csi-attacher 容器。--leader-election,避免单点故障。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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