K3S集群升级后,有状态应用的Persistent Volume数据如何保留?
K3S集群升级时保留PV/PVC数据的方法
当然可以保留输入数据,K3S升级本身不会主动清除PV或PVC里的内容,只要做好以下几点,就能确保数据安全:
确认PV的回收策略
先检查你的PV回收策略,避免因意外情况触发数据删除:
执行命令查看策略:kubectl get pv <你的PV名称> -o yaml | grep persistentVolumeReclaimPolicy
确保策略是Retain(保留),如果是Delete(删除),建议编辑PV修改:kubectl edit pv <你的PV名称>,把persistentVolumeReclaimPolicy字段改成Retain。这个设置能保证即使PVC被误删,PV和数据也不会被自动清理。升级前备份数据(必做)
不管什么场景,升级前备份数据都是最稳妥的操作:- 本地磁盘存储:用
tar -czf backup.tar.gz /path/to/pv/mount打包数据,或者rsync同步到其他节点 - NFS/共享存储:直接复制对应目录到备份位置
- 云存储卷:使用云厂商提供的快照功能创建卷快照
- 本地磁盘存储:用
升级过程中的注意事项
- K3S升级时worker节点会重启kubelet,Pod会被重新调度,但只要PVC处于
Bound状态,新调度的Pod会自动重新挂载对应的PV,数据不会丢失 - 升级期间不要手动删除PVC或PV,否则可能触发回收策略导致数据丢失
- 如果用的是Local PV,要确保Pod能调度到原来的节点(节点正常运行的话),或者把对应磁盘重新挂载到新调度的节点,否则Pod会处于Pending状态,但数据本身依然保存在磁盘上,不会丢失
- K3S升级时worker节点会重启kubelet,Pod会被重新调度,但只要PVC处于
升级后的验证
升级完成后做简单验证:- 检查PVC状态:
kubectl get pvc,确认状态是Bound - 检查Pod运行状态:
kubectl get pods,确认应用Pod正常运行 - 进入Pod查看数据:
kubectl exec <你的Pod名称> -- ls /挂载路径,确认输入数据完整
- 检查PVC状态:
内容的提问来源于stack exchange,提问作者Lipika Sukhija
相关产品推荐
相关产品推荐

