今天要讲到云原生技术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是一个开源的分布式存储解决方案。它是一个存储抽象层,它将后面的存储媒介进行抽象与封装,提供一套统一的API给远程服务使用。
ceph是当前分布式存储中最流行的解决方案,也是K8S私有云中存储的最流行的解决方案。
ceph有以下优势:
如果再简而言之的话,就是你可以使用Ceph搭建一个类似Amazon提供的云存储能力,包括File,Object以及Block都支持,是不是非常心动?
所以,如果你要搭建一个K8S的私有云,在存储这个方面,使用ceph是当前性价比最好的选择。
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了吧,它只是一个云存储适配器而已。可能在Rook之下,你更需要学习与关注ceph这个分布式存储解决方案。