周志明的软件架构课
周志明
博士,远光软件研究院院长,《深入理解 Java 虚拟机》《凤凰架构》等书作者
54203 人已学习
免费领取
课程目录
已完结/共 74 讲
架构师的视角 (24讲)
周志明的软件架构课
15
15
1.0x
00:00/00:00
登录|注册

56 | Kubernetes存储扩展架构:一个真实的存储系统如何接入或移除新存储设备?

你好,我是周志明。
我们知道,容器存储具有很强的多样性,如何对接后端实际的存储系统,并且完全发挥出它所有的性能与功能,并不是 Kubernetes 团队所擅长的工作,这件事情只有存储提供商才能做到最好。所以,我们其实可以理解容器编排系统为什么会有很强烈的意愿,想把存储功能独立到外部去实现。
上节课我已经反复提到过多次 In-Tree、Out-of-Tree 插件,那么今天这节课,我就会以存储插件的接口与实现为中心,带你去解析 Kubernetes 的容器存储生态。

Kubernetes 存储架构

在正式开始讲解 Kubernetes 的 In-Tree、Out-of-Tree 存储插件前,我们有必要先去了解一点 Kubernetes 存储架构的知识。了解一个真实的存储系统是如何接入到新创建的 Pod 中,成为可以读写访问的 Volume,以及当 Pod 被销毁时,Volume 如何被回收,回归到存储系统之中的。
那么,对于刚刚所说的这几点,Kubernetes 其实是参考了传统操作系统接入或移除新存储设备的做法,把接入或移除外部存储这件事情,分解为了以下三个操作:
决定应准备(Provision)何种存储:Provision 可类比为给操作系统扩容而购买了新的存储设备。这步确定了接入存储的来源、容量、性能以及其他技术参数,它的逆操作是移除(Delete)存储。
将准备好的存储附加(Attach)到系统中:Attach 可类比为将存储设备接入操作系统,此时尽管设备还不能使用,但你已经可以用操作系统的fdisk -l命令查看到设备。这步确定了存储的设备名称、驱动方式等面向系统侧的信息,它的逆操作是分离(Detach)存储设备。
将附加好的存储挂载(Mount)到系统中:Mount 可类比为将设备挂载到系统的指定位置,也就是操作系统中mount命令的作用。这步确定了存储的访问目录、文件系统格式等面向应用侧的信息,它的逆操作是卸载(Unmount)存储设备。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kubernetes存储扩展架构深入剖析 Kubernetes存储扩展架构涵盖了容器存储的多样性,以及如何将实际存储系统接入到Kubernetes中。文章介绍了Kubernetes存储架构的基本知识,包括存储设备的接入和移除过程,以及Kubernetes中的PV控制器、AD控制器和Volume管理器的作用。通过Provision、Attach、Mount等操作,存储插件实现了存储设备的管理和生命周期控制。此外,文章还探讨了存储插件的接口与实现,以及Kubernetes的容器存储生态。整体而言,本文深入解析了Kubernetes存储扩展架构,为读者提供了对容器存储生态的全面了解。 文章还介绍了Kubernetes存储扩展机制中的FlexVolume和CSI,分析了它们的特点和优劣势。FlexVolume是Kubernetes早期版本提供的存储扩展机制,虽然简单易用,但在功能上存在一些不足之处,如不支持Dynamic Provisioning、部署维护繁琐等。相比之下,CSI规范更加完善,提供了丰富的存储扩展功能,并且易于安装和维护。此外,文章还探讨了Kubernetes中存储驱动的迁移工作,从In-Tree到Out-of-Tree的变化,以及对旧功能的兼容性设计。 总的来说,本文通过深入剖析Kubernetes存储扩展架构和机制,为读者呈现了Kubernetes中容器存储的多样性和发展趋势,对于理解和应用Kubernetes存储扩展技术具有重要参考价值。

该试读文章来自《周志明的软件架构课》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • neohope
    存储小文件:用过本地存储、SSD、SAN、NAS、SFTP、Ceph【对象存储】,云存储【云盘、对象存储】 存储大文件:用过SAN、NAS、Ceph【块存储】、HDFS 存储XML用过existdb、Oracle XML DB 存储JSON用过mongodb、es 备份数据,用过磁带和蓝光盘 试过IPFS,但并没有实际投入使用 从底层介质来看:可以分为SSD、磁盘、磁盘阵列、磁带、光盘等 块存储,相当于划分了一块存储空间或一块逻辑盘,给了操作系统 文件存储,相当于操作系统在磁盘上创建了文件系统,可以作为本地磁盘使用,加上网络访问功能,可以封装成为NAS、SFTP等 HDFS,可以看作分布式的文件存储 对象存储,可以看作分布式的NAS IPFS,可以看作把一个BT网络,封装成了一个NAS
    2021-05-26
    9
  • Hello World
    曾带领团队实现过基于Posix接口(其对接分布式存储后端)之上提供NAS(NFS、SMB、FTP)服务。 主要差异在于接口形态及使用场景的不同, 块存储提供block接口,看起来就是一块大硬盘,上层没有文件系统,更倾向于高IOPS,如数据库; 文件系统提供目录的访问接口,场景较广(视频、媒资等默认是按照文件存放的都适用),存储容量较大(相对于块存储每GB更便宜)。 对象存储提供KV接口,一般是基于HTTP或AWS S3接口,存放小文件(如:图片)居多。
    2021-05-06
    4
  • zhanyd
    我网上找到的解释: 块存储、文件存储、对象存储这三者的本质差别是使用数据的“用户”不同:块存储的用户是可以读写块设备的软件系统,例如传统的文件系统、数据库;文件存储的用户是自然人;对象存储的用户则是其它计算机软件。
    2021-04-03
    2
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部