k8s進(jìn)行pvc擴(kuò)容
1.PV配置
確認(rèn)pv的回收策略栈幸,十分的重要WァG段!!髓梅!,確認(rèn)回收策略必須為Retain不能是Delete不然解除綁定后PV就被刪了绎签,并修改pv大小
一般真正用到的PV是我們部署的pod)枯饿,所以為了思路清晰些,查看回收策略我們就從pods一步一步的順藤摸瓜去找
1.1根據(jù)pod找到綁定的pvc信息
kubectl edit pods -n namespace podName
命名空間namespace
在spec.volumes.persistentVolumeClaim.claimName可以找到我們需要的pvc名稱
1.2根據(jù)PVC找到綁定的PV
kubectl edit pvc -n namespace pvcName
在spec.volumeName可以找到我們需要的pv名稱
1.3確認(rèn)pv信息诡必,修改回收策略為Retain,修改pv大小奢方,修改labels信息
kubectl edit pv -n namespace pvName
修改spec.persistentVolumeReclaimPolicy為Retain
修改spec.capacity.storage的大小例如30Gi
spec:
capacity:
storage: 30Gi
persistentVolumeReclaimPolicy: Retain #設(shè)置回收策略
指定labels用以新的pvc綁定該pv
metadata:
labels:
pv: appName-pvc
2.暫停刪除已部署的應(yīng)用(要做好yaml配置的保留,等下要恢復(fù)應(yīng)用的)
2.1 刪除services服務(wù)
kubectl delete services -n namespace svcName
2.2 刪除deployment
kubectl delete deployment -n namespace deploymentName
2.3刪除pods
kubectl delete pdos -n namespace podName
3.PVC配置
3.1修改PVC的大小爸舒,并指定需要綁定的PV
修改關(guān)于pvc的yaml配置
spec:
resources:
requests:
storage: 30Gi #調(diào)整到需要的大小
selector:
matchLabels:
pv: appName-pvc #這里是綁定的關(guān)鍵
3.2 更新pvc配置
kubectl apply -f pvc.yaml
3.2.1 如果出現(xiàn)以下錯(cuò)誤,則需要修改一下StorageClass蟋字,再進(jìn)行更新pvc配置
only dynamically provisioned pvc can be resized and the storageclass that provisions the pvc must support resize
修改StorageClass
kubectl edit storageclass -n namespace storageClassName
修改內(nèi)容
allowVolumeExpansion: true
3.3刪除原有pvc
kubectl delete pvc -n -n namespace pvcName
3.4解除原有pv和pvc的綁定
kubectl edit pv -n namespace pvName #注意這里操作的是pv!Eっ恪H到薄!涂炎!
3.5創(chuàng)建新的pvc
kubectl apply -f pvc.yaml
4.重啟應(yīng)用服務(wù)
有關(guān)應(yīng)用服務(wù)的配置我都寫(xiě)在了app.yaml中
kubectl replace --force -f app.yaml
5.驗(yàn)證是否成功
5.1 檢查pv是否被綁定
kubectl get pv -n namespace pvName
5.2檢查pvc是否綁定到我們需要的pv
kubectl get pvc -n namespace pvcName
5.3檢查pods是否啟動(dòng)成功
kubectl get pods -n namespace podName
5.4檢查service是否啟動(dòng)成功
kubectl get services -n namespace serviceName