V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fitme
V2EX  ›  Kubernetes

k8s 下 nfs-provisioner 迁移

  •  
  •   fitme · 15 小时 3 分钟前 · 414 次点击

    请教各位大佬, 我在本地环境有一个 k8s 集群,需要更换 nfs-server ,如何完成 pv/pvc 迁移?

    6 条回复    2025-09-11 17:02:33 +08:00
    jusk9527
        1
    jusk9527  
       15 小时 1 分钟前   ❤️ 1
    可以创建新的 pv/pvc 进行绑定
    vus520
        2
    vus520  
       12 小时 54 分钟前
    我理解哥们不想手动创建新的 pv/pvc 进行绑定,是不是想数据拷贝以后,直接修改 NFS 存储类的 IP 地址?
    fitme
        3
    fitme  
    OP
       12 小时 43 分钟前
    @vus520 对,但是好像修改不了,pv 创建后不支持修改 nfs 地址,还没搞懂这块。怎么搞比较简单快速
    vus520
        4
    vus520  
       12 小时 37 分钟前   ❤️ 1
    看你的业务复杂度,如果业务简单,可以重启集群的话,可以强制修改存储类的地址,或者直接改 etcd 中的地址,然后重启集群。
    我们的业务太复杂,没办法这么干,就批量复制了 pv/pvc 然后重新绑定,当然,这个过程是程序化的。
    feedcode
        5
    feedcode  
       10 小时 47 分钟前   ❤️ 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
    iStarBoy
        6
    iStarBoy  
       9 小时 59 分钟前
    我觉得这句话丢给 gpt 给的方案可以很详细 ( x
    我之前是停止服务手动创建新的 pv (同名) 然后复制数据进去的 反正 nfs 的数据都能挂载操作
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1021 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:02 · PVG 03:02 · LAX 12:02 · JFK 15:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.