欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

kubernetes數(shù)據(jù)持久化PV?PVC深入分析詳解

 更新時(shí)間:2022年11月28日 16:39:38   作者:梨花海棠  
這篇文章主要為大家介紹了kubernetes數(shù)據(jù)持久化PV?PVC分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1. 什么是PV,PVC?

1.1 什么是PV

官方文檔地址: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/

PresistentVolume(PV)是指集群管理員配置提供的某存儲(chǔ)系統(tǒng)上的一段存儲(chǔ)空間,它是對(duì)底層共享存儲(chǔ)的抽象,將共享存儲(chǔ)作為一種可由用戶申請(qǐng)使用的資源,實(shí)現(xiàn)"存儲(chǔ)消費(fèi)"機(jī)制,通過(guò)存儲(chǔ)插件,PV支持使用多種網(wǎng)絡(luò)存儲(chǔ)等多種后端存儲(chǔ)系統(tǒng),例如,NFS、CephFS、RBD。PV是集群級(jí)別的資源,不屬于任何名稱空間,用戶對(duì)PV資源的使用需要通過(guò)PersistentVolumeClaim(PVC)提供的使用申請(qǐng)來(lái)完成綁定,PVC是PV資源的消費(fèi)者,它向PV申請(qǐng)?zhí)囟ù笮〉目臻g及訪問模式(rw或ro)從而創(chuàng)建出PVC存儲(chǔ)卷。然后再由Pod資源通過(guò)PersistentVolumeClaim存儲(chǔ)卷關(guān)聯(lián)使用。

1.2 什么是PVC?

PersistentVolumeClaim,PVC是存儲(chǔ)卷類型的資源,它通過(guò)申請(qǐng)占用某個(gè)PersistentVolume而創(chuàng)建,它與PV是一對(duì)一的關(guān)系,用戶無(wú)須關(guān)心其底層實(shí)現(xiàn)細(xì)節(jié),申請(qǐng)時(shí),用戶只需要指定目標(biāo)空間的大小,訪問模式,PV標(biāo)簽選擇器和StorageClass等相關(guān)信息即可。

2. PV資源實(shí)踐

2.1 PV配置字段詳解

PresistentVolume Spec支持如下幾個(gè)通用字段,用于定義PV的容量,訪問模式和回收策。

1.Capacity: PV的容量

2.volumeMode: 卷類型,用于指定此卷可被用作文件系統(tǒng)還是裸格式的塊設(shè)備,默認(rèn)為Filesystem。

3.accessMode: PV的訪問模式參考官方

  • 1.ReadWriteOnce: 僅可被單個(gè)節(jié)點(diǎn)讀寫掛載;命令行中簡(jiǎn)寫RWO。
  • 2.ReadOnlyMany: 僅可被多個(gè)節(jié)點(diǎn)同時(shí)只讀掛在;命令行簡(jiǎn)寫ROX。
  • 3.ReadyWriteMany: 可被多個(gè)節(jié)點(diǎn)同時(shí)讀寫掛載;命令行中簡(jiǎn)寫RWX。

4.persistentVolumeReclaimPolicy: PV空間的處理機(jī)制,可用類型為Retain(默認(rèn))、Recycle或Delete。

  • 1.Retain: 保持不動(dòng),由管理員手動(dòng)回收。
  • 2.Recycle: 空間回收,即刪除存儲(chǔ)卷下的所有文件(包括子目錄和隱藏文件rm -rf /thevolume/*),目前僅NFS和hostpath支持此功能。
  • 3.Delete: 刪除存儲(chǔ)卷,諸如 AWS EBS、GCE PD、Azure Disk 或 OpenStack Cinder 卷這類關(guān)聯(lián)存儲(chǔ)資產(chǎn)也被刪除。

5.storageClassName: 當(dāng)前PV所屬的StorageClass的名稱,默認(rèn)為空,即不屬于任何StorageClass。

6.mountOptions: 掛載選項(xiàng)組成的列表,如ro,soft和hard等。

2.2 HostPath PV示例

[root@kn-server-master01-13 pv]# cat hostpath-pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-volume-001    
spec: 
  storageClassName: "host-storage"   資源類型的標(biāo)識(shí)
  persistentVolumeReclaimPolicy: "Retain"  回收策略默認(rèn)為Retain
  capacity:    定義空間
    storage: 1Gi  定義空間大小
  accessModes:    訪問模式
    - ReadWriteOnce  訪問模式為僅被單個(gè)節(jié)點(diǎn)讀寫掛載,單路讀寫
  hostPath:     臨時(shí)存儲(chǔ)在哪個(gè)地方
    path: "/mnt/data"
[root@kn-server-master01-13 pv]# kubectl get pv
NAME            CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pv-volume-001   1Gi        RWO            Retain           Available           host-storage            4m36s

2.3 NFS PV示例

[root@kn-server-master01-13 pv]# cat nfs-pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
  labels:     標(biāo)簽
    release: nfs-redis
spec:
  storageClassName: "nfs-storage"  資源類型表示
  persistentVolumeReclaimPolicy: "Recycle"  回收策略為Recycle相當(dāng)rm -rf /
  capacity: 
    storage: 0.5Gi
  accessModes:
  - ReadWriteMany
  nfs: 
    server: 10.0.0.15
    path: /data/redis
[root@kn-server-master01-13 pv]# kubectl get pv
NAME            CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM             STORAGECLASS   REASON   AGE
nfs-pv          512Mi      RWX            Recycle          Available                     nfs-storage             62m
pv-volume-001   1Gi        RWO            Retain           Bound       default/001-pvc   host-storage            160m

3. PVC資源實(shí)踐

3.1 PVC配置清單詳解

PersistentVolumeClaim,PVC是存儲(chǔ)卷類型的資源,它通過(guò)申請(qǐng)占用某個(gè)PersistentVolume而創(chuàng)建,它與PV是一對(duì)一的關(guān)系,用戶無(wú)須關(guān)心其底層實(shí)現(xiàn)細(xì)節(jié), 申請(qǐng)時(shí),用戶只需要指定目標(biāo)空間的大小,訪問模式,PV標(biāo)簽選擇器和StorageClass等相關(guān)信息即可。

PVC的Spec字段可嵌套字段如下,

  • accessMode: 當(dāng)前PVC的訪問模式,其可用模式與PV相同。
  • resource當(dāng)前PVC存儲(chǔ)卷需要占用的資源的最大和最小值。
  • selector綁定時(shí)對(duì)PV應(yīng)用的標(biāo)簽選擇器,matchlabels或者匹配表達(dá)式matchEx-pressions用于挑選要綁定的PV,如果同時(shí)指定來(lái)兩種挑選機(jī)制,則必須同時(shí)滿足兩種選擇機(jī)制的PV才能被選出。
  • storageClassName: 所依賴的存儲(chǔ)卷的名稱。
  • volumeName: 用于直接制定要綁定的PV的卷名。

3.2 hostPath-PVC示例

[root@kn-server-master01-13 pv]# cat hostpath-pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: 001-pvc
spec:
  storageClassName: "host-storage"  和PV的storageclassname須一致,否則無(wú)法識(shí)別。
  accessModes:
    - ReadWriteOnce
  resources:     pvc的資源限定僅指其空間大小。
    requests:
      storage: 0.9Gi  大小為0.9Gi;
[root@kn-server-master01-13 pv]#  kubectl apply -f hostpath-pvc.yaml 
Available: 可用狀態(tài)的自由資源,尚未被綁定PVC。
Bound: 已經(jīng)綁定至某個(gè)PVC。
Released: 綁定的PVC已經(jīng)被刪除,但資源尚被集群回收。
Failed: 因自動(dòng)回收資源失敗而處于的故障狀態(tài)。
[root@kn-server-master01-13 pv]# kubectl get pv pv-volume-001
NAME            CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
pv-volume-001   1Gi        RWO            Retain           Bound    default/001-pvc   host-storage            33m
[root@kn-server-master01-13 pv]# kubectl describe pv pv-volume-001
Name:            pv-volume-001
Labels:          <none>
Annotations:     pv.kubernetes.io/bound-by-controller: yes
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    host-storage
Status:          Bound
Claim:           default/001-pvc
Reclaim Policy:  Retain
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        1Gi
Node Affinity:   <none>
Message:         
Source:
    Type:          HostPath (bare host directory volume)
    Path:          /mnt/data
    HostPathType:  
Events:            <none>
[root@kn-server-master01-13 pv]# kubectl describe pvc 001-pvc 
Name:          001-pvc
Namespace:     default
StorageClass:  host-storage
Status:        Bound   已綁定
Volume:        pv-volume-001
Labels:        <none>
Annotations:   pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      1Gi
Access Modes:  RWO
VolumeMode:    Filesystem
Used By:       <none>
Events:        <none>

3.3 NFS-PV-PVC實(shí)踐之準(zhǔn)備NFS共享存儲(chǔ)

NFS即是網(wǎng)絡(luò)文件系統(tǒng),它是一種分布式文件系統(tǒng)協(xié)議,kubernetes中的NFS存儲(chǔ)卷用于將某些事先存在的NFS服務(wù)器導(dǎo)出(export)的存儲(chǔ)空間掛載到Pod中以供容器使用,與臨時(shí)存儲(chǔ)不同的是,NFS存儲(chǔ)卷在Pod對(duì)象終止后僅僅是被卸載而非刪除,NFS是文件系統(tǒng)級(jí)共享服務(wù),它支持同時(shí)存在多路掛載,定義NFS存儲(chǔ)卷時(shí),常用如下字段。

server nfs服務(wù)器的地址或者主機(jī)名,必須字段。

pathnfs服務(wù)器導(dǎo)出(共享)的文件系統(tǒng)路徑,必須字段。

readOnly是否以只讀方式掛載,默認(rèn)為false。

生產(chǎn)環(huán)境建議使用Ceph、azureDisk等公有云存儲(chǔ)。

[root@kn-server-node02-15 ~]# yum install nfs-utils -y 
[root@kn-server-node02-15 ~]# cat /etc/exports
/nfs/data5/ 10.0.0.0/24(rw,no_root_squash)
/data/redis 10.0.0.0/24
10.0.0.0/24  pod訪問nfs服務(wù)會(huì)將源IP修改為節(jié)點(diǎn)IP,允許所有節(jié)點(diǎn)訪問NFS服務(wù)
(ro,no_root_squash)訪問NFS-SERVER共享目錄的用戶如果是root,它對(duì)共享目錄有root權(quán)限
準(zhǔn)備數(shù)據(jù)共享目錄
[root@kn-server-node02-15 ~]# mkdir /data/redis -p 
[root@kn-server-node02-15 ~]# systemctl enable nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
服務(wù)端配置
各個(gè)工作節(jié)點(diǎn)安裝nfs-utils
ubuntu安裝: sudo apt-get install nfs-common 。
centos安裝nfs-utils
[root@kn-server-master01-13 pv]# showmount -e 10.0.0.15
Export list for 10.0.0.15:
/data/redis 10.0.0.0/24
master節(jié)點(diǎn)和node節(jié)點(diǎn)都需要安裝
[root@kn-server-node01-14 ~]# showmount -e 10.0.0.15
Export list for 10.0.0.15:
/data/redis 10.0.0.0/24

3.4 準(zhǔn)備NFS-PVC

[root@kn-server-master01-13 pv]# cat nfs-pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
  labels:    首先標(biāo)簽須匹配,不然無(wú)法匹配,也可以稱為強(qiáng)行綁定。
    release: nfs-redis
spec:
  storageClassName: "nfs-storage"  須同屬一個(gè)
  accessModes: 
  - ReadWriteMany
  resources:
    requests:
      storage: 0.5Gi  指定大小。
[root@kn-server-master01-13 pv]# kubectl apply -f nfs-pvc.yaml 
persistentvolumeclaim/nfs-pvc created
顯示已為綁定狀態(tài)。
[root@kn-server-master01-13 pv]# kubectl get pv,pvc 
NAME                             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
persistentvolume/nfs-pv          512Mi      RWX            Recycle          Bound    default/nfs-pvc   nfs-storage             78m
persistentvolume/pv-volume-001   1Gi        RWO            Retain           Bound    default/001-pvc   host-storage            175m
NAME                            STATUS   VOLUME          CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/001-pvc   Bound    pv-volume-001   1Gi        RWO            host-storage   143m
persistentvolumeclaim/nfs-pvc   Bound    nfs-pv          512Mi      RWX            nfs-storage    6s
通過(guò)describe來(lái)查看
[root@kn-server-master01-13 pv]# kubectl describe pv nfs-pv
Name:            nfs-pv
Labels:          release=nfs-redis   所屬標(biāo)簽
Annotations:     pv.kubernetes.io/bound-by-controller: yes
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    nfs-storage    storageclass名稱
Status:          Bound   綁定狀態(tài)
Claim:           default/nfs-pvc   名稱空間
Reclaim Policy:  Recycle  回收策略
Access Modes:    RWX    訪問模式
VolumeMode:      Filesystem
Capacity:        512Mi  大小
Node Affinity:   <none>
Message:         
Source:
    Type:      NFS (an NFS mount that lasts the lifetime of a pod)
    Server:    10.0.0.15  來(lái)自那個(gè)nfs服務(wù)器
    Path:      /data/redis   共享的數(shù)據(jù)目錄
    ReadOnly:  false
Events:        <none>

3.4.1準(zhǔn)備Pod并使用PVC

[root@kn-server-master01-13 pv]# cat pod-redis.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: redis
spec: 
  containers:
  - name: redis
    image: redis
    volumeMounts:
    - name: redis-data
      mountPath: /data
  volumes:
  - name: redis-data
    persistentVolumeClaim:
      claimName: nfs-pvc 
[root@kn-server-master01-13 pv]# kubectl describe pods redis
Containers:
  redis:
    Container ID:   docker://d82061a1a86f56432e9956fc46bc810e577a0d89b91894e266e883bef68f5d9d
    Image:          redis
    Image ID:       docker-pullable://redis@sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
    Port:           &lt;none&gt;
    Host Port:      &lt;none&gt;
    State:          Running
      Started:      Sun, 27 Nov 2022 21:57:34 +0800
    Ready:          True
    Restart Count:  0
    Environment:    &lt;none&gt;
    Mounts:
      /data from redis-data (rw)   已經(jīng)掛載
[root@kn-server-master01-13 pv]# kubectl describe pvc nfs-pvc
Name:          nfs-pvc
Namespace:     default
StorageClass:  nfs-storage
Status:        Bound
Volume:        nfs-pv
Labels:        release=nfs-redis
Annotations:   pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      512Mi
Access Modes:  RWX
VolumeMode:    Filesystem
Used By:       redis  這里可以看到是redis這個(gè)Pod正在使用這個(gè)PVC
Events:        &lt;none&gt;

3.4.2 測(cè)試數(shù)據(jù)持久性

[root@kn-server-master01-13 pv]# redis-cli -h 192.168.1.86
192.168.1.86:6379> set key haitang 
OK
192.168.1.86:6379> get key
"haitang"
192.168.1.86:6379> bgsave
Background saving started
192.168.1.86:6379> exit
可以看到數(shù)據(jù)是寫到nfs-server了
[root@kn-server-node02-15 redis]# ll
總用量 4
-rw-r--r-- 1 polkitd input 110 11月 27 22:14 dump.rdb
刪除Pod后,數(shù)據(jù)是不會(huì)丟失的。
[root@kn-server-master01-13 pv]# kubectl delete pods redis
pod "redis" deleted
數(shù)據(jù)是還在的。
[root@kn-server-node02-15 redis]# ll
總用量 4
-rw-r--r-- 1 polkitd input 110 11月 27 22:20 dump.rdb

以上就是kubernetes數(shù)據(jù)持久化PV PVC深入分析詳解的詳細(xì)內(nèi)容,更多關(guān)于kubernetes數(shù)據(jù)持久化PV PVC的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Kubernetes?controller?manager運(yùn)行機(jī)制源碼解析

    Kubernetes?controller?manager運(yùn)行機(jī)制源碼解析

    這篇文章主要為大家介紹了Kubernetes?controller?manager運(yùn)行機(jī)制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Kubernetes關(guān)鍵組件與結(jié)構(gòu)組成介紹

    Kubernetes關(guān)鍵組件與結(jié)構(gòu)組成介紹

    這篇文章介紹了Kubernetes的關(guān)鍵組件與結(jié)構(gòu)組成,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • kubectl操作命令及使用說(shuō)明總結(jié)

    kubectl操作命令及使用說(shuō)明總結(jié)

    這篇文章主要為大家介紹了kubectl操作命令及使用說(shuō)明總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Kubernetes Informer數(shù)據(jù)存儲(chǔ)Index與Pod分配流程解析

    Kubernetes Informer數(shù)據(jù)存儲(chǔ)Index與Pod分配流程解析

    這篇文章主要為大家介紹了Kubernetes Informer數(shù)據(jù)存儲(chǔ)Index與Pod分配流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • CKAD認(rèn)證中部署k8s并配置Calico插件

    CKAD認(rèn)證中部署k8s并配置Calico插件

    這篇文章介紹了CKAD認(rèn)證中部署k8s并配置Calico插件的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Kubernetes ApiServer三大server權(quán)限與數(shù)據(jù)存儲(chǔ)解析

    Kubernetes ApiServer三大server權(quán)限與數(shù)據(jù)存儲(chǔ)解析

    這篇文章主要為大家介紹了Kubernetes ApiServer三大server權(quán)限與數(shù)據(jù)存儲(chǔ)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Kubernetes集群的組成介紹

    Kubernetes集群的組成介紹

    這篇文章介紹了Kubernetes集群的組成,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Kubernetes部署實(shí)例并配置Deployment、網(wǎng)絡(luò)映射、副本集

    Kubernetes部署實(shí)例并配置Deployment、網(wǎng)絡(luò)映射、副本集

    這篇文章介紹了Kubernetes部署實(shí)例并配置Deployment、網(wǎng)絡(luò)映射、副本集的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Docker與K8s關(guān)系介紹不會(huì)Docker也可以使用K8s

    Docker與K8s關(guān)系介紹不會(huì)Docker也可以使用K8s

    想學(xué)K8s,必須得先學(xué)會(huì)Docker嗎?這是很多網(wǎng)友在開始有想法想要學(xué)?K8s的時(shí)候都會(huì)冒出來(lái)的想法,要回答這個(gè)問題,我們需要先搞清楚?Docker?和?K8s?他們的角色是什么,相互之間是什么關(guān)系
    2022-06-06
  • Kubernetes控制節(jié)點(diǎn)的部署

    Kubernetes控制節(jié)點(diǎn)的部署

    這篇文章介紹了Kubernetes控制節(jié)點(diǎn)的部署,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評(píng)論