k8s按需創(chuàng)建PV和使用PVC詳解
在 Kubernetes 中,PersistentVolume(PV)和 PersistentVolumeClaim(PVC)用于管理存儲資源。
PV 是集群中的存儲資源,而 PVC 是 Pod 請求 PV 的方式。
按需創(chuàng)建 PV 通常使用 StorageClass 實現(xiàn)動態(tài)存儲分配,PVC 通過聲明請求所需的存儲量與訪問模式來綁定相應的 PV。
以下是按需創(chuàng)建 PV 和使用 PVC 的具體步驟。
1.按需創(chuàng)建 PV(使用 StorageClass)
StorageClass 用于定義動態(tài)存儲分配的策略,允許 Kubernetes 自動創(chuàng)建 PV,而無需手動預先配置。
創(chuàng)建 StorageClass
首先定義一個 StorageClass 資源,指定存儲類型和配置參數(shù)。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard provisioner: kubernetes.io/aws-ebs # 選擇適合您的云提供商或存儲類型 parameters: type: gp2 reclaimPolicy: Delete # PV 被釋放后會刪除存儲(也可設置為 Retain,保留數(shù)據(jù)) volumeBindingMode: WaitForFirstConsumer
2.創(chuàng)建 PVC 以請求 PV
PersistentVolumeClaim 是 Pod 請求存儲資源的聲明。
配置 PVC 時指定需要的存儲大小和訪問模式,Kubernetes 會使用指定的 StorageClass 動態(tài)創(chuàng)建匹配的 PV 并綁定到該 PVC。
PVC 配置示例
以下示例中,PVC 請求 5Gi 的存儲,并使用之前創(chuàng)建的 StorageClass(standard)。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce # 設置訪問模式,可選 ReadOnlyMany、ReadWriteMany 等
storageClassName: standard # 指定使用的 StorageClass
resources:
requests:
storage: 5Gi
當這個 PVC 申請存儲時,Kubernetes 會根據(jù) StorageClass 配置動態(tài)創(chuàng)建一個 PV 并綁定到 PVC。
3.在 Pod 中使用 PVC
在 Pod 配置中引用 PVC 以掛載存儲卷,從而使應用可以使用持久存儲。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: my-storage
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: my-pvc
各字段解析
- volumeMounts:指定容器內(nèi)部的掛載路徑,此路徑對應于卷綁定的位置。
- volumes:引用 PVC 以將持久卷掛載到容器中。
驗證
- 創(chuàng)建 StorageClass、PVC 和 Pod:使用
kubectl apply -f命令應用所有配置文件。 - 檢查 PVC 狀態(tài):運行
kubectl get pvc my-pvc,查看 PVC 是否已綁定(Bound狀態(tài))。 - 檢查 Pod 掛載:運行
kubectl describe pod my-pod,確認卷已掛載到指定路徑。
注意事項
- reclaimPolicy:定義 PV 釋放后的處理方式,
Delete表示刪除存儲資源,而Retain表示保留。 - volumeBindingMode:
WaitForFirstConsumer表示 PV 會在 Pod 請求時創(chuàng)建,適合多節(jié)點調(diào)度環(huán)境。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Rainbond上部署API?Gateway?Kong及環(huán)境配置教程
這篇文章主要為大家介紹了Rainbond上部署API?Gateway?Kong及環(huán)境配置教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
k8s kubectl啟動成功,但執(zhí)行命令時報錯解決:The connection to&
用戶使用kubectl時出現(xiàn)連接拒絕錯誤,排查發(fā)現(xiàn)配置文件名非admin.conf,修改后問題解決,提示需使用kubernetes-admin配置文件以確保正確性2025-08-08
K8s生產(chǎn)環(huán)境那些文檔不會告訴你的坑及解決辦法
K8s作為當前最流行的容器編排平臺,在企業(yè)生產(chǎn)環(huán)境中的部署需要綜合考慮高可用性、安全性、性能優(yōu)化等多方面因素,這篇文章主要介紹了K8s生產(chǎn)環(huán)境那些文檔不會告訴你的坑及解決辦法的相關(guān)資料,需要的朋友可以參考下2026-05-05

