I need to rsync a file tree to a specific pod in a kubernetes cluster. It seems it should be possible if only one can convince rsync that kubectl acts sort of like rsh. Something like:
rsync --rsh='kubectl exec -i podname -- ' -r foo x:/tmp
… except that this runs into problems with x since rsync assumes a hostname is needed:
exec: "x": executable file not found in $PATH
I can not seem to find a method to help rsync construct the rsh command. Is there a way to do this? Or some other method by which relatively efficient file transfer can be achieved over a pipe?
(I am aware of gcloud compute copy-files
, but it can only be used onto the node?)
Best Answer
To rsync to a pod I use the following helper:
I put this in a file called "rsync-helper.sh" and then run the rsync like this:
If you'd like a simple script that wraps this all up save this as krsync:
Then you can use krsync where you would normally rsync:
Or you can set the namespace:
NOTE: You must have rsync executable in the pod image for this to work.