Executing multiple commands( or from a shell script) in a kubernetes pod

ahmed meraj picture ahmed meraj · Apr 19, 2017 · Viewed 35.8k times · Source

I'm writing a shell script which needs to login into the pod and execute a series of commands in a kubernetes pod.

below is my sample_script.sh

kubectl exec octavia-api-worker-pod-test -c octavia-api bash unset http_proxy https_proxy mv /usr/local/etc/octavia/octavia.conf /usr/local/etc/octavia/octavia.conf-orig /usr/local/bin/octavia-db-manage --config-file /usr/local/etc/octavia/octavia.conf upgrade head

After running this script, I'm not getting any output. Any help will be greatly appreciated

Answer

AhmetB - Google picture AhmetB - Google · Apr 19, 2017

Are you running all these commands as a single line command? First of all, there's no ; or && between those commands. So if you paste it as a multi-line script to your terminal, likely it will get executed locally.

Second, to tell bash to execute something, you need: bash -c "command".

Try running this:

$ kubectl exec POD_NAME -- bash -c "date && echo 1"

Wed Apr 19 19:29:25 UTC 2017
1

You can make it multiline like this:

$ kubectl exec POD_NAME -- bash -c "date && \
      echo 1 && \
      echo 2"