如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Hammerspace CSI卷插件使用Hammerspace后端作为容器的分布式数据存储。该插件支持https://github.com/container-storage-interface/spec/blob/master/spec.md%E8%A7%84%E8%8C%83%EF%BC%8C%E9%80%9A%E8%BF%87%E5%8D%95%E4%B8%AAGolang%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E5%AE%9E%E7%8E%B0Identity%E3%80%81Node%E5%92%8CController%E6%8E%A5%E5%8F%A3%EF%BC%8C%E4%B8%BA%E5%AE%B9%E5%99%A8%E6%8F%90%E4%BE%9B%E5%8F%AF%E9%9D%A0%E7%9A%84%E5%AD%98%E5%82%A8%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E3%80%82
确保在Kubernetes主机上安装nfs-utils:
Ubuntu
bash$ apt install nfs-common
CentOS
bash$ yum install nfs-utils
插件容器必须以特权容器运行。
Kubernetes特定部署说明位于https://github.com/hammer-space/csi-plugin/blob/master/deploy/kubernetes/README.md
驱动的配置参数(作为环境变量传递给插件容器):
* 必填
| 变量 | 默认值 | 描述 |
|---|---|---|
*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'。
从本地源代码构建新Docker镜像:
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=https://anvil.example.com 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 1073741824 --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
运行Sanity测试
这些测试是功能性的,将在后端创建和删除卷。
主机必须能够连接到HS_ENDPOINT。可在开发镜像中运行。使用https://github.com/kubernetes-csi/csi-test/tree/master/cmd/csi-sanity%E3%80%82
创建参数文件
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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务