概念

          存儲管理跟計算管理是兩個不同的問題。理解每個存儲系統(tǒng)是一件復(fù)雜的事情,特別是對于普通用戶來說,有時并不需要關(guān)心各種存儲實現(xiàn),只希望能夠安全可靠地存儲數(shù)據(jù)。

          為了簡化對存儲調(diào)度,K8S對存儲的供應(yīng)和使用做了抽象,以API形式提供給管理員和用戶使用。要完成這 一任務(wù),引入了兩個新的API資源:Persistent
          Volume(持久卷,以下簡稱PV)和Persistent Volume Claim(持久卷申請,以下簡稱PVC)。


          PV是集群中的一塊網(wǎng)絡(luò)存儲,跟Node一樣,也是集群的資源。PV跟Volume(卷)類似,不過會有獨立于Pod的生命周期。由系統(tǒng)管理員配置創(chuàng)建的一個數(shù)據(jù)卷(即PV類型),它代表了某一類存儲插件實現(xiàn)。

          PVC是用戶的一個請求,跟Pod類似。Pod消費Node的資源,PVC消費PV的資源。Pod
          能夠申請?zhí)囟ǖ馁Y源(CPU和內(nèi)存);PVC能夠申請?zhí)囟ǖ某叽绾驮L問模式(例如可以加載一個讀寫,以及多個只讀實例),而無須感知后端的存儲實現(xiàn)。.

          PV類型

          PV類型使用插件的形式來實現(xiàn)。K8S現(xiàn)在支持以下插件:

            GCEPersistentDisk

            AWSElasticBlockStore

            AzureFile

            AzureDisk

            FC (FibreChannel)

            Flocker

            NFS

            iSCSI

            RBD (CephBlock Device)

            CephFS

            Cinder(OpenStack block storage)

            Glusterfs

            VsphereVolume

            QuobyteVolumes

            HostPath

            VMware Photon

            PortworxVolumes

            ScaleIOVolumes

          PV、PVC生命周期

          PV是集群的資源。PVC是對這一資源的請求,也是對資源的所有權(quán)的檢驗。PV和PVC 之間的互動遵循如下的生命周期。

          供應(yīng)

          集群管理員會創(chuàng)建一系列的PV。這些PV包含了為集群用戶提供的真實存儲資源??衫?K8S API來消費。

          綁定


          用戶創(chuàng)建一個包含了容量和訪問模式的PVC。Master會監(jiān)聽PVC的產(chǎn)生,并嘗試根據(jù)請求內(nèi)容查找匹配的PV,并把PV和PVC進行綁定。用戶能夠獲取滿足需要的資源,并且在使用過程中可能超出請求數(shù)量。


          如果找不到合適的卷,這一申請就會持續(xù)處于非綁定狀態(tài),一直到出現(xiàn)合適的PV。例如一個集群準(zhǔn)備了很多的50G大小的持久卷,(雖然總量足夠)也是無法響應(yīng)100G的申請的,除非把100G的PV加入集群。

          使用

          Pod把PVC作為卷來使用。集群會通過PVC查找綁定的PV,并Mount給Pod。對于支持多種訪問方式的卷,用戶在使用 PVC
          作為卷時,可以指定需要的訪問方式。

          一旦用戶擁有了一個已經(jīng)綁定的PVC,被綁定的PV就歸該用戶所有了。用戶的Pods能夠通過在Pod的卷中包含的PVC來訪問他們占有的PV。

          釋放


          當(dāng)用戶完成對卷的使用時,就可以利用API刪除PVC對象了,而且還可以重新申請。刪除PVC后,對應(yīng)的卷被視為“被釋放”,但這時還不能給其他的PVC使用。之前的PVC數(shù)據(jù)還保存在卷中,要根據(jù)策略來進行后續(xù)處理。

          回收


          PV的回收策略向集群闡述了在PVC釋放卷時,應(yīng)如何進行后續(xù)工作。目前可以采用三種策略:保留,回收或者刪除。保留策略允許重新申請這一資源。在PVC能夠支持的情況下,刪除策略會同時刪除卷以及AWS
          EBS/GCE PD或者Cinder卷中的存儲內(nèi)容。如果插件能夠支持,回收策略會執(zhí)行基礎(chǔ)的擦除操作(rm -rf
          /thevolume/*),這一卷就能被重新申請了。

          創(chuàng)建范例

          PV

          每個PV包含一個spec,用于描述該卷的規(guī)格和狀態(tài)。
          cat << EOF > pv-lykops-sfs-0.yaml apiVersion: v1 kind: PersistentVolume
          metadata: name: pv-lykops-sfs-0 labels: type: nfs app: pv version: v1 spec:
          capacity: storage: 1Gi accessModes: -ReadWriteMany
          persistentVolumeReclaimPolicy: Recycle nfs: path: /data server: 192.168.20.128
          readOnly: false EOF kubectl create -f pv-lykops-sfs-0.yaml

          Capacity(容量)

          一般來說,PV會指定存儲容量。這里需要使用PV的capcity屬性。

          目前存儲大小是唯一一個能夠被申請的指標(biāo)。

          Access Modes(訪問模式)


          只要資源提供者支持,持久卷能夠被用任何方式加載到主機上。每種存儲都會有不同的能力,每個PV的訪問模式也會被設(shè)置成為該卷所支持的特定模式。例如NFS能夠支持多個讀寫客戶端,但某個NFS
          PV可能會在服務(wù)器上以只讀方式使用。每個PV都有自己的一系列的訪問模式,這些訪問模式取決于PV的能力。

          訪問模式的可選范圍如下:

          ReadWriteOnce:該卷能夠以讀寫模式被加載到一個節(jié)點上。

          ReadOnlyMany:該卷能夠以只讀模式加載到多個節(jié)點上。

          ReadWriteMany:該卷能夠以讀寫模式被多個節(jié)點同時加載。

          在 CLI 下,訪問模式縮寫為:

          RWO:ReadWriteOnce

          ROX:ReadOnlyMany

          RWX:ReadWriteMany

          重要!一個卷不論支持多少種訪問模式,同時只能以一種訪問模式加載。例如一個
          GCEPersistentDisk既能支持ReadWriteOnce,也能支持ReadOnlyMany。

          Recycling Policy(回收策略)

          當(dāng)前的回收策略可選值包括:

          Retain-人工重新申請

          Recycle-基礎(chǔ)擦除(“rm-rf /thevolume/*”)

          Delete-相關(guān)的存儲資產(chǎn),例如AWSEBS或GCE PD卷一并刪除。

          目前,只有NFS和HostPath支持Recycle策略,AWSEBS、GCE PD支持Delete策略。

          階段(Phase)

          一個卷會處于如下階段之一:

          Available:可用資源,尚未被綁定到PVC上

          Bound:該卷已經(jīng)被綁定

          Released:PVC已經(jīng)被刪除,但該資源尚未被集群回收

          Failed:該卷的自動回收過程失敗。

          CLI 會顯示綁定到該 PV 的 PVC。

          PVC
          cat << EOF > pvc-lykops-sfs-0.yaml apiVersion: v1 kind: PersistentVolumeClaim
          metadata: name: pvc-lykops-sfs-0 labels: type: nfs app: pvc version: v1 spec:
          accessModes: -ReadWriteMany resources: requests: storage: 1Gi EOF kubectl
          create -f pvc-lykops-sfs-0.yaml

          訪問模式

          PVC使用跟PV一致的訪問模式。

          資源

          PVC跟Pod一樣可以請求特定數(shù)量的資源。在這里的請求內(nèi)容就是存儲(storage)。Resource Model 文中提到的內(nèi)容對 PV 和 PVC
          同樣適用。

          StatefulSet調(diào)用

          Pod能夠借助PVC來訪問存儲。PVC必須跟Pod
          處于同一個命名空間。集群找到Pod命名空間中的PVC,然后利用PVC獲取到PV。這個卷就會被加載到主機上,讓Pod使用。
          cat << EOF > lykops-sfs.yaml apiVersion: apps/v1beta1 kind: StatefulSet
          metadata: name: lykops-sfs labels: software: apache project: lykops app:
          lykops-sfs version: v1spec: serviceName: lykops-sfs template: metadata: labels:
          software: apache project: lykops app: lykops-sfs version: v1 name: test-sfs
          spec: containers: - name: lykops-sfs image: web:apache ports: - containerPort:
          80 name: apache volumeMounts: - name: pvc mountPath: /data/
          volumeClaimTemplates: -metadata: name: pvc spec: accessModes: - ReadWriteMany
          resources: requests: storage: 1Gi EOF kubectl create -f lykops-sfs.yaml


          PV、PVC、調(diào)用資源的創(chuàng)建注意事項

          使用限制

          PVC、PV不能使用在deployment、rc、rs等場景下

          命名規(guī)則

          如上面的例子:

          調(diào)用PVC的StatefulSet:StatefulSet名稱為test-sfs,卷名為pvc

          PV:pv-test-sfs-{0,1}

          PVC:pvc-test-sfs-{0,1}

          規(guī)則如下:

          PVC和PV的命名規(guī)則為:資源類型-StatefulSet名稱-副本數(shù)序號(從0開始)

          PV和PVC的yaml規(guī)劃

          除了命名規(guī)則外,還需要保證訪問accessModes、resources這兩個一樣

          按照以上規(guī)則創(chuàng)建后,可以看到PV和PVC能關(guān)聯(lián)起來

          本文轉(zhuǎn)自開源中國-kubernetes資源對象--持久化存儲Persistent Volume和Persistent Volume Claim
          <https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fmy.oschina.net%2Flykops%2Fblog%2F1616477>

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                亚洲搞逼视频 | 快点cao我要被cao烂了 | 在线成人国产天堂精品 | 台湾成人久久综合网 | 精品无码人妻一区二区欧美日韩 |