vlambda博客
学习文章列表

k8s部署-45-k8s共享存储(上)

 

什么最重要了,当然是存储了,不管你存储的是文件还是数据,图片还是音频,都是非常重要的,那么我们通过什么方式来避免数据的单点故障呢?如何保证存储的可靠性呢?下面我们来看看。
k8s部署-45-k8s共享存储(上)

 PS:本篇为理论,下一篇为实操。


1、共享存储

共享存储是指两个或多个处理机共用一个主存储器的并行体系结构。每一个处理机都可以把信息存入主存储器,或从中取出信息。处理机之间的通信通过访问共享存储器来实现。


之前的存储方式,都是在启动的时候,通过volume的方式来挂载到物理机上的某个磁盘上。但是这样子是不是数据只存放在单个物理机上,别的节点无法获取到数据呢?当然了,我们也可以通过NFS的方式,共享指定目录,亦或者通过NAS的方式。都可以,毕竟条条大路通罗马嘛,虽然我们有很多种方式可以实现,那么既然k8s也提供了,不妨我们也来看一看。

 


2、流程

PV
首先我们会有一个PV,也就是PersistentVolume,在这里我们可以指定目录、IP、权限等内容。

k8s部署-45-k8s共享存储(上)

ReadWriteOnce表示只能有一个pod使用,如果我们要给多个POD的话,可以改成ReadWriteMany


PVC
然后我们还需要一个PVC,即PersistentVolumeClaim,这里我们可以指定的是容量大小以及相关权限;

k8s部署-45-k8s共享存储(上)


其实怎么理解呢?我们可以将PV理解成父亲,PVC是儿子,父亲分家产给儿子,儿子要多少家产要申明,那么问题来了,如果知道这个儿子是不是亲生的,那当然要做亲子鉴定了,在k8s中呢,就引入了一个绑定的概念,将PV和PVC进行绑定。

POD配置
最后我们该如何使用呢,是不是需要在pod上进行配置啊,配置如下:

k8s部署-45-k8s共享存储(上)


StorageClass
有没有可以自动管理PV的方式呢?k8s就考虑到了这一点,所以引入了一个StorageClass机制,会帮助我们自动创建PV,如下:

k8s部署-45-k8s共享存储(上)


当引入了StorageClass之后,我们的PVC是不是也会随之改变呢?会变成什么样子呢,如下:


每个PV和PVC都有StorageClass,且StorageClass并不需要实际存在。

流程总图
最后我们做个梳理,如下图,最下面的存储服务就是k8s中支持的存储方式,可以灵活选用;


一个POD可以使用多个PVC,一个PVC也可以给多个POD使用;
一个PVC只能绑定一个PV,一个PV只能绑定一种后端存储服务。