
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 登录认证访问私有仓库
无需登录使用专属域名
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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务