k8s进行pvc扩容
1.PV配置
确认pv的回收策略,十分的重要!!!!!,确认回收策略必须为Retain不能是Delete不然解除绑定后PV就被删了,并修改pv大小
一般真正用到的PV是我们部署的pod),所以为了思路清晰些,查看回收策略我们就从pods一步一步的顺藤摸瓜去找
1.1根据pod找到绑定的pvc信息
kubectl edit pods -n namespace podName
命名空间namespace
在spec.volumes.persistentVolumeClaim.claimName可以找到我们需要的pvc名称
1.2根据PVC找到绑定的PV
kubectl edit pvc -n namespace pvcName
在spec.volumeName可以找到我们需要的pv名称
1.3确认pv信息,修改回收策略为Retain,修改pv大小,修改labels信息
kubectl edit pv -n namespace pvName
修改spec.persistentVolumeReclaimPolicy为Retain
修改spec.capacity.storage的大小例如30Gi
spec:
capacity:
storage: 30Gi
persistentVolumeReclaimPolicy: Retain #设置回收策略
指定labels用以新的pvc绑定该pv
metadata:
labels:
pv: appName-pvc
2.暂停删除已部署的应用(要做好yaml配置的保留,等下要恢复应用的)
2.1 删除services服务
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
修改关于pvc的yaml配置
spec:
resources:
requests:
storage: 30Gi #调整到需要的大小
selector:
matchLabels:
pv: appName-pvc #这里是绑定的关键
3.2 更新pvc配置
kubectl apply -f pvc.yaml
3.2.1 如果出现以下错误,则需要修改一下StorageClass,再进行更新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
修改内容
allowVolumeExpansion: true
3.3删除原有pvc
kubectl delete pvc -n -n namespace pvcName
3.4解除原有pv和pvc的绑定
kubectl edit pv -n namespace pvName #注意这里操作的是pv!!!!!
3.5创建新的pvc
kubectl apply -f pvc.yaml
4.重启应用服务
有关应用服务的配置我都写在了app.yaml中
kubectl replace --force -f app.yaml
5.验证是否成功
5.1 检查pv是否被绑定
kubectl get pv -n namespace pvName
5.2检查pvc是否绑定到我们需要的pv
kubectl get pvc -n namespace pvcName
5.3检查pods是否启动成功
kubectl get pods -n namespace podName
5.4检查service是否启动成功
kubectl get services -n namespace serviceName