过去 3 年我们一直在 centos7 上运行 kubernetes,最近我们的 NFS 存储设备迁移到了不同的 VLAN,并且 IP 地址发生了变化,现在所有 pod 都无法正常运行并等待 PV。
我的问题是,在 PV 和所有 PVC 中,用新的 NFS 服务器 IP 替换旧的 NFS 服务器 IP 而不丢失任何数据的最佳方法是什么?
答案1
首先,找到你的 PV 的名称:
kubectl get pv
然后获取你的 PV 的 YAML:
kubectl get pv <name> -o yaml > pv.yaml
现在编辑 NFS 服务器地址:
nfs:
server: new.server.address.example
path: "/exported/path/example"
最后,应用你的更改:
kubectl apply -f pv.yaml
假设新的 NFS 服务器可以访问并且 Kubernetes 可以与其通信,您的 pod 就应该开始启动。
答案2
如果您的 pv.yaml 使用了主机名,那么如何将 ip /主机名组合手动插入到您的 /etc/hosts 文件中呢?
另一种解决方法可能是创建一个具有新名称的新 PV 和 PVC,并更改您的 pod 配置以请求与您的 PV 匹配的新 PVC。只需确保保留数据spec.persistentVolumeReclaimPolicy: Retain
特别是因为 pod 已经关闭了...本质上只是创建一个新的 pod(或编辑当前的 pod)来使用旧数据访问新的 PV?
我尚未验证此过程不会删除您的数据...