Bird
Raised Fist0
Microservicessystem_design~20 mins

Kubernetes basics review in Microservices - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Kubernetes Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Kubernetes Pod Status Check
What is the output of the command kubectl get pods immediately after creating a Pod with an invalid image name?
Microservices
kubectl run invalid-pod --image=nonexistentimage12345 --restart=Never
kubectl get pods
A
NAME          READY   STATUS             RESTARTS   AGE
invalid-pod   0/1     ImagePullBackOff   0          10s
B
NAME          READY   STATUS    RESTARTS   AGE
invalid-pod   1/1     Running   0          10s
CError from server (NotFound): pods "invalid-pod" not found
D
NAME          READY   STATUS    RESTARTS   AGE
invalid-pod   0/1     Completed 0          10s
Attempts:
2 left
💡 Hint
Think about what happens when Kubernetes cannot pull the container image.
🧠 Conceptual
intermediate
1:30remaining
Kubernetes Service Types
Which Kubernetes Service type exposes the service on a cluster-internal IP only, making it reachable only within the cluster?
AExternalName
BLoadBalancer
CNodePort
DClusterIP
Attempts:
2 left
💡 Hint
Think about which service type does not expose ports outside the cluster.
Troubleshoot
advanced
2:00remaining
Debugging Kubernetes Deployment Rollout Failure
You deployed a new version of your app using a Deployment, but the rollout is stuck and pods are not becoming ready. Which kubectl command helps you see detailed rollout status and errors?
Akubectl describe deployment <deployment-name>
Bkubectl rollout status deployment/<deployment-name>
Ckubectl logs deployment/<deployment-name>
Dkubectl get pods --watch
Attempts:
2 left
💡 Hint
Look for a command that specifically tracks rollout progress.
🔀 Workflow
advanced
2:30remaining
Kubernetes ConfigMap Usage
You want to update a ConfigMap used by a running Pod without restarting the Pod. Which approach allows the Pod to see the updated ConfigMap data automatically?
AMount the ConfigMap as a volume inside the Pod
BPass ConfigMap data as environment variables to the Pod
CUse kubectl exec to manually update files inside the Pod
DDelete and recreate the Pod after updating the ConfigMap
Attempts:
2 left
💡 Hint
Think about how Kubernetes handles ConfigMap volumes and environment variables.
Best Practice
expert
3:00remaining
Kubernetes Resource Limits and Requests
What is the main reason to set both resource requests and limits for containers in a Kubernetes Pod?
ATo guarantee the container gets exactly the requested resources at all times
BTo ensure the container never uses more CPU or memory than requested
CTo allow Kubernetes scheduler to place Pods efficiently and prevent resource overuse
DTo automatically restart the Pod if it exceeds resource usage
Attempts:
2 left
💡 Hint
Consider how Kubernetes uses requests and limits differently for scheduling and runtime.

Practice

(1/5)
1. What is a pod in Kubernetes?
easy
A. A command-line tool to manage Kubernetes
B. The smallest unit that runs one or more containers together
C. A configuration file format used in Kubernetes
D. A network policy to control traffic

Solution

  1. Step 1: Understand Kubernetes resource types

    Kubernetes groups containers into pods to run them together on the same host.
  2. Step 2: Identify the role of a pod

    A pod is the smallest deployable unit that can contain one or more containers sharing resources.
  3. Final Answer:

    The smallest unit that runs one or more containers together -> Option B
  4. Quick Check:

    Pod = smallest container group [OK]
Hint: Pods group containers; smallest deployable unit [OK]
Common Mistakes:
  • Confusing pods with kubectl tool
  • Thinking pods are config files
  • Mixing pods with network policies
2. Which command correctly lists all pods in the default namespace?
easy
A. kubectl get pods
B. kubectl list pods
C. kubectl show pods
D. kubectl describe pods all

Solution

  1. Step 1: Recall kubectl commands for listing resources

    The standard command to list pods is kubectl get pods.
  2. Step 2: Check other options for correctness

    kubectl list pods and kubectl show pods are invalid commands; kubectl describe pods all is incorrect syntax.
  3. Final Answer:

    kubectl get pods -> Option A
  4. Quick Check:

    List pods = kubectl get pods [OK]
Hint: Use 'kubectl get pods' to list pods [OK]
Common Mistakes:
  • Using 'list' or 'show' instead of 'get'
  • Adding unnecessary arguments like 'all'
  • Confusing describe with get
3. Given this YAML snippet for a pod:
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: nginx:latest
    ports:
    - containerPort: 80
What will kubectl get pods myapp-pod show after creation?
medium
A. NAME READY STATUS RESTARTS AGE myapp-pod 1/1 Completed 0 0s
B. Error: pod not found
C. NAME READY STATUS RESTARTS AGE myapp-pod 0/1 Pending 0 0s
D. NAME READY STATUS RESTARTS AGE myapp-pod 1/1 Running 0 0s

Solution

  1. Step 1: Understand pod creation from YAML

    The YAML defines a pod with one container running nginx, exposing port 80.
  2. Step 2: Predict pod status after creation

    Immediately after creation, the pod should be running with 1 container ready, so status is Running and READY is 1/1.
  3. Final Answer:

    NAME READY STATUS RESTARTS AGE myapp-pod 1/1 Running 0 0s -> Option D
  4. Quick Check:

    Pod created and running = READY 1/1 Running [OK]
Hint: New pod with valid image shows READY 1/1 Running [OK]
Common Mistakes:
  • Expecting Pending status without reason
  • Confusing Completed with Running
  • Assuming pod not found immediately after creation
4. You run kubectl apply -f pod.yaml but get an error: "error: unable to recognize \"pod.yaml\": no matches for kind \"Pod\" in version \"v2\"". What is the likely fix?
medium
A. Delete the pod.yaml and recreate it
B. Rename the file to pod.yml
C. Change apiVersion from v2 to v1 in pod.yaml
D. Run the command with sudo

Solution

  1. Step 1: Analyze the error message

    The error says no matches for kind "Pod" in version "v2", meaning the apiVersion is invalid.
  2. Step 2: Correct the apiVersion in YAML

    The correct apiVersion for Pod is "v1", so changing from "v2" to "v1" fixes the issue.
  3. Final Answer:

    Change apiVersion from v2 to v1 in pod.yaml -> Option C
  4. Quick Check:

    apiVersion must be valid (v1 for Pod) [OK]
Hint: Check apiVersion spelling and value in YAML [OK]
Common Mistakes:
  • Changing file extension instead of apiVersion
  • Running with sudo unnecessarily
  • Deleting file without fixing content
5. You want to update a running pod's container image from nginx:1.19 to nginx:1.21 without downtime. Which Kubernetes resource and method should you use?
hard
A. Create a Deployment and update its image with kubectl set image
B. Directly edit the pod with kubectl edit pod to change the image
C. Delete the pod and create a new one with the new image
D. Use kubectl scale pod to increase replicas

Solution

  1. Step 1: Understand pod immutability and updates

    Pods are immutable; you cannot update container images directly on running pods without recreating them.
  2. Step 2: Use Deployment for zero downtime updates

    Deployments manage pods and allow rolling updates to change images without downtime using kubectl set image.
  3. Final Answer:

    Create a Deployment and update its image with kubectl set image -> Option A
  4. Quick Check:

    Use Deployment + set image for smooth updates [OK]
Hint: Use Deployment and set image for zero downtime update [OK]
Common Mistakes:
  • Trying to edit pod image directly
  • Deleting pod causes downtime
  • Scaling pod is invalid command