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

