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

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


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 20171

You can make it multiline like this:

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


The following should work

kubectl -it exec podname -- bash -c "ls && ls"

bin   dev   etc   home  proc  root  run   sys   tmp   usr   var bin  dev   etc   home  proc  root  run   sys   tmp   usr   var

If above command doesn't work then try too replace bash with one of the following /bin/bash, sh or /bin/sh


-t can solve your task

For example, I run here few cmd:

kubectl get pods |grep nginx|cut -f1 -d\  |\while read pod; \ do echo "$pod writing:";\  kubectl exec -t $pod -- bash -c \   "dd if=/dev/zero of=/feeds/test.bin bs=260K count=4 2>&1|\    grep copi |cut -d, -f4; \    a=$SECONDS; echo -ne 'reading:'; cat /feeds/test.bin >/dev/null ; \    let a=SECONDS-a ; \    echo $a sec"done

p.s. your example will be:

kubectl exec -t octavia-api-worker-pod-test -c octavia-api -- bash -c "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"