kubernetes | k8s持久化存储概述

Posted Tammyhaha

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes | k8s持久化存储概述相关的知识,希望对你有一定的参考价值。

一、 k8s持久化存储概述

 

1. k8s架构

  k8s的master在真正的工业上产中一般是多个,而不是一个。但一般是奇数个,比如说3或者5个。在k8s上面如果想要做应用的持久化,肯定需要有存储的。而且这个存储,必须要是可以share的。为什么呢?因为pod运行在不同的节点上。我们希望在pod发生变化的时候,在某些场景下满足存储可以“跟着”pod“走”到不同的结点上去。比如说statefulset,第一次起在一号结点上,如果对应的是专属于node1的stateful1这个卷,那么当pod跑到二号结点上,此时它的卷又应该跑到专属于node2的statefule2这个卷,那么久无法保证之前在node1上面的数据的可用性。因此,卷设计成可以share的,这样来保证在任何一个pod上都可以去使用。

  存储卷可以有很多种存储类型,比如说ceph, NFS, Block storage.

2. PV和PVC

  (1)Persistent Volume(PV)

  PV是集群中的一块网络存储空间(它是集群概念。可以是一块盘,也可以是NFS的目录,分配给不同的结点去使用)

  PV和kubernetes的node一样,同属于集群资源层的概念(被整个系统所占有,不分namespace)

  PV和kubernetes Volume(k8s最基本的单位是pod,一个pod中可以有多个容器,每个容器都可以有Volume.它指的是:一个pod内不同的容器共享的卷。这里的卷和pod的生命周期是相同的)类似,不同之处为PV的生命周期和使用PV的pod的生命周期相互独立

  (2)Persistent Volume Claim(PVC)

  PVC是用户对存储资源的请求(是消费者的概念)

  PVC和Kubernetes Pod一样,同属资源消费者的概念,即Pod请求CPU和内存资源,PVC请求存储空间和访问权限

  

  总结:pod和pvc两者合并到一起是一个完整的应用,它们都属于是消费者,是属于具体的命名空间的。而pv是属于集群的,pv和pvc成对出现。

3. PV的概念

(1)pv可以设置三种回收策略:保留(Retain)、回收(recycle)和删除(Delete)

  - 保留策略: 允许人工处理保留的数据

  - 删除策略: 将删除pv和外部关联的存储资源,需要插件支持

  - 回首策略: 将执行清楚操作,之后可以被新的pvc使用,需要插件支持。新的系统已经被retain和delete替代

(2)pv的状态

  - Available 资源尚未被claim使用

  - Bound 已经绑定到某个PVC上

    - Release 对应的pvc已经被删除,但是资源还没有被集群回收

      - Failed 自动回收失效

 (3)访问权限

  - ReadWriteOnce 被单个节点mount为读写rw模式

  - ReadOnlyMany 被多个节点mount为只读ro模式

  - ReadWriteMany 被多个节点mount为读写rw模式

 

 

 

以上是关于kubernetes | k8s持久化存储概述的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes第六篇:k8s持久化存储(亲测可用)

Kubernetes第六篇:k8s持久化存储(亲测可用)

k8s 实践经验存储卷

K8S专栏Kubernetes数据持久化管理

k8s etcd 与持久化存储

云原生之kubernetes实战kubernetes集群下的存储持久化