k8s 下 nfs-provisioner 迁移 - V2EX
fitme
·
2025-09-11
·
via Kubernetes
这是一个创建于 276 天前的主题,其中的信息可能已经有所发展或是发生改变。
请教各位大佬, 我在本地环境有一个 k8s 集群,需要更换 nfs-server ,如何完成 pv/pvc 迁移?
 |
|
1
jusk9527 2025 年 9 月 11 日 1
可以创建新的 pv/pvc 进行绑定
|
 |
|
2
vus520 2025 年 9 月 11 日
我理解哥们不想手动创建新的 pv/pvc 进行绑定,是不是想数据拷贝以后,直接修改 NFS 存储类的 IP 地址?
|
 |
|
3
fitme 2025 年 9 月 11 日
@vus520 对,但是好像修改不了,pv 创建后不支持修改 nfs 地址,还没搞懂这块。怎么搞比较简单快速
|
 |
|
4
vus520 2025 年 9 月 11 日 1
看你的业务复杂度,如果业务简单,可以重启集群的话,可以强制修改存储类的地址,或者直接改 etcd 中的地址,然后重启集群。 我们的业务太复杂,没办法这么干,就批量复制了 pv/pvc 然后重新绑定,当然,这个过程是程序化的。
|
 |
|
5
feedcode 2025 年 9 月 11 日 1
删掉 PV 后重建,记得 spec.claimRef 保持和之前的一样,PVC 会重新 Bound while read share;do echo "check $share" kubectl get pv $share -o yaml > "$share-origin.yaml" ns=$(yq '.spec.claimRef.namespace' "$share-origin.yaml") pvc=$(yq '.spec.claimRef.name' "$share-origin.yaml") echo "$ns $pvc" if [ ! -f "all-pods-$ns.yaml" ] ;then kubectl get pods -n $ns -o yaml > "all-pods-$ns.yaml" fi podname=$(yq ".items[]|select(.spec.volumes[].persistentVolumeClaim.claimName==\"$pvc\")|.metadata.name" "all-pods-$ns.yaml") echo "pods $podname will be deleted" # patch pv kubectl patch pv $share -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}, "metadata":{"finalizers":null }}' --type=merge kubectl delete pv $share --wait=false sleep 5 kubectl delete pod -n $ns $podname sleep 10 kubectl get pv $share || echo deleted # recreate PV here sed -e "REPLACE-HERE" "$share-origin.yaml" >"$share-new.yaml" kubectl create -f "$share-new.yaml" done<pv-shares.txt
|
 |
|
6
iStarBoy 2025 年 9 月 11 日
我觉得这句话丢给 gpt 给的方案可以很详细 ( x 我之前是停止服务手动创建新的 pv (同名) 然后复制数据进去的 反正 nfs 的数据都能挂载操作
|
 |
|
7
dode 2025 年 9 月 12 日
换服务器可以立即,但是一定要换 IP 地址吗?
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。