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

云原生技術(shù)持久化存儲PV與PVC

 更新時間:2022年03月18日 15:25:51   作者:、重明  
這篇文章主要介紹了云原生技術(shù)持久化存儲PV與PVC

1.PV與PVC

PV:

持久卷(PersistentVolume)簡稱PV,是集群中的一塊存儲,可以由管理員事先供應(yīng)。
可以配置NFS、Ceph等常用存儲配置,相對于volumes,提供了更多的功能,如生命周期管理、大小的限制。

PV 卷的供應(yīng)有兩種方式:靜態(tài)供應(yīng)或動態(tài)供應(yīng)。

靜態(tài):

集群管理員預(yù)先創(chuàng)建許多PV,在PV的定義中能夠體現(xiàn)存儲資源的特性。

動態(tài):

集群管理員無須預(yù)先創(chuàng)建PV,而是通過StorageClass的設(shè)置對后端存儲資源進行描述,標記存儲的類型和特性。用戶通過創(chuàng)建PVC對存儲類型進行申請,系統(tǒng)將自動完成PV的創(chuàng)建及與PVC的綁定。如果PVC聲明的Class為空"",則說明PVC不使用動態(tài)模式。

PVC:

持久卷申領(lǐng)(PersistentVolumeClaim,PVC)表達的是用戶對存儲的請求。就像Pod消耗Node的資源一樣,PVC消耗PV資源。PVC可以申請存儲空間的大?。╯ize)和訪問模式。

在這里插入圖片描述

由管理員創(chuàng)建PV連接到后端存儲,使用人員或管理員創(chuàng)建PVC使用PV資源。

2.PV資源回收

當用戶不再使用其存儲卷時,他們可以從 API 中將 PVC 對象刪除,從而允許 該資源被回收再利用。PV 對象的回收策略告訴集群,當其被 從申領(lǐng)中釋放時如何處理該數(shù)據(jù)卷。 目前,數(shù)據(jù)卷可以被 Retained(保留)、Recycled(回收)或 Deleted(刪除)。

Retain:保留資源

保留策略可以管理員手動回收資源,當PVC被刪除后,PV仍然存在,對應(yīng)的數(shù)據(jù)卷被視為"已釋放(released)",管理員可以手動回收資源。

Delete:刪除數(shù)據(jù)

需要插件支持,如果支持,那么刪除PVC時也會自動刪除PV和相關(guān)的后端存儲資源;動態(tài)卷默認為delete。

Recycle:回收(棄用)

回收策略已被棄用,代替者為動態(tài)供應(yīng)。如果下層的卷插件支持,回收策略 Recycle 會在卷上執(zhí)行一些基本的 擦除(rm -rf /thevolume/*)操作,之后允許該卷用于新的 PVC 申領(lǐng)。

3.訪問模式

ReadWriteOnce

卷可以被一個節(jié)點以讀寫方式掛載。 ReadWriteOnce 訪問模式也允許運行在同一節(jié)點上的多個 Pod 訪問卷,縮寫為RWO。

ReadOnlyMany

卷可以被多個節(jié)點以只讀方式掛載,縮寫為ROX。

ReadWriteMany

卷可以被多個節(jié)點以讀寫方式掛載,縮寫為RWX。

ReadWriteOncePod

卷可以被單個 Pod 以讀寫方式掛載。 如果你想確保整個集群中只有一個 Pod 可以讀取或?qū)懭朐?PVC, 請使用ReadWriteOncePod 訪問模式。這只支持 CSI 卷以及需要 Kubernetes 1.22 以上版本,縮寫為RWOP。

注意: 你的存儲支不支持這種訪問模式,具體情況查看:官方文檔

4.存儲分類

文件存儲(Filesystem):

一些數(shù)據(jù)可能需要多個節(jié)點使用,比如用戶頭像、用戶上傳文件等,實現(xiàn)方式:NFS、NAS、FTP等;NFS和FTP不推薦。

塊存儲(block):

一些數(shù)據(jù)只能被一個節(jié)點使用,或者是一塊裸盤整個掛載使用,比如數(shù)據(jù)庫、redis等,實現(xiàn)方式是Ceph、GlusterFS、公有云等。

對象存儲:

由程序代碼直接實現(xiàn)的一種存儲方式,云原生應(yīng)用無狀態(tài)化常用的實現(xiàn)方式;實現(xiàn)方式:一般是符合53標準的云存儲,比如AWS的53存儲、Minio等。

5.創(chuàng)建PV卷

列舉兩個實例,其他類型可參考官網(wǎng),因為我這資源有限。

5.1.實例:創(chuàng)建NAS/NFS類型的PV

生產(chǎn)不推薦NFS??梢允褂肗AS。

準備一臺NFS服務(wù)器

第一步:準備一臺NFS服務(wù)器,我這個裝的有點多,你也可以只安裝nfs服務(wù)器

[root@localhost ~]# yum -y install nfs* rpcbind

第二步:所有節(jié)點安裝nfs客戶端,不然不能識別,每一個需要掛載nfs的節(jié)點都需要裝

[root@k8s-master01 ~]# yum -y install nfs-utils

第三步:在服務(wù)端創(chuàng)建共享目錄

[root@k8s-master01 ~]# yum -y install nfs-utils

第四步:服務(wù)端配置共享目錄

[root@localhost ~]# cat /etc/exports
/data/k8s/ *(rw,sync,no_subtree_check,no_root_squash)
[root@localhost ~]# exportfs -r
[root@localhost ~]# systemctl restart nfs rpcbind

第五步:有另外一臺機器掛載共享目錄測試是否成功

[root@k8s-master01 hgfs]# mount -t nfs 192.168.10.6:/data/k8s /mnt
[root@k8s-master01 mnt]# mkdir hah
[root@k8s-master01 mnt]# ls
111.txt  hah
# 在nfs服務(wù)端查看
[root@localhost k8s]# ls
111.txt  hah

創(chuàng)建一個PV

第一步:編寫一個PV的yaml文件

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs-slow
  nfs:
    path: /data/k8s
    server: 192.168.10.6

對上面的yaml文件做一下說明:

通用的開頭就不說了

capacity:容量配置,這個pv使用多大容量,當然需要后端存儲支持才行

volumeMode:卷的模式,目錄4有說明

accessModes:PV的訪問模式,目錄3有說明

accessClassName:PV的類,特定的PV只能綁定特定的PVC

persistentVolumeReclaimPolicy:回收策略,目錄2有說明

nfs:NFS服務(wù)配置,里面包含共享目錄和服務(wù)端IP

第二步:執(zhí)行yaml文件創(chuàng)建此PV;注意PV的成功跟后端存儲正不正常沒什么關(guān)系。

[root@k8s-master01 ~]# kubectl create -f pv-nfs.yaml 
persistentvolume/pv-nfs created
[root@k8s-master01 ~]# kubectl get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pv-nfs   2Gi        RWO            Recycle          Available           nfs-slow                54s

第三步:說一下PV的狀態(tài)(STATUS)

Available:可用,沒有被PVC綁定的空閑資源

Bound:已綁定,已經(jīng)被PVC綁定

Released:已釋放,PVC被刪除,資源未被重新使用

Failed:失敗,自動回收失敗

5.2.實例:創(chuàng)建一個hostPath類型的PV

當你沒有一個可靠的存儲,但是數(shù)據(jù)又不能丟失,可以掛載到宿主機的路徑,即使重啟數(shù)據(jù)還在。

第一步:創(chuàng)建一個pv-host.yaml文件

apiVersion: v1
kind: PersistentVolume
metadata:
  name: host-pv-volume
  labels:
    type: local
spec:
  storageClassName: hostpath
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"  # 宿主機路徑

第二步:執(zhí)行yaml文件創(chuàng)建PV

[root@k8s-master01 ~]# kubectl create -f pv-host.yaml 
persistentvolume/host-pv-volume created
您在 /var/spool/mail/root 中有新郵件
[root@k8s-master01 ~]# kubectl get pv
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
host-pv-volume   1Gi        RWO            Retain           Available           hostpath                9s
pv-nfs           2Gi        RWO            Recycle          Available           nfs-slow                30m

6.PVC

6.1.Pod與PVC與PV的關(guān)系

在這里插入圖片描述

由一張圖說一下PV與PVC的綁定,Pod又是怎么掛載PVC

首先創(chuàng)建一個PV,它的名字是pv-nfs,storageClassName名字是nfs-slow(這個名字不唯一,就是說其他PV也可以叫這個名字)

然后創(chuàng)建一個PVC,它的名字是test-pv-claim,storageClassName名字是nfs-slow(PVC綁定PV也是根據(jù)這個名字判斷,根據(jù)上一點說的特性也就是說一個PVC可以綁定多個storageClassName名字是nfs-slow的PV)注意PVC設(shè)置的資源大小要等于小于PV。

最后Pod使用的時候創(chuàng)建一個volumes,這個名字是test-pv-storage,這個volumes使用的PVC資源要寫PVC的name,也就是test-pv-claim;等Pod中的容器掛載資源的時候掛載的名字是volumes的name,也就是test-pv-storage。

6.2.創(chuàng)建一個PVC掛載到Pod

注意:pvc要和Pod在同一個命名空間,而pv不需要;因為都是在默認空間,就沒指定,需要注意。

第一步:編寫一個PVC的yaml文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pv-claim
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 2Gi  # 小于等于pv
  storageClassName: nfs-slow

第二步:執(zhí)行yaml文件創(chuàng)建PVC;從下面這個狀態(tài)來看已經(jīng)綁定成功了,綁定了pv-nfs,類型為nfs-slow,都是前面指定的。

[root@k8s-master01 ~]# kubectl create -f pvc-nfs.yaml 
persistentvolumeclaim/test-pv-claim created
[root@k8s-master01 ~]# kubectl get pvc
NAME            STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
test-pv-claim   Bound    pv-nfs   2Gi        RWO            nfs-slow       20s

第三步:創(chuàng)建Pod掛載PVC

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: dp-nginx
  name: dp-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dp-nginx
  strategy: {}
  template:
    metadata:
      labels:
        app: dp-nginx
    spec:
      volumes:
      - name: test-pv-storage
        persistentVolumeClaim:
          claimName: test-pv-claim
      containers:
      - image: nginx
        name: nginx
        volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: test-pv-storage

第四步:創(chuàng)建Pod,進入Pod查看掛載情況

[root@k8s-master01 ~]# kubectl replace -f dp-nginx.yaml 
deployment.apps/dp-nginx replaced
[root@k8s-master01 ~]# kubectl get pod
NAME                       READY   STATUS    RESTARTS   AGE
dp-nginx-fcd88d6f8-prxcd   1/1     Running   0          22s
[root@k8s-master01 ~]# kubectl exec -ti dp-nginx-fcd88d6f8-prxcd -- bash
root@dp-nginx-fcd88d6f8-prxcd:/# df -Th
Filesystem              Type     Size  Used Avail Use% Mounted on
overlay                 overlay   17G  5.2G   12G  31% /
tmpfs                   tmpfs     64M     0   64M   0% /dev
tmpfs                   tmpfs    2.0G     0  2.0G   0% /sys/fs/cgroup
shm                     tmpfs     64M     0   64M   0% /dev/shm
/dev/mapper/centos-root xfs       17G  5.2G   12G  31% /etc/hosts
192.168.10.6:/data/k8s  nfs4      17G  2.4G   15G  14% /usr/share/nginx/html
tmpfs                   tmpfs    3.8G   12K  3.8G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs                   tmpfs    2.0G     0  2.0G   0% /proc/acpi
tmpfs                   tmpfs    2.0G     0  2.0G   0% /proc/scsi
tmpfs                   tmpfs    2.0G     0  2.0G   0% /sys/firmware
# 可以看到10.6的共享目錄已經(jīng)掛載到了/nginx/html下

第五步:測試,在nfs服務(wù)器共享目錄下創(chuàng)建資源,進入Pod容器內(nèi)查看是否存在

# nfs服務(wù)器中創(chuàng)建資源
[root@localhost k8s]# ls
111.txt  hah
# 在Pod的nginx容器中查看
root@dp-nginx-fcd88d6f8-prxcd:/# cd /usr/share/nginx/html/
root@dp-nginx-fcd88d6f8-prxcd:/usr/share/nginx/html# ls
111.txt  hah
# 內(nèi)容存在,說明創(chuàng)建成功

以上就是云原生技術(shù)持久化存儲PV與PVC的詳細內(nèi)容,更多關(guān)于云原生持久化存儲PV與PVC的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Google?Kubernetes?Engine?集群實戰(zhàn)詳解

    Google?Kubernetes?Engine?集群實戰(zhàn)詳解

    這篇文章主要為大家介紹了Google?Kubernetes?Engine?集群實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 阿里云kubernetes查找鏡像中jar包的方法(docker查看鏡像中的jar)

    阿里云kubernetes查找鏡像中jar包的方法(docker查看鏡像中的jar)

    這篇文章主要給大家介紹了關(guān)于阿里云kubernetes查找鏡像中jar包的方法,也就是在docker查看鏡像中的jar,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Kubernetes中使用PersistentVolume掛載云盤方式

    Kubernetes中使用PersistentVolume掛載云盤方式

    這篇文章主要介紹了Kubernetes中使用PersistentVolume掛載云盤方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Kubernetes有狀態(tài)應(yīng)用管理StatefulSet使用詳解

    Kubernetes有狀態(tài)應(yīng)用管理StatefulSet使用詳解

    這篇文章主要為大家介紹了Kubernetes有狀態(tài)應(yīng)用管理StatefulSet使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 在K8S中實現(xiàn)會話保持的兩種方案

    在K8S中實現(xiàn)會話保持的兩種方案

    這篇文章主要介紹了在K8S中實現(xiàn)會話保持的兩種方案,每種方案結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 如何在kubernetes中創(chuàng)建Pod

    如何在kubernetes中創(chuàng)建Pod

    這篇文章主要介紹了如何在kubernetes中創(chuàng)建Pod,幫助大家更好的理解和學(xué)習(xí)使用kubernetes,感興趣的朋友可以了解下
    2021-04-04
  • K8S中Pod重啟策略及重啟可能原因詳細講解

    K8S中Pod重啟策略及重啟可能原因詳細講解

    在k8s集群中當某個pod資源需要重啟時,我們只會對其進行刪除,由其pod控制器進行重新構(gòu)建,下面這篇文章主要給大家介紹了關(guān)于K8S中Pod重啟策略及重啟可能原因的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • k8s自動化安裝腳本(二進制)的操作步驟

    k8s自動化安裝腳本(二進制)的操作步驟

    Kubernetes?k8s安裝腳本,非常好用,下面這篇文章主要給大家介紹了關(guān)于k8s自動化安裝腳本(二進制)的操作步驟,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • k8s部署ingress-nginx的詳細步驟大全

    k8s部署ingress-nginx的詳細步驟大全

    nginx一般是作為服務(wù)的入口,其在kubernetes的部署方式也大致相似,這篇文章主要給大家介紹了關(guān)于k8s部署ingress-nginx的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • 如何使用Kubernetes自定義資源(CRD)詳解

    如何使用Kubernetes自定義資源(CRD)詳解

    自定義資源定義(CRD)是Kubernetes API擴展,可以定義新的對象類型,下面這篇文章主要給大家介紹了關(guān)于如何使用Kubernetes自定義資源(CRD)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09

最新評論