GKE将pv迁移到同一GCloud项目中的一个新集群



我想在同一个谷歌项目中将现有的PVC/PV移动到一个新的GKE集群。有人能给我一个提示吗?

提前感谢!

在新旧GKE的相同区域的情况下,一种可能的方法是创建PVC&新GKE中的PV作为从具有CCD_ 1移除的旧GKE的拷贝。以下是我用来复制的未优化bash片段

SRC=src_k8s_context
DST=dst_k8s_context
# copy NS
kubectl --context $SRC get ns -o name|cut -d '/' -f 2|xargs -n1 kubectl --context $DST create ns
# copy PV
for PV in $(kubectl --context $SRC get pv -o name|cut -d '/' -f 2); do kubectl --context $SRC get pv $PV -o yaml --export|kubectl --context $DST create -f -;done
# copy PVC
tmp=$IFS;IFS=$'n';for a in $(kubectl --context $SRC get pvc -A|tail -n +2|awk '{print "NS="$1" PVC="$2}');do eval $a; kubectl --context $SRC --namespace $NS get pvc $PVC -o yaml --export | kubectl --context $DST --namespace $NS create -f -;done; IFS=$tmp
# stop all required pods in old GKE, my case is StatefulSet's in all namespaces
for NS in $(kubectl --context $SRC get ns -o name|cut -d '/' -f 2); do kubectl --context $SRC -n $NS scale statefulset --all --replicas=0;done
# cleanup PV's in a new GKE from links to old GKE PVC
for PV in $(kubectl --context $DST get pv -o name|cut -d '/' -f 2); do kubectl --context $DST patch pv $PV  --type json   -p='[{"op": "remove", "path": "/spec/claimRef"}]';done

当你的旧集群和新集群位于不同的地区时,使用Velero,正如前面提到的。

Valero为您提供了备份和恢复Kubernetes集群资源和持久卷的工具。您可以使用云提供商或在本地运行Velero。

如果您试图在新的gke集群上使用计算引擎上预先存在的磁盘,请查看此文档。它包含一个yaml文件的示例,您可能会发现它对实现迁移很有帮助。

最新更新