Bird
Raised Fist0
Kubernetesdevops~5 mins

Executing commands in Pods in Kubernetes - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes you need to look inside a running container to check logs, fix issues, or run quick commands. Kubernetes lets you run commands directly inside your Pods without stopping them.
When you want to check the contents of a file inside a running container.
When you need to debug an application by running shell commands inside the Pod.
When you want to check environment variables or configuration inside the container.
When you want to run a quick database query inside a Pod running a database.
When you want to test connectivity or network tools inside the Pod.
Commands
This command lists all running Pods in the current namespace so you can find the Pod name to run commands inside.
Terminal
kubectl get pods
Expected OutputExpected
NAME READY STATUS RESTARTS AGE example-pod 1/1 Running 0 10m
This runs the 'ls /app' command inside the 'example-pod' container to list files in the /app directory.
Terminal
kubectl exec example-pod -- ls /app
Expected OutputExpected
main.py config.yaml README.md
→
-- - Separates kubectl command options from the command to run inside the Pod
This opens an interactive shell inside the 'example-pod' container so you can run multiple commands manually.
Terminal
kubectl exec -it example-pod -- /bin/sh
Expected OutputExpected
/ #
→
-i - Keep stdin open for interactive commands
→
-t - Allocate a terminal for the interactive session
This exits the interactive shell inside the Pod and returns you to your local terminal.
Terminal
exit
Expected OutputExpected
No output (command runs silently)
Key Concept

If you remember nothing else from this pattern, remember: use 'kubectl exec' with '--' to run commands inside a Pod safely.

Common Mistakes
Running 'kubectl exec example-pod ls /app' without '--' before the command
kubectl treats 'ls /app' as its own arguments, causing errors or unexpected behavior.
Always include '--' before the command to run inside the Pod, like 'kubectl exec example-pod -- ls /app'.
Trying to run interactive shell without '-it' flags
Without '-it', you cannot interact with the shell, so commands may hang or fail.
Use 'kubectl exec -it example-pod -- /bin/sh' to open an interactive shell.
Summary
Use 'kubectl get pods' to find the Pod name you want to access.
Run 'kubectl exec POD_NAME -- COMMAND' to execute a command inside the Pod.
Add '-it' flags to run an interactive shell inside the Pod.
Use '--' to separate kubectl options from the command inside the Pod.

Practice

(1/5)
1. What is the primary purpose of the kubectl exec command in Kubernetes?
easy
A. To list all Pods in a namespace
B. To create a new Pod
C. To run commands inside a running Pod
D. To delete a Pod

Solution

  1. Step 1: Understand the function of kubectl exec

    The kubectl exec command is used to execute commands inside a running Pod's container.
  2. Step 2: Differentiate from other commands

    Creating, deleting, or listing Pods are done with other commands like kubectl create, kubectl delete, and kubectl get.
  3. Final Answer:

    To run commands inside a running Pod -> Option C
  4. Quick Check:

    kubectl exec runs commands inside Pods [OK]
Hint: Remember: exec means execute inside Pod [OK]
Common Mistakes:
  • Confusing exec with create or delete commands
  • Thinking exec lists Pods
  • Using exec to start new Pods
2. Which of the following is the correct syntax to run the command ls /app inside a Pod named web-pod?
easy
A. kubectl exec web-pod ls /app
B. kubectl exec web-pod -- ls /app
C. kubectl exec -- web-pod ls /app
D. kubectl exec -c web-pod ls /app

Solution

  1. Step 1: Identify correct command separator

    The -- separates the Pod name from the command to run inside the Pod.
  2. Step 2: Apply syntax rules

    The correct syntax is kubectl exec [pod-name] -- [command], so kubectl exec web-pod -- ls /app is correct.
  3. Final Answer:

    kubectl exec web-pod -- ls /app -> Option B
  4. Quick Check:

    Use -- before command [OK]
Hint: Use double dash (--) before command [OK]
Common Mistakes:
  • Omitting the -- separator
  • Placing -- before Pod name
  • Using -c without container name
3. Given a Pod named db-pod with two containers: mysql and backup, what is the output of this command?
kubectl exec db-pod -c backup -- echo Hello
medium
A. Pod not found
B. Error: container name required
C. No such container: backup
D. Hello

Solution

  1. Step 1: Understand the command components

    The command runs echo Hello inside the backup container of the db-pod Pod.
  2. Step 2: Predict the command output

    Since the container exists and the command is valid, it outputs Hello.
  3. Final Answer:

    Hello -> Option D
  4. Quick Check:

    Correct container specified with -c outputs command result [OK]
Hint: Use -c to specify container, output is command result [OK]
Common Mistakes:
  • Not specifying container when multiple exist
  • Using wrong container name
  • Expecting Pod name as container
4. You run this command but get an error:
kubectl exec mypod ls /data

What is the most likely cause?
medium
A. Missing -- before the command
B. Pod mypod does not exist
C. The ls command is invalid
D. You need to specify the container with -c

Solution

  1. Step 1: Check command syntax

    The command is missing the -- separator between Pod name and command.
  2. Step 2: Understand effect of missing --

    Without --, kubectl treats ls as a Pod or option, causing an error.
  3. Final Answer:

    Missing -- before the command -> Option A
  4. Quick Check:

    Always use -- before command [OK]
Hint: Always put -- before command to avoid errors [OK]
Common Mistakes:
  • Forgetting the -- separator
  • Assuming container must be specified when only one exists
  • Thinking command is invalid
5. You want to run cat /etc/config inside the app-container of Pod multi-pod which has three containers. Which command is correct?
hard
A. kubectl exec multi-pod -c app-container -- cat /etc/config
B. kubectl exec multi-pod cat /etc/config -c app-container
C. kubectl exec -c app-container multi-pod cat /etc/config
D. kubectl exec multi-pod -- -c app-container cat /etc/config

Solution

  1. Step 1: Identify correct order of options

    The -c option specifying the container must come after the Pod name and before the -- separator.
  2. Step 2: Confirm command separator usage

    The -- must separate the Pod/container specification from the command to run.
  3. Step 3: Validate each option

    kubectl exec multi-pod -c app-container -- cat /etc/config correctly places -c app-container before -- and then the command cat /etc/config.
  4. Final Answer:

    kubectl exec multi-pod -c app-container -- cat /etc/config -> Option A
  5. Quick Check:

    -c before --, then command [OK]
Hint: Put -c before --, then command [OK]
Common Mistakes:
  • Placing -c after the command
  • Putting -- before -c
  • Omitting -- separator
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard