Sanath Rai
Sanath Rai

Reputation: 1

Do we have command to execute multiple arguments in kubernetes

I have a pod running in kubernetes and i need to run two commands in one line.

Say,

kubectl exec -it <pod name> -n <namespace > -- bash -c redis-cli

above command will open redis-cli

i want to run one more command after exec in one line ie info, i am trying below which is not working:

kubectl exec -it <pod name> -n <namespace > -- bash -c redis-cli -- info

Upvotes: 0

Views: 762

Answers (3)

Will R.O.F.
Will R.O.F.

Reputation: 4148

You have to put your command and all the parameters between apostrophes.

in your example it would be:

kubectl exec -it <pod_name> -n <namespace> -- bash -c 'redis-cli info'

From Bash manual: bash -c: If the -c option is present, then commands are read from the first non-option argument commaqnd_string.

Other option (which in my opinion is a better approach) is to get the output from the command with an instant pod, which creates, runs and deletes the pod right after that, like this:

kubectl run --namespace <YOUR_NAMESPACE> <TEMP_RANDOM_POD_NAME> --rm --tty -i --restart='Never' --env REDIS_PASSWORD=$REDIS_PASSWORD --image docker.io/bitnami/redis:5.0.7-debian-10-r0 -- bash -c 'redis-cli -h redis-master -a $REDIS_PASSWORD info'

in my case the password was stored in a envvar called $REDIS_PASSWORD and I'm connecting to a server in a pod called redis-master. I let it as I runned it to show that you can use as much parameters as needed.

POC:

user@minikube:~$ kubectl run --namespace default redis-1580466120-client --rm --tty -i --restart='Never' --env REDIS_PASSWORD=$REDIS_PASSWORD --image docker.io/bitnami/redis:5.0.7-debian-10-r0 -- bash -c 'redis-cli -h redis-master -a $REDIS_PASSWORD info'
 10:41:10.65 
 10:41:10.66 Welcome to the Bitnami redis container
 10:41:10.66 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-redis
 10:41:10.66 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-redis/issues
 10:41:10.67 Send us your feedback at [email protected]
 10:41:10.67 

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Server
redis_version:5.0.7
redis_git_sha1:00000000
redis_git_dirty:0
...
{{{suppressed output}}}
...
# CPU
used_cpu_sys:1.622434
used_cpu_user:1.313600
used_cpu_sys_children:0.013942
used_cpu_user_children:0.008014

# Cluster
cluster_enabled:0

# Keyspace
pod "redis-1580466120-client" deleted

Upvotes: 1

piratefache
piratefache

Reputation: 1368

Did you try to link your commands using && ?

kubernetes exec -it <pod name> -n <namespace > -- bash -c redis-cli && info

Upvotes: 0

BMW
BMW

Reputation: 45343

Not get your question, do you want to get the information from redis-cli?

kubernetes exec -it <pod name> -n <namespace > -- bash -c 'redis-cli info'

Upvotes: 0

Related Questions