天天看點

kubernetes | k8s持久化存儲概述

一、 k8s持久化存儲概述

1. k8s架構

kubernetes | 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持久化存儲概述