Home > database >  grep for pods and select each result and pass a command in loop
grep for pods and select each result and pass a command in loop

Time:07-16

I have few pods running in my kubernetes cluster. I am developing a shell script and I want to grep for few pods and want to select each pod from the grep result to execute a command. Lets say I grep few pods by command :

kubectl get pods | grep test

the results are:

Test-0

Test-1

Test-2

From the result, I want to select each pod and execute a command for it in a loop.

for example:

for first pod:

kubectl exec -it Test-0 -- mysqldump.......

after finishing the first pod, it has to process the second pod and so on

CodePudding user response:

for pod in $(kubectl get pod -oname |grep -i Test ); do
  kubectl exec "$pod" -- ls -ltr ;
done

Replace ls -ltr with mysqldump .....

CodePudding user response:

Get pods name and then use "for" to execute command in each pod

#!/bin/bash

pods=$(kubectl get pods | awk '{print $2}' | grep -i test)

for i in $pods
do
  kubectl exec -it $i -- echo "test"
done

CodePudding user response:

Select your target pods using labels is less error prone and can do multiple matching:

kubectl get pods --selector <key>=<value>,<key>=<value> --namespace <name> -oname | xargs -I{} kubectl exec -it {} --namespace <name> -- mysqldump ...
  • Related