Bird
Raised Fist0
Kubernetesdevops~30 mins

kubectl exec for container access in Kubernetes - Mini Project: Build & Apply

Choose your learning style10 modes available
Using kubectl exec to Access Containers
📖 Scenario: You are managing a Kubernetes cluster with a running pod. Sometimes you need to access the container inside the pod to check logs, run commands, or debug issues.This project will teach you how to use kubectl exec to access a container inside a pod.
🎯 Goal: Learn how to use kubectl exec to run commands inside a container in a Kubernetes pod.
📋 What You'll Learn
A Kubernetes cluster with kubectl configured
A pod named myapp-pod running with a container named myapp-container
Basic command line knowledge
💡 Why This Matters
🌍 Real World
Accessing containers inside pods is a common task for debugging, inspecting logs, or running maintenance commands in Kubernetes environments.
💼 Career
Knowing how to use <code>kubectl exec</code> is essential for Kubernetes administrators, DevOps engineers, and developers working with containerized applications.
Progress0 / 4 steps
1
Create a pod manifest file
Create a file named myapp-pod.yaml with a pod definition that has the pod name myapp-pod and a container named myapp-container using the image nginx.
Kubernetes
Hint

Use the apiVersion as v1, kind as Pod, and specify metadata.name and spec.containers with the correct names and image.

2
Apply the pod manifest to create the pod
Use the command kubectl apply -f myapp-pod.yaml to create the pod named myapp-pod in the cluster.
Kubernetes
Hint

Use kubectl apply -f myapp-pod.yaml to create the pod from the manifest file.

3
Use kubectl exec to run a command inside the container
Use kubectl exec with the pod name myapp-pod and container name myapp-container to run the command ls /usr/share/nginx/html inside the container.
Kubernetes
Hint

Use kubectl exec <pod-name> -c <container-name> -- <command> format to run commands inside a container.

4
Access an interactive shell inside the container
Use kubectl exec with the pod name myapp-pod and container name myapp-container to start an interactive bash shell inside the container. Use the -it flags and the command /bin/bash.
Kubernetes
Hint

Use kubectl exec -it <pod-name> -c <container-name> -- /bin/bash to open an interactive shell.

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