最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

K8s PV和PVC持久化存儲(chǔ)詳解

 更新時(shí)間:2025年08月14日 16:59:27   作者:大新屋  
Kubernetes PV由管理員創(chuàng)建,支持多種存儲(chǔ)類型,提供生命周期管理,PVC請(qǐng)求PV資源,需匹配大小、存儲(chǔ)類和訪問模式,并在同一命名空間,回收策略包括Retain、Delete和Recycle,生產(chǎn)環(huán)境建議使用NAS而非NFS

提示: Kubernetes 官網(wǎng)PV文檔說明:https://kubernetes.io/docs/concepts/storage/persistent-volumes

提示: PV正常情況是由K8s管理員創(chuàng)建,PV是沒有namespace命名空間限制

  • PersistentVolume 簡(jiǎn)稱PV,是由Kubernetes管理員設(shè)置的存儲(chǔ),可以配置Ceph、NFS、GlusterFs等常用存儲(chǔ)配置,相對(duì)于Volume配置,提供了更多的功能,比如生命周期的管理、大小的限制。PV分為靜態(tài)和動(dòng)態(tài)。
  • PersistentVolumeClaim 簡(jiǎn)稱PVC,是對(duì)存儲(chǔ)PV的請(qǐng)求(調(diào)用)。

PVC調(diào)用PV流程圖

一、PV策略

1、PV回收策略

persistentVolumeReclaimPolicy參數(shù)配置pv回收策略有以下幾種方法:

  • Retain 保留數(shù)據(jù),需要管理員手動(dòng)回收資源,當(dāng)刪除PVC時(shí),PV仍然存在,PV被視為已釋放,管理員可以手動(dòng)回收卷。手動(dòng)創(chuàng)建的PV默認(rèn)值為Retain。
  • Delete 刪除數(shù)據(jù),如果Volume插件支持,刪除PVC時(shí)會(huì)同時(shí)刪除PV,目前支持Detele的存儲(chǔ)后端包括AWS EBS, GCE PD,Azure Disk, OpenStack Cinder等。動(dòng)態(tài)創(chuàng)建的PV默認(rèn)值為Delete。
  • Recycle(已過時(shí)) 回收數(shù)據(jù),如果Volume插件支持,當(dāng)刪除PV時(shí),該策略會(huì)對(duì)卷執(zhí)行rm -rf清理該P(yáng)V,并使其可用于下一個(gè)新PVC,目前只有NFS和HostPath支持該策略,該策略不推薦使用。

2、PV訪問策略

  • ReadWriteOnce(RWO) 可以被單節(jié)點(diǎn)以讀寫模式掛載,命令行中可以被縮寫為 RWO
  • ReadOnlyMany(ROX) 可以被多個(gè)節(jié)點(diǎn)以只讀模式掛載,命令行中可以被縮寫為 ROX
  • ReadWriteMany(RWX) 可以被多個(gè)節(jié)點(diǎn)以讀寫模式掛載,命令行中可以被縮寫為RWX
  • ReadWriteOncePod(RWOP) 可以被單個(gè)Pod以讀寫模式掛載,命令行中可以被縮寫為RWXP(只支持 CSI 卷以及需要 Kubernetes 1.22 以上版本)

3、PV訪問策略支持的存儲(chǔ)類型

提示:Kubenetes官方文檔說明 https://kubernetes.io/docs/concepts/storage/persistent-volumes

4、存儲(chǔ)的分類

  • 文件存儲(chǔ) 一些數(shù)據(jù)可能需要被多個(gè)節(jié)點(diǎn)使用,比如用戶的頭像、用戶上傳的文件等,實(shí)現(xiàn)方式:NFS、NAS、FTP、CephFS等。(NFS\FTP生產(chǎn)系統(tǒng)不推薦使用)
  • 塊存儲(chǔ) 一些數(shù)據(jù)只能被一個(gè)節(jié)點(diǎn)使用,或者是需要將一塊裸盤整個(gè)掛載使用,比如MySQL數(shù)據(jù)庫、Redis等,實(shí)現(xiàn)方式:Ceph、GlusterFs、公有云
  • 對(duì)象存儲(chǔ) 由程序代碼直接實(shí)現(xiàn)的一種存儲(chǔ)方式,云原生應(yīng)用無狀態(tài)化常用的實(shí)現(xiàn)方式,實(shí)現(xiàn)方式:一般是符合S3協(xié)議的云存儲(chǔ),比如AWS的S3存儲(chǔ)、Minio等

5、PV參數(shù)說明

apiVersion: v1                           # 填寫API資源版本號(hào),通過kubectl api-resources | grep PersistentVolume命令查詢API資源版本號(hào)
kind: PersistentVolume                   # 指定資源類型,PersistentVolume資源類型是PersistentVolume
metadata:                                # 包含PersistentVolume元數(shù)據(jù)
  name: nfs-pv                           # 自定義PersistentVolume名稱
  labels:                                # 設(shè)置PersistentVolume標(biāo)簽
    type: nfs-pv                         # 自定義PersistentVolume標(biāo)簽名稱
  namespace: default                     # 指定PersistentVolume的命名空間,默認(rèn)default
spec:                                    # 定義PersistentVolume規(guī)格
  capacity:                              # 限制存儲(chǔ)容量大小,NFS不支持該參數(shù),默認(rèn)不限制
    storage: 5Gi                         # 限制存儲(chǔ)容量為5GB
  volumeMode: Filesystem                 # 定義PV的卷模式(存儲(chǔ)類型),支持Filesystem(文件系統(tǒng))或Block(塊設(shè)備), 其中Block類型需要后端存儲(chǔ)支持,默認(rèn)值Filesystem(文件系統(tǒng))
  accessModes:                           # 定義PV的卷訪問模式(PV訪問策略),支持ReadWriteOnce(RWO)、ReadOnlyMany(ROX) 、ReadWriteMany(RWX)、ReadWriteOncePod(RWOP)
    - ReadWriteOnce                      # 設(shè)置ReadWriteOnce,只允許單個(gè)節(jié)點(diǎn)以讀寫模式掛載
  persistentVolumeReclaimPolicy: Retain  # 定義PV的卷回收策略,支持Retain、Recycle、Delete,手動(dòng)創(chuàng)建PV默認(rèn)值Retain,動(dòng)態(tài)創(chuàng)建PV默認(rèn)值Delete
  storageClassName: nfs-slow             # 定義PV存儲(chǔ)類名稱,方便PVC調(diào)用使用,與PVC的spec.storageClassName參數(shù)值匹配
  nfs:                                   # 定義PV類型,當(dāng)前設(shè)置為NFS類似
    server: 172.20.236.210               # 設(shè)置NFS服務(wù)器的IP地址
path: /nfs                               # 設(shè)置NFS服務(wù)器掛載目錄

6、PVC參數(shù)說明

apiVersion: v1                           # 填寫API資源版本號(hào),通過kubectl api-resources | grep PersistentVolumeCliam命令查詢API資源版本號(hào)
kind: PersistentVolumeClaim              # 指定資源類型,PersistentVolumeCliam資源類型是PersistentVolumeCliam
metadata:                                # 包含PersistentVolumeCliam元數(shù)據(jù)
  name: nfs-pvc                          # 自定義PersistentVolumeCliam名稱
  labels:                                # 設(shè)置PersistentVolumeCliam標(biāo)簽
    type: nfs-pvc                        # 自定義PersistentVolumeCliam標(biāo)簽名稱
  namespace: default                     # 指定PersistentVolumeCliam的命名空間,默認(rèn)default
spec:                                    # 定義PersistentVolumeCliam規(guī)格
  storageClassName: nfs-slow             # 定義PVC調(diào)用的存儲(chǔ)類名稱,與PersistentVolume的spec.storageClassName參數(shù)值匹配
  accessModes:                           # 定義PVC的卷訪問模式(PV訪問策略),支持ReadWriteOnce(RWO)、ReadOnlyMany(ROX) 、ReadWriteMany(RWX)、ReadWriteOncePod(RWOP),此值要與請(qǐng)求的PV的spec.accessModes參數(shù)值匹配
    - ReadWriteOnce                      # 設(shè)置ReadWriteOnce,只允許單個(gè)節(jié)點(diǎn)以讀寫模式掛載,此值要與請(qǐng)求的PV的spec.accessModes參數(shù)值匹配
  resources:                             # 定義資源請(qǐng)求和限制
    requests:
      storage: 3Gi                       # 定義資源請(qǐng)求磁盤容量大小,當(dāng)前3GB

7、PV和PVC使用注意事項(xiàng)

(1)、PVC申請(qǐng)的空間大小不能大于PV的大小

(2)、PVC的spec.storageClassName參數(shù)值必須與PV的spec.storageClassName參數(shù)值一樣

(3)、PVC的spec.accessMode參數(shù)值必須與PV的spec.accessMode參數(shù)值一樣

(4)、一個(gè)PV只能被一個(gè)PVC請(qǐng)求調(diào)用使用,PVC和Pod必須在同一個(gè)Namespace命令空間下

二、創(chuàng)建PV(NFS)

提示: 生產(chǎn)系統(tǒng)不推薦使用NFS,推薦使用NAS,NFS是存在單點(diǎn)故障,NAS可配置高可用

1、創(chuàng)建PV(NFS)

### CentOS系統(tǒng)安裝NFS服務(wù)端(建議把NFS服務(wù)端安裝到K8s集群之外的服務(wù)器上,不要安裝到K8s集群任意的節(jié)點(diǎn)上)
mkdir -p /nfs
yum install -y nfs-utils rpcbind
cat > /etc/exports << 'EOF'
/nfs *(rw,sync,insecure,no_subtree_check,no_root_squash)
EOF
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
systemctl status rpcbind
systemctl status nfs
showmount -e localhost

### k8s集群選擇K8s-node01節(jié)點(diǎn)安裝NFS客戶端,測(cè)試掛載并卸載掛載
mkdir -p /nfs
apt install -y nfs-common
systemctl start rpcbind
systemctl enable rpcbind
systemctl status rpcbind
showmount -e 172.20.236.210
mount 172.20.236.210:/nfs /nfs
df -h
umount /nfs

### 創(chuàng)建PV
mkdir -p /data/yaml/pv
cat > /data/yaml/pv/nfs-pv.yaml << 'EOF'
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
  labels:
    type: nfs-pv
  namespace: default
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs-slow
  nfs:
    server: 172.20.236.210
    path: /nfs
EOF

kubectl create -f /data/yaml/pv/nfs-pv.yaml

### 查看PV
kubectl get pv -n default -owide
kubectl get pv -n default -oyaml
# 查看PV的STATUS狀態(tài)說明
Available    # 可用,沒有被PVC綁定的空閑資源
Bound        # 已綁定,已經(jīng)被PVC綁定
Released     # 已釋放,PV被刪除,但是資源還未被重新使用
Failed       # 失敗,自動(dòng)回收失敗

2、創(chuàng)建PVC并調(diào)用PV

### 創(chuàng)建PVC調(diào)用PV
cat > /data/yaml/pv/nfs-pvc.yaml << 'EOF'
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
  labels:
    type: nfs-pvc
  namespace: default
spec:
  storageClassName: nfs-slow
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
EOF

kubectl create -f /data/yaml/pv/nfs-pvc.yaml

### 查看PVC狀態(tài)
kubectl get pvc -n default
kubectl get pvc -n default -owide
kubectl get pvc -n default -oyaml

### 此時(shí)查看PV狀態(tài)STATUS顯示綁定
kubectl get pv -n default –owide

3、創(chuàng)建Deployment調(diào)用PVC

### K8s集群k8s-node01節(jié)點(diǎn)打標(biāo)簽并查看
kubectl label node k8s-node01 run=nfs
get node --show-labels -l run=nfs -owide

### 創(chuàng)建Deployment調(diào)用PVC(Pod必須指定運(yùn)行k8s-node01節(jié)點(diǎn)上,否則運(yùn)行在其它K8s節(jié)點(diǎn)都會(huì)失?。?
cat > /data/yaml/pv/nginx-deploy-pvc.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy-pvc
  name: nginx-deploy-pvc
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      nodeSelector:
        run: nfs
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.26
        name: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: pv-nfs-storage
      volumes:
      - name: pv-nfs-storage
        persistentVolumeClaim:
          claimName: nfs-pvc
EOF

kubectl create -f /data/yaml/pv/nginx-deploy-pvc.yaml
kubectl get deploy -n default
kubectl get pods -n default -owide

### 登錄NFS服務(wù)器在NFS掛載的共享目錄創(chuàng)建一個(gè)文件
echo "Welcome to Nginx World" > /nfs/index.html
ls -l /nfs/index.html
cat /nfs/index.html

### 登錄兩個(gè)Pod資源的nginx容器測(cè)試
kubectl get pods -n default -owide
kubectl exec -n default nginx-deploy-pvc-659d6c64b9-b5d4b -- cat /usr/share/nginx/html/index.html
kubectl exec -n default nginx-deploy-pvc-659d6c64b9-bj446 -- cat /usr/share/nginx/html/index.html
curl 172.30.85.201
curl 172.30.85.202

### PVC刪除操作:先刪除Deployment,再刪除PVC,最后刪除PV
kubectl delete -f /data/yaml/pv/nginx-deploy-nfs.yaml
kubectl delete -f /data/yaml/pv/nfs-pvc.yaml
kubectl delete -f /data/yaml/pv/nfs-pv.yaml

三、創(chuàng)建PV(hostPath)

提示: 在使用PV(hostPath)掛載到任意一個(gè)K8s集群節(jié)點(diǎn),推薦給選定的K8s集群節(jié)點(diǎn)打上標(biāo)簽,把PV(hostPath)掛載到選定的K8s集群節(jié)點(diǎn)

1、創(chuàng)建PV(hostPath)

### 創(chuàng)建PV
### spec.hostPath.type參數(shù)值為DirectoryOrCreate表示如果宿主機(jī)給定/mnt/data 路徑不存在,那么將自動(dòng)創(chuàng)建一個(gè)權(quán)限為0755 的空目錄,和Kubelet 具有相同的組和權(quán)限
mkdir -p /data/yaml/pv
cat > /data/yaml/pv/pv-hostpath.yaml << 'EOF'
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-hostpath
  namespace: default
  labels:
    type: pv-local
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  storageClassName: hostpath-ide
  hostPath:
    path: "/mnt/data"
    type: DirectoryOrCreate
EOF

kubectl create -f /data/yaml/pv/pv-hostpath.yaml
kubectl get pv -n default
kubectl get pv -n default -owide
kubectl get pv -n default -oyaml

2、創(chuàng)建PVC調(diào)用PV

### 創(chuàng)建PVC調(diào)用PV
cat  > /data/yaml/pv/pvc-hostpath.yaml << 'EOF'
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-hostpath
  namespace: default
spec:
  storageClassName: hostpath-ide
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
EOF

kubectl create -f /data/yaml/pv/pvc-hostpath.yaml
kubectl get pvc -n default
kubectl get pvc -n default -owide
kubectl get pvc -n default -oyaml
kubectl get pv -n default

3、創(chuàng)建Deployment調(diào)用PVC

### 創(chuàng)建Deployment調(diào)用PVC 
cat > /data/yaml/pv/nginx-deploy-hostpath.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy-hostpath
  name: nginx-deploy-hostpath
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.26
        name: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: pv-hostpath-storage
      volumes:
      - name: pv-hostpath-storage
        persistentVolumeClaim:
          claimName: pvc-hostpath
EOF

kubectl create -f /data/yaml/pv/nginx-deploy-hostpath.yaml
kubectl get deploy -n default
kubectl get pods -n default -owide

### 查看每個(gè)Pods資源中nginx容器分配置到的K8s集群節(jié)點(diǎn)宿主機(jī)是否自動(dòng)創(chuàng)建了/mnt/data目錄
kubectl get pods -owide

### 登錄K8s集群nginx容器運(yùn)行的K8s節(jié)點(diǎn)創(chuàng)建測(cè)試文件
echo "Welcome to Nginx World" > /mnt/data/index.html    
cat /mnt/data/index.html

### 登錄兩個(gè)Pod資源的nginx容器測(cè)試
kubectl get pods -n default -owide
kubectl exec -n default nginx-deploy-hostpath-bb7ddf9d6-87gn6 -- cat /usr/share/nginx/html/index.html
kubectl exec -n default nginx-deploy-hostpath-bb7ddf9d6-r57tl -- cat /usr/share/nginx/html/index.html
curl 172.30.135.137
curl 172.30.122.180

### PVC刪除操作:先刪除Deployment,再刪除PVC,最后刪除PV
kubectl delete -f /data/yaml/pv/nginx-deploy-hostpath.yaml
kubectl delete -f /data/yaml/pv/pvc-hostpath.yaml
kubectl delete -f /data/yaml/pv/pvc-hostpath.yaml

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • kubernetes k8s 存儲(chǔ)動(dòng)態(tài)掛載配置詳解

    kubernetes k8s 存儲(chǔ)動(dòng)態(tài)掛載配置詳解

    這篇文章主要為大家介紹了kubernetes k8s 存儲(chǔ)動(dòng)態(tài)掛載配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • kubelet為cadvisor添加namespace/pod/container標(biāo)簽示例詳解

    kubelet為cadvisor添加namespace/pod/container標(biāo)簽示例詳解

    這篇文章主要為大家介紹了kubelet為cadvisor添加namespace/pod/container標(biāo)簽示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • K8S中應(yīng)用無法獲取用戶真實(shí)ip問題排查過程

    K8S中應(yīng)用無法獲取用戶真實(shí)ip問題排查過程

    這篇文章主要介紹了K8S中應(yīng)用無法獲取用戶真實(shí)ip問題排查過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • kubernetes存儲(chǔ)之GlusterFS集群詳解

    kubernetes存儲(chǔ)之GlusterFS集群詳解

    最近工作中用到了GlusterFS作為Kubernetes的存儲(chǔ),這篇文章主要給大家介紹了關(guān)于kubernetes存儲(chǔ)之GlusterFS集群的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案

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

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

    一文詳解如何高效查看k8s日志

    K8S是kubernetes的縮寫,是為解決容器服務(wù)編排而生的,在運(yùn)維K8S服務(wù)的過程中,經(jīng)常會(huì)遇到各種報(bào)錯(cuò)和診斷問題,那么我們一般怎么查看K8S組件的日志,這篇文章主要給大家介紹了關(guān)于如何高效查看k8s日志的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • Kubernetes集群環(huán)境初始化

    Kubernetes集群環(huán)境初始化

    這篇文章介紹了Kubernetes集群環(huán)境初始化的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • k8s無法刪除pv,pvc的問題及解決

    k8s無法刪除pv,pvc的問題及解決

    在Kubernetes中刪除PVC時(shí),若未指定名稱或使用錯(cuò)誤參數(shù),會(huì)報(bào)錯(cuò)"no name was specified",解決方法為:使用`kubectl delete pvc <pvc-name>`明確指定PVC名稱,或通過`kubectl delete pvc --all`刪除所有PVC,同時(shí)確保正確指定命名空間(-n)
    2025-09-09
  • Kubernetes訪問控制之鑒權(quán)方法詳解

    Kubernetes訪問控制之鑒權(quán)方法詳解

    這篇文章主要為大家介紹了Kubernetes訪問控制之鑒權(quán)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • kubernetes?Volume存儲(chǔ)卷configMap學(xué)習(xí)筆記

    kubernetes?Volume存儲(chǔ)卷configMap學(xué)習(xí)筆記

    這篇文章主要為大家介紹了kubernetes?Volume存儲(chǔ)卷configMap學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05

最新評(píng)論

额尔古纳市| 靖边县| 寿阳县| 二连浩特市| 宁明县| 铁岭市| 类乌齐县| 固原市| 依兰县| 皋兰县| 宁河县| 慈溪市| 安庆市| 苍溪县| 南靖县| 上饶县| 湖北省| 巨野县| 黄山市| 密云县| 湟源县| 汶川县| 富川| 读书| 天气| 彭阳县| 陇川县| 赤峰市| 尼玛县| 莫力| 九台市| 论坛| 镶黄旗| 剑河县| 仙居县| 安远县| 同江市| 龙州县| 富阳市| 建阳市| 太仓市|