Bird
Raised Fist0
Kubernetesdevops~5 mins

kubectl exec for container access in Kubernetes - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the command kubectl exec do?
It lets you run commands inside a running container in a Kubernetes pod, like opening a terminal session or running a script.
Click to reveal answer
beginner
How do you open an interactive shell inside a container using kubectl exec?
Use kubectl exec -it <pod-name> -- /bin/sh or /bin/bash to start an interactive shell session.
Click to reveal answer
beginner
What does the -i and -t flags mean in kubectl exec -it?
-i keeps the input open (interactive), and -t allocates a terminal, so you can type commands like in a normal shell.
Click to reveal answer
intermediate
How do you specify which container to exec into if a pod has multiple containers?
Use the -c <container-name> option to choose the container inside the pod.
Click to reveal answer
beginner
What happens if you run kubectl exec <pod-name> -- ls /?
It runs the ls / command inside the container, listing the root directory contents without opening an interactive shell.
Click to reveal answer
Which command opens an interactive bash shell inside a pod named 'webapp'?
Akubectl shell webapp
Bkubectl exec -it webapp -- /bin/bash
Ckubectl get pods webapp --shell
Dkubectl run webapp -- /bin/bash
What does the -- signify in the command kubectl exec pod -- ls?
ASpecifies the pod namespace
BEnds the command
CSeparates kubectl options from the command to run inside the container
DIndicates the container name
If a pod has two containers, how do you run a command in the second container?
Akubectl exec pod -c container2 -- command
Bkubectl exec pod --container container2 command
Ckubectl exec pod container2 -- command
Dkubectl exec pod --container=container2 command
What is the purpose of the -t flag in kubectl exec -it?
AAllocates a pseudo-TTY (terminal)
BRuns the command in the background
CSpecifies the target pod
DTerminates the session after command
Which command lists files in the root directory of a pod named 'db' without opening a shell?
Akubectl exec db ls /
Bkubectl exec -it db -- ls /
Ckubectl exec db -c ls /
Dkubectl exec db -- ls /
Explain how to use kubectl exec to open an interactive shell inside a container.
Think about how to connect to a container like opening a terminal.
You got /5 concepts.
    Describe the difference between running a command with kubectl exec interactively and non-interactively.
    Consider when you want to type commands versus just get results.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the kubectl exec command do in Kubernetes?
      easy
      A. Lists all running pods in the cluster
      B. Deletes a pod from the cluster
      C. Creates a new pod in the cluster
      D. Runs a command inside a running container in a pod

      Solution

      1. Step 1: Understand the purpose of kubectl exec

        The kubectl exec command is used to run commands inside a container that is already running inside a pod.
      2. Step 2: Compare with other kubectl commands

        Deleting pods uses kubectl delete pod, creating pods uses kubectl create, and listing pods uses kubectl get pods. These are different commands.
      3. Final Answer:

        Runs a command inside a running container in a pod -> Option D
      4. Quick Check:

        kubectl exec = run command inside container [OK]
      Hint: kubectl exec runs commands inside containers [OK]
      Common Mistakes:
      • Confusing exec with pod creation or deletion
      • Thinking exec lists pods
      • Using exec without specifying pod
      2. Which of the following is the correct syntax to start an interactive shell inside a container named web in pod frontend-pod?
      easy
      A. kubectl exec -it frontend-pod -c web -- /bin/bash
      B. kubectl exec frontend-pod -c web -it /bin/bash
      C. kubectl exec -c web frontend-pod /bin/bash -it
      D. kubectl exec frontend-pod /bin/bash -c web -it

      Solution

      1. Step 1: Recall correct kubectl exec syntax

        The correct syntax for interactive shell is: kubectl exec -it POD_NAME -c CONTAINER_NAME -- /bin/bash. The -it flags come before the pod name, and -- separates command from options.
      2. Step 2: Analyze each option

        kubectl exec -it frontend-pod -c web -- /bin/bash matches the correct syntax exactly. The other options have misplaced flags or arguments causing syntax errors.
      3. Final Answer:

        kubectl exec -it frontend-pod -c web -- /bin/bash -> Option A
      4. Quick Check:

        Correct flag order and -- separator = kubectl exec -it frontend-pod -c web -- /bin/bash [OK]
      Hint: Use -it before pod name and -- before command [OK]
      Common Mistakes:
      • Placing -it after pod name
      • Omitting -- before command
      • Misordering container flag -c
      3. What will be the output of this command if the pod db-pod has a container named mysql running and you execute:
      kubectl exec db-pod -c mysql -- ls /var/lib/mysql?
      medium
      A. Lists files and directories inside /var/lib/mysql in the mysql container
      B. Shows an error: container mysql not found
      C. Lists files in the host machine's /var/lib/mysql directory
      D. Starts an interactive shell inside the mysql container

      Solution

      1. Step 1: Understand the command

        The command runs ls /var/lib/mysql inside the mysql container of the db-pod pod. It lists files in that directory inside the container.
      2. Step 2: Eliminate wrong options

        Shows an error: container mysql not found is wrong because the container exists. Lists files in the host machine's /var/lib/mysql directory is wrong because kubectl exec runs inside container, not host. Starts an interactive shell inside the mysql container is wrong because no shell is started; only ls runs.
      3. Final Answer:

        Lists files and directories inside /var/lib/mysql in the mysql container -> Option A
      4. Quick Check:

        kubectl exec runs command inside container = Lists files and directories inside /var/lib/mysql in the mysql container [OK]
      Hint: kubectl exec runs command inside container, not host [OK]
      Common Mistakes:
      • Thinking command runs on host machine
      • Confusing exec with shell start
      • Assuming container does not exist
      4. You run kubectl exec -it mypod -- /bin/sh but get the error: error: a container name must be specified for pod mypod, choose one of: [app backend]. What is the fix?
      medium
      A. Restart the pod before running exec
      B. Add -c app or -c backend to specify the container
      C. Remove -it flags to fix the error
      D. Use kubectl exec mypod /bin/sh without flags

      Solution

      1. Step 1: Understand the error message

        The error says multiple containers exist in pod mypod, so you must specify which container to exec into using -c.
      2. Step 2: Apply the fix

        Add -c app or -c backend to the command to specify the container name explicitly.
      3. Final Answer:

        Add -c app or -c backend to specify the container -> Option B
      4. Quick Check:

        Multiple containers need -c flag = Add -c app or -c backend to specify the container [OK]
      Hint: Specify container with -c when pod has multiple containers [OK]
      Common Mistakes:
      • Ignoring container name when multiple containers exist
      • Removing -it flags unnecessarily
      • Restarting pod without reason
      5. You want to run an interactive bash shell inside the container named worker in pod job-pod. The pod has two containers: worker and logger. Which command correctly achieves this?
      hard
      A. kubectl exec job-pod -c worker -it /bin/bash
      B. kubectl exec -it job-pod /bin/bash -c worker
      C. kubectl exec -it job-pod -c worker -- /bin/bash
      D. kubectl exec job-pod -it -c worker /bin/bash

      Solution

      1. Step 1: Recall correct syntax for interactive exec with container

        The correct syntax is kubectl exec -it POD_NAME -c CONTAINER_NAME -- /bin/bash. The -it flags come before pod name, -c specifies container, and -- separates command.
      2. Step 2: Check options for correct order and flags

        kubectl exec -it job-pod -c worker -- /bin/bash matches the correct syntax exactly. The other options have misplaced flags or missing --, causing errors.
      3. Final Answer:

        kubectl exec -it job-pod -c worker -- /bin/bash -> Option C
      4. Quick Check:

        Correct flag order and -- separator = kubectl exec -it job-pod -c worker -- /bin/bash [OK]
      Hint: Use -it before pod, -c container, and -- before command [OK]
      Common Mistakes:
      • Misordering flags -it and -c
      • Omitting -- before command
      • Not specifying container when multiple exist
      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