Kubernetes版本对接对象存储

文章目录

  • Kubernetes版本对接对象存储
    • 对象存储
    • 社区方案
      • 方案1:Object Storage API (COSI)
      • **[方案2:csi-s3](https://github.com/ctrox/csi-s3)**
        • Kubernetes 要求
          • MountFlags
    • 为什么要将S3 以文件存储的方式挂载到 Kubernetes 平台?
    • 什么是 S3FS ?
    • 后续
    • 参考链接

对象存储

想要通过创建 PersistentVolume(PV)/PersistentVolumeClaim(PVC),并为工作负载挂载数据卷的方式使用云对象存储 COS

对于对象存储,在k8s中不需要PV/PVC来做资源抽象,应用可以直接访问和使用,如果需要在k8s支持访问,就需要相应的csi插件,支持对象存储转成文件存储
例如: 几个大厂的方式
阿里:https://help.aliyun.com/document_detail/130911.html
腾讯:https://cloud.tencent.com/document/product/457/44232
华为:https://support.huaweicloud.com/intl/zh-cn/usermanual-cce/cce_01_0267.html

如果对接文件存储,可以使用使用S3fs可以把Bucket当成一个文件夹挂载到Linux系统内部,当成一个系统文件夹使用。

社区方案

方案1:Object Storage API (COSI)

目前开发中,不成熟

官方文档

https://container-object-storage-interface.github.io/docs/

https://container-object-storage-interface.github.io/

https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1979-object-storage-support#provisionergetinfo

Kubernetes v1.23 正式发布,有哪些增强?

Kubernetes 现在对文件和块存储都有了较好的扩展支持 (CSI),但是这些并不能很好的支持对象存储,原因如下:

  • oss 以桶 (bucket) 来组织分配存储单元而不是文件系统挂载或是块设备
  • oss 服务的访问是通过网络调用而不是本地的 POSIX 调用
  • oss 不试用 csi 定义的 Attach/Detach 逻辑 (无需挂载/卸载)

COSI 是关于如何为容器化的工作负载 (Pod) 提供对象存储服务 (oss) 的标准协议。与 csi 和 cni 类似,Kubernetes 旨在通过定义一些标准的接口与第三方 oss 服务提供方解耦。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JJJmj72m-1651055590510)(https://cdn.jsdelivr.net/gh/Fly0905/note-picture@main/img/202204252104317.jpeg)]

方案2:csi-s3

可以使用,但需要多测试

官方文档

https://github.com/CTrox/csi-s3

https://github.com/majst01/csi-driver-s3

使用s3(minio)为kubernetes提供pv存储

Kubernetes 要求

  • Kubernetes 1.13+(CSI v1.0.0 兼容性)
  • Kubernetes 必须允许特权容器
  • Docker 守护进程必须允许共享挂载(systemd 标志MountFlags=shared
  • 是非常实验性的,还未在任何生产环境中使用。根据使用的挂载程序和 S3 存储后端,可能会发生意外的数据丢失。
MountFlags

在 18.09 之前的 Docker 版本中,containerd 由 Docker 引擎守护进程管理。

在 Docker Engine 18.09 中,containerd 由 systemd 管理。由于 containerd 由 systemd 管理,因此任何docker.service更改挂载设置的 systemd 配置的自定义配置(例如,MountFlags=slave)都会破坏 Docker Engine 守护进程和 containerd 之间的交互,并且您将无法启动容器。

运行以下命令以获取 的MountFlags属性的当前值docker.service

$ sudo systemctl show --property=MountFlags docker.service
MountFlags=

如果此命令为 打印非空值,请更新您的配置MountFlags,然后重新启动 docker 服务。

为什么要将S3 以文件存储的方式挂载到 Kubernetes 平台?

对于原来使用本地目录访问数据的应用程序,比如使用本地磁盘或网络共享盘保存数据的应用系统,如果用户希望把数据放到S3上,则需要修改数据的访问方式,比如修改为使用SDK 或CLI访问S3中存储的数据。

同时实现kubernetes集群是很多用户的需求,无论是使用托管服务还是自建kubernetes集群,存储都是kubernetes集群搭建的重点。并且docker的部署方式也让客户程序减少了对于底层环境的依赖。为了让用户原来的应用系统能在不做修改的情况下直接使用S3服务,需要把S3存储桶作为目录挂载到用户kubernetes集群中的worker节点上

利用S3fs将S3存储桶在kubernetes平台上以sidecar方式挂载到kubernetes集群的worker实例上的pod中,挂载后需要读写此存储桶的pod都可以对此桶进行读写,以实现共享存储功能。

什么是 S3FS ?

S3fs是基于FUSE的文件系统,允许Linux和Mac Os X 挂载S3的存储桶在本地文件系统,S3fs能够保持对象原来的格式,S3FS是POSIX的大子集,包括读/写文件、目录、符号链接、模式、uid/gid和扩展属性,AmazonS3、Google云存储和其他基于S3的对象存储兼容。关于S3fs的详细介绍,请参见:https://github.com/s3fs-fuse/s3fs-fuse

后续

  1. 验证特权容器,升级了多少特权

参考链接

  1. 使用s3(minio)为kubernetes提供pv存储
  2. 基于openshift+华为对象存储的CSI开发
  3. 利用 S3FS 将 S3 作为共享存储挂载到 Kubernetes Pod
  4. 使用S3fs在Linux实例上挂载Bucket
  5. S3FS:基于对象存储的文件系统
  6. https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core
  7. https://github.com/FLY-Open-K8s/csi-driver-s3.git

Kubernetes版本对接对象存储几种方案相关推荐

  1. 免费版本oss对象存储。如何部署一个免费的minio对象存储空间?

    关注小博主,编程干货及时送达! 进入正题!如何实现Minio分布式文件存储?想必大家都用过阿里或者腾讯等之类的oss对象存储.如果你的马内够多的话用付费的确实方便很多,毕竟人家平台已经给你部署好了.但 ...

  2. 【转】HTML5 本地存储五种方案

    1.LocalStorage LocalStorage就是Key-Value的简单键值对存储结构,Web Storage除了localStorage的持久性存储外,还 有针对本次回话的sessionS ...

  3. Flink + Iceberg + 对象存储,构建数据湖方案

    简介:上海站 Flink Meetup 分享内容,如何基于Flink.对象存储.Iceberg 来构建数据湖生态. 本文整理自 Dell 科技集团高级软件研发经理孙伟在 4 月 17 日 上海站 Fl ...

  4. 对象存储与块存储、文件存储等对比

    看到 一篇文档, 讲 对象存储, 好奇,搜索文章,摘抄,学习记录 ! 背景: 传统存储在面对海量非结构化数据时,在存储.分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结构化内容设 ...

  5. 高性能对象存储MinIO学习

    MinIO 是GlusterFS创始人之一Anand Babu Periasamy发布的开源项目,基于Apache V2 license 100% 开放源代码.MinIO采用Golang实现,客户端支 ...

  6. 物联网应用-分布式对象储存工具-MinIO 对象存储win部署及使用

    一. MinIO 简介 MinIO 是一款轻量级.高性能.分布式的开源对象存储系统,可以100%的运行在标准硬件,即X86等低成本机器也能够很好的运行MinIO.国内的阿里巴巴.腾讯.百度.中国联通. ...

  7. 如何从零起步搭建一个分布式对象存储的架构

    早在几年前,云存储还只是存在于业界大佬们口中的一个概念,其应用场景仅供大公司使用.突飞猛进的网络技术似乎在一瞬间就把这个概念普及到千家万户,现在云存储已经是大家司空见惯的一个网络服务了.比如大家用的百 ...

  8. 千里眼摄像头支持对象存储吗_视频监控对象存储

    一. 中东市场,国际安防厂家活跃 Milestone.Genetec.Thales.Honeywell.Bosch.Hikivision.Dahua , Tyco, Samsung, AXIS,Pec ...

  9. java中sofa并发访问,云上的日子:用块存储、文件存储还是对象存储?

    当今最流行的存储类型是哪种? 答案毫无疑问是:块存储.文件存储还有对象存储!作为伴随着云计算兴起的存储类型,这三种存储绝对是这个时代的存储明星,用C位出道来形容再合适不过. 那么,在云上的日子,究竟该 ...

  10. openstack victoria 对接华为存储OceanStor 5110 v5(Kunpeng)

    1. 环境 本文主要侧重于victoria 版本对接华为存储OceanStor 5110 v5(Kunpeng)的步骤记录和问题记录,云平台的部署等相关问题本文不做介绍 HOST OS:Ubuntu ...

最新文章

  1. Java实现从Html文本中提取纯文本
  2. 招商银行的软件BUG
  3. Docker端口映射实现
  4. 解决PHP生成校验码时“图像因其本身有错无法显示”的错误
  5. Java Web学习总结(4)——HttpServletResponse对象入门
  6. visualmap超过范围改变颜色_换种颜色,换种心情——车身改色
  7. ceph分布式存储简介
  8. cv2中函数名的规则
  9. 强制卸载kernel
  10. 算法:找出相同字母组成的字符串Group Anagrams
  11. 深度学习目标检测模型的评价标准-AP与mAP
  12. FastAdmin 文件图片上传失败File size error
  13. el-upload上传图片,限制上传数量,超过最大数量则不展示上传组件,可点击删除
  14. R语言 数据集处理与搭建回归模型
  15. JAVA桌面精灵演示版
  16. MQ--1( Message queuing)RabbitMQ
  17. Python程序开发
  18. Fallback函数
  19. error: variable '__this_module' has initializer but incomplete type错误解决
  20. 解决:flex布局之 flex-wrap:wrap 自动换行属性,导致上下两行div中间有空行

热门文章

  1. 固态和机械硬盘组raid_SSD+机械硬盘Raid 0成最佳搭配?_浦科特 PX-M5Pro_固态硬盘评测-中关村在线...
  2. 两无线路由器连接方法
  3. 华为畅享二十Android是,华为畅享20 pro开箱小晒
  4. vue-$nextTick-等待页面渲染完毕的回调
  5. 计算机内存条能装几个,电脑能装几个内存条_一般电脑插几个内存条
  6. 宠物收养所(c++)
  7. Error: [vuex] do not mutate vuex store state outside mutation handlers.报错的解决方法
  8. 长治南垂驾校科目二经验总结
  9. 科目二 领线30cm的方法 LTS
  10. 「镁客·请讲」小库科技何宛余:用人工智能去更高效的协助建筑设计工作