今天要讲到云原生技术Rook,涉及到云原生中非常重要的一个点,就是存储。
云原生是分布式服务架构,自然对它的存储也有自己的要求。在K8S中,我们使用PV以及PVC来管理与申请存储,但前提是你要有可用的存储媒质。
如果使用的类似Amazon的云服务,自然可以使用Amazon提供的诸如object或file云存储等,这些存储本身就是分布式并支持K8S存储,但如果使用的是私有云等非公有云服务,那搭建一个自己的私有云存储就非常有必要了。
而ceph则是一个最有名的私有云存储解决方案,而进一步,今天要讲的Rook是基于ceph实现的快速简易支持K8S中使用ceph的存储管理解决方案。
存储的发展
我们都会使用计算机,计算机上一定会有硬盘这个设备,当然类型可能是以前的HDD,更有可能是如今更普遍的速度更快的SDD硬盘。但我们个人电脑上使用的硬盘,都具有这些特性:
- • 硬盘都是本地的,意味着只能被本计算机访问与使用(当然可以共享给别人,这是另一个维度的事)
- • 硬盘都是单点的,不具备高可用,容错等特性。比如硬盘出现故障后,数据就丢失了,找不回来了。
在计算机发展的早期,服务是部署在单个服务器上,服务器自带CPU,内存及硬盘。就算是早期的服务器的硬盘当然不会是我们个人计算机这种这么不可靠的,服务器级别的硬盘都会使用磁盘阵列技术,也就是几块硬盘通过硬盘阵列组成一个虚拟的硬盘,提供使用。
而磁盘阵列支持容错等一些特性,也就是当其中一块硬盘损坏后,不影响数据的使用,数据也不会丢失。比较流行的磁盘阵列技术包括raid 2,raid 5,raid 10等。这些技术都提供了一定的高可用及容错能力甚至是数据备份等。
只是显而易见,到了云原生时候,这种存储模式肯定是不行的了。于是就引出了一个问题:
分布式存储怎么实现才最可靠
分布式服务中,服务是不可预测的,包括服务的究竟会在哪,IP是多少,服务有多少个,都是难以预测的。所以,分布式存储天然要做到:
- • 存储支持提供远程访问的能力,而非本地。这样任意服务可以远程访问到这些存储
- • 支持性能与高可用两个维度的考量,也就是要尽量照顾性能(存储读写速度)的前提下,做到容错,高可用,备份等高级特性
- • 访问这些远程磁盘与过往访问本地磁盘,应该不会存在任何使用上的差别,是完全一致的。
因此,自然就会涌现出一堆分布式存储解决方案,比如ceph,NFS等解决方案。
今天我要说的就是ceph,因为Rook是基于它之上再封装的能力。过往的版本Rook曾经也支持诸如NFS,但最新版本已经移除对其它分布存储的支持,只支持ceph.
什么是ceph
ceph是一个开源的分布式存储解决方案。它是一个存储抽象层,它将后面的存储媒介进行抽象与封装,提供一套统一的API给远程服务使用。
ceph是当前分布式存储中最流行的解决方案,也是K8S私有云中存储的最流行的解决方案。
ceph有以下优势:
- • 它是开源免费并且极为可靠的解决方案,是你搭建私有云存储的不二选择
- • 它是分布式存储解决方案,对磁盘媒质进行抽象,提供简单易用的API以供使用
- • 它支持File(文件),Object(对象)以及Block(块存储)三种存储方式。意味着仅使用ceph一个解决方案,可以支持三种不同的存储。
- • 它易于扩展,支持扩展磁盘。可以随时动态添加新的磁盘容量。
- • 它是可靠的分布式存储,保证数据的高用性,磁盘的损坏等不影响数据的选择及安全。
- • ceph的接口,兼容amazon云存储的接口。也就是你可以使用几乎一样的API,同时支持ceph以及amazon云存储。
如果再简而言之的话,就是你可以使用Ceph搭建一个类似Amazon提供的云存储能力,包括File,Object以及Block都支持,是不是非常心动?
所以,如果你要搭建一个K8S的私有云,在存储这个方面,使用ceph是当前性价比最好的选择。
什么是Rook
ceph是一个分布式存储解决方案,这意味着它并不只是可以应用K8S,包括微服务,OpenStack以及K8S等环境中,都可以使用ceph。
那也就带来另一个问题,因为它并不是单纯为支持K8S而发展的技术,也就意味着它对K8S的支持可能并没有那么简单方便。并且K8S也有一定的复杂度,想把ceph整进K8S,并不是一个简单的事。
这种背景下,Rook就应用而生了。它的目标很简单:基于ceph技术之上,为K8S提供一个云存储简单易于管理的云存储解决方案。
也就是Rook本身并未提供任何云存储解决方案,它更多的是一个适配层,它封装了ceph,它只支持K8S环境,让你在K8S中能更简单易行的使用ceph。
所以,Rook自己在描述自己是,使用的是cloud-native storage orchestrator这样的词语。orchestrator在计算机英语中,你可以把它理解为适配器。
Rook其实并不只是支持Ceph,它其实还支持nfs,cassandra等云存储。但现在Rook已经将对nfs以及cassandra的标记为移除,意味着Ceph是它当前唯一仍然在支持的方案。
意味着,ceph是Rook当前唯一仍在支持的分布式存储解决方案。
如何使用
所以,现在你应该非常清楚,Rook只是一个云存储适配器,在考虑如何选择是,我个人的建议是:
- • 除非有特别的原因,应当使用Rook ceph的适配方案,nfs以及cassandra已经不再被支持了
- • Rook是仅为K8S而生的,意味着如果不是K8S,而只是需要一个分布式解决方案,那ceph是你最好的选择
- • 记住,以上都是适合私有云,在公有云环境中,使用云服务的云存储应该是更好的选择。当然,这不是说不能在公有云环境中使用ceph,只是这明显属于重复制造轮子,没有特别的原因,这种价值不高。
现在,你应该知道什么的Rook了吧,它只是一个云存储适配器而已。可能在Rook之下,你更需要学习与关注ceph这个分布式存储解决方案。