DOP-C02 Resilient Cloud Solutions Practice Question
A company runs a containerized microservices application on Amazon EKS. The application includes a critical service that processes real-time financial transactions. This service must be highly available and resilient to node failures. The current setup uses a Deployment with 3 replicas and a ClusterIP service. During a recent node failure, the application experienced a brief period of unavailability. Which action should the DevOps engineer take to improve resilience without changing the underlying infrastructure?
⚠ Common exam trap
Test-takers frequently confuse scaling (HPA or more replicas) with resilience, failing to realize that without proper pod distribution and disruption budgets, scaling alone cannot prevent downtime from node failures.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
Configure a PodDisruptionBudget with a maxUnavailable of 1, and add pod anti-affinity rules to spread pods across different nodes.
A PodDisruptionBudget with maxUnavailable=1 ensures that at most one pod is unavailable during voluntary disruptions, while pod anti-affinity rules force the scheduler to distribute pods across different nodes. This combination prevents a single node failure from taking down all replicas, maintaining service availability without altering the underlying infrastructure.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
Change the service type from ClusterIP to NodePort and configure an external load balancer.
Why it's wrong here
Converting the Service from ClusterIP to NodePort and placing an external load balancer in front only changes the ingress path; it does not alter the Deployment's replica count, scheduling, or failure-domain spread. The load balancer still forwards traffic to whatever endpoints the Service discovers, so if all Pods are colocated and the node (or availability zone) hosting them fails, the Service will have no healthy endpoints and the load balancer returns 503s. It also provides no protection against voluntary disruptions like a node drain.
- ✗
Increase the number of replicas to 10 and use a node selector to schedule all pods on the largest instance type.
Why it's wrong here
Adding replicas to 10 is redundant, and a node selector that forces every Pod onto the largest instance type actually creates a tighter coupling to a single infrastructure dependency. If the cluster only has one node matching that label, or the scheduler packs all replicas onto one big node, that node becoming unhealthy takes the entire application down in one event. Without pod anti-affinity or topology-spread constraints, the scheduler is free to place all replicas in the same failure domain, and the extra replicas provide no additional resilience.
- ✓
Configure a PodDisruptionBudget with a maxUnavailable of 1, and add pod anti-affinity rules to spread pods across different nodes.
Why this is correct
A PodDisruptionBudget with maxUnavailable:1 guarantees that at most one Pod is unavailable during voluntary evictions such as node drains, and pod anti-affinity rules (preferably with topologyKey kubernetes.io/hostname) force the scheduler to place replicas on distinct nodes. This means an involuntary node failure can kill only one replica, and the remaining replicas continue to serve traffic. Combined, these mechanisms directly address both failure classes—involuntary hardware failures and voluntary maintenance—by ensuring the application always has at least N-1 replicas available across different failure domains.
- ✗
Enable HorizontalPodAutoscaler with a target CPU utilization of 50% to automatically scale the Deployment.
Why it's wrong here
The HorizontalPodAutoscaler only scales replica count in response to CPU metrics; it has no awareness of node health, Pod placement, or failure domains. If all current replicas reside on a single node and that node fails, the HPA will eventually trigger replacements, but there will be downtime while new Pods are scheduled, and the replacement Pods could again land on the same surviving node because no spread mechanism exists. It also does nothing to prevent violation of a PDB during a drain, so it cannot provide a high-availability guarantee.
Go deeper
Related to this question
About these practice questions
Courseiva writes every DOP-C02 question from scratch — 251 in total, each with an explanation and a wrong-answer breakdown. None are copied from real exams or dumps. Learn why practice questions differ from exam dumps →
JA
Written by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
This DOP-C02 practice question is part of Courseiva's free Amazon Web Services certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the DOP-C02 exam.