Search code examples
kuberneteskubernetes-pod

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


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


Solution

  • 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"