Para rsync para um pod eu uso o seguinte auxiliar:
pod=$1;shift;kubectl exec -i $pod -- "$@"
Eu coloco isso em um arquivo chamado "rsync-helper.sh" e depois executo o rsync assim:
rsync -av --progress --stats -e './rsync-helper.sh' source-dir/ thePodName:/tmp/dest-dir
Se você quiser um script simples que envolva tudo isso, salve-o como krsync:
#!/bin/bash
if [ -z "$KRSYNC_STARTED" ]; then
export KRSYNC_STARTED=true
exec rsync --blocking-io --rsh "$0" $@
fi
# Running as --rsh
namespace=''
pod=$1
shift
# If use uses pod@namespace rsync passes as: {us} -l pod namespace ...
if [ "X$pod" = "X-l" ]; then
pod=$1
shift
namespace="-n $1"
shift
fi
exec kubectl $namespace exec -i $pod -- "$@"
Então você pode usar o krsync onde você normalmente rsync:
krsync -av --progress --stats src-dir/ pod:/dest-dir
Ou você pode definir o namespace:
krsync -av --progress --stats src-dir/ pod@namespace:/dest-dir
OBSERVAÇÃO: Você deve ter o executável do rsync na imagem do pod para que isso funcione.