If the answer is yes, then keep reading, in the past few days one of my clients ask me to migrate the Kubernetes Cluster from GKE to a different Cloud provider as an unmanaged cluster, I believe the most difficult and time consuming task is to migrate the data from the GKE cluster to a unmanaged cluster, so I decided to use Longhorn as part of my solution to the problem but in the GKE cluster we didn’t use Longhorn as a result the Persistent volumes was the gcp native storageclass (kubernetes.io/gce-pd) after googling the problem I have decided to use Rsync to copy the data between pvs. So the approach I have followed is the following
- I provision the respective pvc/pv with storageclass longhorn.
- I have build a simple rsync docker image.
- I have deployed a simple pod to copy the data from the original pvc to the new pvc.
cat << EOF | k apply -f-
apiVersion: v1
kind: Pod
metadata:
name: migrate-pv-1
namespace: default
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- "<nodename>"
containers:
- command:
- sh
- -c
- |
set -x
n=0
rc=1
retries=10
attempts=$((retries+1))
period=5
while [[ $n -le $retries ]]
do
rsync -av --info=progress2,misc0,flist0 --no-inc-recursive -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=5" -z /source// /dest// && rc=0 && break
n=$((n+1))
echo "rsync attempt $n/$attempts failed, waiting $period seconds before trying again"
sleep $period
done
if [[ $rc -ne 0 ]]; then
echo "rsync job failed after $retries retries"
fi
exit $rc
image: <registry>/rsync-image:v1
name: rsync
volumeMounts:
- mountPath: /source
name: vol-0
readOnly: true
- mountPath: /dest
name: vol-1
restartPolicy: Never
volumes:
- name: vol-0
persistentVolumeClaim:
claimName: data-minio-distributed-0
readOnly: true
- name: vol-1
persistentVolumeClaim:
claimName: minio-distributed-0
EOF
Another option is to use the folowing awesome project https://github.com/utkuozdemir/pv-migrate
Thank you.
Top comments (0)