Bird
Raised Fist0
Kubernetesdevops~20 mins

Desired state vs actual state reconciliation in Kubernetes - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Kubernetes Reconciliation Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
What is the main purpose of Kubernetes' reconciliation loop?

Kubernetes uses a reconciliation loop to manage resources. What does this loop do?

AIt only creates resources once and never checks their status again.
BIt continuously compares the desired state with the actual state and makes changes to match them.
CIt deletes all resources periodically to free up space.
DIt manually requires users to update resource states through commands.
Attempts:
2 left
💡 Hint

Think about how Kubernetes keeps your apps running as you want.

💻 Command Output
intermediate
2:00remaining
What is the output of 'kubectl get pods' after deleting a pod manually?

You manually delete a pod that is part of a Deployment. What will 'kubectl get pods' show shortly after?

Kubernetes
kubectl delete pod <pod-name>
kubectl get pods
AThe deleted pod remains in the list with status 'Terminating' forever.
BNo pods are running because the deleted pod is gone.
CA new pod with a different name is created to replace the deleted one.
DAn error message saying pods cannot be deleted manually.
Attempts:
2 left
💡 Hint

Think about how Deployments maintain the number of pods.

❓ Configuration
advanced
3:00remaining
Which YAML snippet correctly defines a desired state for a Deployment with 3 replicas?

Choose the YAML snippet that correctly sets a Deployment to have 3 replicas of an nginx container.

A
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
B
apiVersion: v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
C
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 'three'
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
D
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 3
  selector:
    app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
Attempts:
2 left
💡 Hint

Check apiVersion, kind, and selector format carefully.

❓ Troubleshoot
advanced
3:00remaining
Why does a Deployment never reach the desired number of ready pods?

You set replicas: 5 in your Deployment, but 'kubectl get pods' shows only 3 pods running and ready. What could cause this?

AThe pod template has an invalid image name causing pods to crash on start.
BThe Deployment controller does not support more than 3 replicas.
CThe cluster has no nodes available to schedule pods.
DThe Deployment spec is missing the replicas field.
Attempts:
2 left
💡 Hint

Check pod status and events for crash loops.

🔀 Workflow
expert
3:00remaining
What is the correct sequence of steps Kubernetes takes to reconcile a changed Deployment manifest?

Put these steps in the order Kubernetes performs them when you update a Deployment manifest to change replicas from 2 to 4.

A1,3,2,4
B2,1,3,4
C3,1,2,4
D1,2,3,4
Attempts:
2 left
💡 Hint

Think about how the update flows from manifest to running pods.

Practice

(1/5)
1. What does Kubernetes do when the actual state of a pod differs from the desired state?
easy
A. It changes the actual state to match the desired state automatically.
B. It deletes the pod without recreating it.
C. It ignores the difference and does nothing.
D. It sends an alert but does not change anything.

Solution

  1. Step 1: Understand desired vs actual state

    The desired state is what you want Kubernetes to have running, and the actual state is what is currently running.
  2. Step 2: Kubernetes reconciliation process

    Kubernetes continuously compares actual state to desired state and makes changes to fix any differences automatically.
  3. Final Answer:

    It changes the actual state to match the desired state automatically. -> Option A
  4. Quick Check:

    Reconciliation means fixing actual state to desired state [OK]
Hint: Kubernetes fixes differences automatically [OK]
Common Mistakes:
  • Thinking Kubernetes ignores differences
  • Believing Kubernetes only alerts without fixing
  • Assuming Kubernetes deletes pods without recreating
2. Which Kubernetes component is responsible for ensuring the actual state matches the desired state?
easy
A. kube-apiserver
B. kube-scheduler
C. etcd
D. kube-controller-manager

Solution

  1. Step 1: Identify the role of kube-controller-manager

    The kube-controller-manager runs controllers that watch the desired state and make changes to match the actual state.
  2. Step 2: Differentiate other components

    kube-apiserver handles API requests, kube-scheduler assigns pods to nodes, and etcd stores cluster data but does not reconcile states.
  3. Final Answer:

    kube-controller-manager -> Option D
  4. Quick Check:

    Controllers fix state differences [OK]
Hint: Controllers fix state differences [OK]
Common Mistakes:
  • Confusing scheduler with controller
  • Thinking apiserver reconciles state
  • Assuming etcd manages reconciliation
3. Given this YAML snippet for a Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: web
        image: nginx:1.19
If one pod crashes and stops running, what will Kubernetes do?
medium
A. Create a new pod to maintain 3 replicas.
B. Do nothing and keep 2 pods running.
C. Delete all pods and restart the deployment.
D. Scale down the deployment to 2 replicas.

Solution

  1. Step 1: Understand the desired replicas

    The Deployment specifies 3 replicas, so Kubernetes wants 3 pods running.
  2. Step 2: Reconciliation after pod crash

    If one pod crashes, Kubernetes detects the actual state has only 2 pods and creates a new pod to restore 3 replicas.
  3. Final Answer:

    Create a new pod to maintain 3 replicas. -> Option A
  4. Quick Check:

    Pods count fixed to desired replicas [OK]
Hint: Pods auto-recreated to match replicas [OK]
Common Mistakes:
  • Thinking Kubernetes ignores crashed pods
  • Assuming deployment restarts all pods
  • Believing deployment scales down automatically
4. You notice a Deployment is stuck with fewer pods than desired. Which of these is a likely cause preventing reconciliation?
medium
A. The kube-apiserver is running normally.
B. The image name in the container spec is correct.
C. The Deployment's selector labels do not match pod labels.
D. The desired replicas count is set to 3.

Solution

  1. Step 1: Check label selectors for matching pods

    If the Deployment's selector labels do not match pod labels, Kubernetes cannot track pods correctly, so reconciliation fails.
  2. Step 2: Understand other options

    Correct image name, running apiserver, and desired replicas do not prevent reconciliation by themselves.
  3. Final Answer:

    The Deployment's selector labels do not match pod labels. -> Option C
  4. Quick Check:

    Label mismatch blocks reconciliation [OK]
Hint: Selector and pod labels must match [OK]
Common Mistakes:
  • Ignoring label selector importance
  • Blaming image name for pod count issues
  • Assuming apiserver status causes pod count
5. You want to update a Deployment's container image from nginx:1.19 to nginx:1.21. After applying the change, you see some pods still run the old image. What explains this behavior in terms of desired vs actual state reconciliation?
hard
A. Kubernetes ignores image changes unless manually restarted.
B. Kubernetes gradually updates pods to match desired state using rolling updates.
C. Kubernetes cannot update pods without deleting the Deployment.
D. Kubernetes immediately deletes all old pods and creates new ones.

Solution

  1. Step 1: Understand rolling update strategy

    Kubernetes uses rolling updates to gradually replace old pods with new ones to avoid downtime.
  2. Step 2: Explain why old pods remain temporarily

    During rolling update, some pods run old image until replaced, so actual state temporarily differs from desired state.
  3. Final Answer:

    Kubernetes gradually updates pods to match desired state using rolling updates. -> Option B
  4. Quick Check:

    Rolling update means gradual pod replacement [OK]
Hint: Rolling updates replace pods gradually [OK]
Common Mistakes:
  • Expecting instant pod replacement
  • Thinking Deployment must be deleted to update
  • Believing Kubernetes ignores image changes
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