客户端接口

CSI 协议

师成师成· 更新于 2026-09-28· 阅读 5 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Ozone 的 CSI 支持目前仍处于 alpha 阶段,存储桶只能通过第三方 S3 兼容的 Fuse 实现(例如 Goofys)进行挂载。基于 S3 的 Fuse 相比原生 Fuse 文件系统只能提供有限的性能。从长远来看,Ozone 可能会支持自定义的存储桶挂载方案,以提供更好的用户体验(基于 fuse、NFS 或其他方案)。在此之前,建议仅在你能接受上述限制且对用例进行了充分测试的情况下使用 CSI。

容器存储接口(Container Storage Interface,CSI)使存储供应商(SP)只需开发一次插件,即可在 Kubernetes 或 Yarn 等多种容器编排(CO)系统中使用。

有关 CSI 的更多信息,请参阅 CSI 规范。

CSI 定义了一个简单的 gRPC 接口,包含三个接口(Identity、Controller、Node)。它定义了容器编排器如何请求创建新的存储空间或挂载新创建的存储,但并未定义存储的具体挂载方式。

CSI

默认情况下,Ozone CSI 服务使用 S3 fuse 驱动(goofys)来挂载已创建的 Ozone 存储桶。其他挂载方式(例如专用 NFS 服务器或原生 Fuse 驱动)的实现正在进行中。

Ozone CSI 是 CSI 的一种实现,它使容器可以将 Ozone 用作存储卷。

快速开始

首先,我们需要一个带有 s3gateway 的 Ozone 集群,并且其 OM RPC 端口和 s3gateway 端口必须对 CSI Pod 可见,因为 CSIServer 需要访问 OM 来创建或删除存储桶,同时 CSIServer 还会通过 goofys 创建指向 s3g 的挂载点来发布卷。

如果你还没有在 Kubernetes 上运行 Ozone 集群,可以参考 Kubernetes 文档创建一个。使用 kubernetes/examples/ozone 中的资源,你可以在其中找到运行集群以及专用 Ozone CSI 守护进程所需的全部 Kubernetes 资源(参见 kubernetes/examples/ozone/csi)。

现在,执行以下命令创建与 CSI 相关的资源。

kubectl create -f /ozone/kubernetes/examples/ozone/csi

创建 pv-test 并访问结果

执行以下命令创建与 pv-test 相关的资源。

kubectl create -f /ozone/kubernetes/examples/ozone/pv-test

连接到 pod scm-0,并将一个键放入 /s3v/pvc* 存储桶中。

kubectl exec -it  scm-0  bash
[hadoop@scm-0 ~]$ ozone sh bucket list s3v
[ {
  "metadata" : { },
  "volumeName" : "s3v",
  "name" : "pvc-861e2d8b-2232-4cd1-b43c-c0c26697ab6b",
  "storageType" : "DISK",
  "versioning" : false,
  "creationTime" : "2020-06-11T08:19:47.469Z",
  "encryptionKeyName" : null
} ]
[hadoop@scm-0 ~]$ ozone sh key put /s3v/pvc-861e2d8b-2232-4cd1-b43c-c0c26697ab6b/A LICENSE.txt

现在,我们将 ozone-csi-test-webserver-7cbdc5d65c-h5mnn 的端口进行转发,以便通过 Web 浏览器查看 UI。

kubectl port-forward ozone-csi-test-webserver-7cbdc5d65c-h5mnn 8000:8000

最终,我们可以通过 http://localhost:8000/ 查看结果。

persistent-volume-test-web-ui

评论

登录后参与评论

正在加载评论…