hammerspaceinc/csi-pluginHammerspace CSI卷插件使用Hammerspace后端作为容器的分布式数据存储。该插件支持CSI Spec 1.1.0规范,通过单个Golang二进制文件实现Identity、Node和Controller接口,为容器提供可靠的存储解决方案。
确保在Kubernetes主机上安装nfs-utils:
Ubuntu
bash$ apt install nfs-common
CentOS
bash$ yum install nfs-utils
插件容器必须以特权容器运行。
Kubernetes特定部署说明位于此处
驱动的配置参数(作为环境变量传递给插件容器):
* 必填
| 变量 | 默认值 | 描述 |
|---|---|---|
*CSI_ENDPOINT | 主机上gRPC套接字的位置(例如:/tmp/csi.sock) | |
*CSI_NODE_NAME | 插件运行所在主机的标识符 | |
*HS_ENDPOINT | Hammerspace API网关 | |
*HS_USERNAME | Hammerspace用户名(管理员角色凭据) | |
*HS_PASSWORD | Hammerspace密码 | |
HS_TLS_VERIFY | false | 是否验证Hammerspace API网关证书 |
HS_DATA_PORTAL_MOUNT_PREFIX | 覆盖数据门户挂载的前缀。例如 /mnt/data-portal | |
CSI_MAJOR_VERSION | "1" | 用于与插件通信的CSI接口主版本。有效值为"1"和"0" |
| 名称 | 默认值 | 描述 |
|---|---|---|
exportOptions | 应用于插件创建的共享的导出选项。格式为以';'分隔的子网、访问权限、rootSquash列表。例如 *,RW,false; 172.168.0.0/20,RO,true | |
deleteDelay | -1 | 删除共享时传递给Hammerspace的删除延迟参数值。'-1'表示使用Hammerspace集群默认值 |
volumeNameFormat | %s | 创建后端共享或文件时使用的名称格式。必须包含一个'%s',将被替换为唯一卷ID信息。例如:csi-volume-%s-us-east |
objectives | "" | 除默认目标外,要在创建的共享和文件上设置的目标的逗号分隔列表 |
blockBackingShareName | 存储块卷文件的共享。如果不存在,插件将创建它;也可使用预先存在的共享。创建块卷时必须指定 | |
mountBackingShareName | 存储文件支持的挂载卷文件的共享。如果不存在,插件将创建它;也可使用预先存在的共享。创建除'nfs'之外的文件系统卷时必须指定 | |
fsType | nfs | 在创建的挂载卷上放置的文件系统类型。如果值不是"nfs",则创建文件支持的卷而非NFS共享 |
additionalMetadataTags | 要在插件创建的文件和共享上设置的标签的逗号分隔列表。格式为键值对的逗号分隔列表。例如 storageClassName=hs-storage,fsType=nfs |
当前仅支持 topology.csi.hammerspace.com/is-data-portal 键,值为'true'和'false'。
bash$ sudo make build
更新VERSION文件,然后
bashmake build-release
bashdocker push hammerspaceinc/csi-plugin:$(cat VERSION)
可使用开发镜像进行手动测试。本地文件可暴露给容器,以便进行迭代开发和测试。
示例用法:
构建镜像 -
bashmake build-dev
创建插件和csi-sanity配置的ENV文件。
bashecho " CSI_ENDPOINT=/tmp/csi.sock HS_ENDPOINT=[***] HS_USERNAME=admin HS_PASSWORD=admin HS_TLS_VERIFY=false CSI_NODE_NAME=test SANITY_PARAMS_FILE=/tmp/csi_sanity_params.yaml " > ~/csi-env
创建csi-sanity的参数文件(定义传递给CreateVolume的参数)
bashecho " blockBackingShareName: test-csi-block deleteDelay: 0 objectives: "test-objective" " > ~/csi_sanity_params.yaml
运行镜像 -
bashdocker run --privileged=true \ --cap-add ALL \ --cap-add CAP_SYS_ADMIN \ -v /tmp/:/tmp/:shared \ -v /dev/:/dev/ \ --env-file ~/csi-env \ -it \ -v ~/csi_sanity_params.yaml:/tmp/csi_sanity_params.yaml \ -v ~/csi-plugin:/csi-plugin/:shared \ --name=csi-dev \ hammerspaceinc/csi-plugin-dev
在开发镜像中运行CSI插件
bashmake compile # 重新编译 ./bin/hs-csi-plugin
使用csc调用插件 -
bash# 打开另一个shell进入开发容器 docker exec -it csi-dev /bin/sh # 使用csc工具 ## 调用GetPluginInfo CSI_DEBUG=true CSI_ENDPOINT=/tmp/csi.sock csc identity plugin-info ## 创建1GB文件支持的挂载卷 CSI_DEBUG=true CSI_ENDPOINT=/tmp/csi.sock csc controller create --cap 5,mount,ext4 --req-bytes *** --params mountBackingShareName=file-backed test-filesystem ## 删除卷 CSI_DEBUG=true CSI_ENDPOINT=/tmp/csi.sock csc controller delete /file-backed/test-filesystem ## 探索更多命令 csc -h
make unittest
这些测试是功能性的,将在后端创建和删除卷。
主机必须能够连接到HS_ENDPOINT。可在开发镜像中运行。使用CSI sanity包。
创建参数文件
bashecho " fsType: nfs blockBackingShareName: test-csi-block deleteDelay: 0 objectives: "test-objective" " > ~/csi_sanity_params.yaml
运行Sanity测试
bashexport CSI_ENDPOINT=/tmp/csi.sock export HS_ENDPOINT="[***]" export HS_USERNAME=admin export HS_PASSWORD=admin export HS_TLS_VERIFY=false export CSI_NODE_NAME=test export SANITY_PARAMS_FILE=~/csi_sanity_params.yaml make sanity
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务