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 通過聲明請(qǐng)求所需的存儲(chǔ)量與訪問模式來綁定相應(yīng)的 PV。
以下是按需創(chuàng)建 PV 和使用 PVC 的具體步驟。
1.按需創(chuàng)建 PV(使用 StorageClass)
StorageClass 用于定義動(dòng)態(tài)存儲(chǔ)分配的策略,允許 Kubernetes 自動(dòng)創(chuàng)建 PV,而無需手動(dòng)預(yù)先配置。
創(chuàng)建 StorageClass
首先定義一個(gè) StorageClass 資源,指定存儲(chǔ)類型和配置參數(shù)。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard provisioner: kubernetes.io/aws-ebs # 選擇適合您的云提供商或存儲(chǔ)類型 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ǔ)大小和訪問模式,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è)置訪問模式,可選 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)文章
k8s中如何實(shí)現(xiàn)pod自動(dòng)擴(kuò)縮容詳解
在實(shí)際生產(chǎn)系統(tǒng)中,經(jīng)常會(huì)遇到某個(gè)服務(wù)需要擴(kuò)容的場(chǎng)景,可能會(huì)遇到由于資源緊張或者工作負(fù)載降低而需要減少服務(wù)實(shí)例數(shù)量的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于k8s中如何實(shí)現(xiàn)pod自動(dòng)擴(kuò)縮容的相關(guān)資料,需要的朋友可以參考下2022-08-08
KubeSphere中部署Wiki系統(tǒng)wiki.js并啟用中文全文檢索
這篇文章主要為大家介紹了KubeSphere中部署Wiki系統(tǒng)wiki.js并啟用中文全文檢索實(shí)現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
k8s安裝calico時(shí)如何選擇網(wǎng)卡問題
這篇文章主要介紹了k8s安裝calico時(shí)如何選擇網(wǎng)卡問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
關(guān)于Rancher部署并導(dǎo)入K8S集群的問題
這篇文章主要介紹了關(guān)于Rancher部署并導(dǎo)入K8S集群的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
K8S-ConfigMap實(shí)現(xiàn)應(yīng)用和配置分離詳解
這篇文章主要為大家介紹了K8S-ConfigMap實(shí)現(xiàn)應(yīng)用和配置分離詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
k8s?pod始終處于pending狀態(tài)的解決方案
新K8s部署后服務(wù)重啟導(dǎo)致dashboard無法訪問,所有Pod處于Pending狀態(tài),原因分析顯示,因節(jié)點(diǎn)污點(diǎn)引發(fā)調(diào)度失敗,刪除污點(diǎn)后問題解決,總結(jié)Pending原因分為三類:調(diào)度問題(污點(diǎn)、資源不足)、鏡像問題(拉取失?。?、依賴性問題(卷/Secret/ConfigMap缺失)2025-08-08
理解k8s控制器DaemonSet創(chuàng)建及使用場(chǎng)景
這篇文章主要為大家介紹了k8s控制器DaemonSet創(chuàng)建及使用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

