【问题标题】:Kubernetes Volume mount object storageKubernetes 卷挂载对象存储
【发布时间】:2015-12-02 00:58:28
【问题描述】:

这里列出了 Kubernetes 卷支持 https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/user-guide/volumes.md ,但是它目前不能满足我的需求。

我需要支持对象存储,包括 Openstack Swift API 和 S3 兼容 API。 (k8s 确实直接支持 AWS,但我不能使用它连接到使用 s3 API 的不同私有对象存储)。

有没有办法扩展功能以支持这两个对象存储 API?我需要能够从对象存储挂载到 pod。

编辑:现在我不必支持 swift API,只需支持 S3 API。请记住,它实际上并不是 AWS 存储,它只是使用了与 S3 兼容的 API

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    我一直在考虑如何将 swift 作为音量插件启用。与对象存储相比,用于云块存储(EBS、cinder、持久磁盘)的卷插件非常简单。主要区别是块存储磁盘可以配置并附加到运行 kubelet 的 vm 上,可以挂载到容器中。之后,它将像本地文件系统一样运行,不需要任何额外的照顾。对象存储的只读挂载也相当简单,功能类似于gitRepo

    另一方面,写回对象存储变得棘手。 想到2种方法:

    1. 某种用户空间文件系统插件,将映射到远程系统。
    2. 使用 side car 容器,其唯一目的是将特定目录同步到对象存储系统。

    显然,这两种方法在性能方面都会非常缓慢,这可能与网络带宽成正比。

    【讨论】:

    • 使用存储有 2 个用例。第一个是只读的(读取大量原始数据),第二个是读写结果(应该小得多)。我目前找不到任何关于实现卷插件的教程或适当的文档。您能否指出我至少开始的正确方向?
    • 我不知道任何实现卷插件的教程。如何实现这个github.com/kubernetes/kubernetes/blob/master/pkg/volume/…。可能正在查看现有的音量插件会给你一个想法。这是 aws plugin
    【解决方案2】:

    对象存储更接近 Redis/Mongo/Elastic 等其他工具,因此它不是 K8s 的核心部分。

    它们被打包为 Kubernetes helm 包。例如Minio 是一个与 S3 兼容的对象存储服务器。您可以使用 helm install stable/minio 在您的 Kubernetes 集群上安装它

    【讨论】:

      猜你喜欢
      • 2020-08-07
      • 2019-08-24
      • 2021-10-26
      • 2019-10-09
      • 2017-07-21
      • 2018-08-25
      • 2023-03-18
      • 2018-11-21
      • 2016-04-18
      相关资源
      最近更新 更多