📖 Scenario: You are managing a simple web application on Kubernetes. To keep your app running smoothly, you want to make sure there are always exactly 3 copies (pods) of your app running. This helps if one pod stops working, others keep serving users.
🎯 Goal: Create a Kubernetes ReplicaSet definition YAML that ensures 3 replicas of a pod running the nginx container. This ReplicaSet will keep your app available by automatically replacing pods if they fail.
📋 What You'll Learn
Create a ReplicaSet named nginx-replicaset
Set the number of replicas to 3
Use the label app: nginx for pods
Define a pod template with a container named nginx using the image nginx:latest
Expose container port 80
💡 Why This Matters
🌍 Real World
ReplicaSets are used in Kubernetes to keep a set number of pod copies running. This helps maintain application availability and reliability.
💼 Career
Understanding ReplicaSets is essential for Kubernetes administrators and DevOps engineers to manage application scaling and fault tolerance.
Progress0 / 4 steps
1
Create the basic ReplicaSet structure
Write the first lines of the ReplicaSet YAML with apiVersion: apps/v1, kind: ReplicaSet, and metadata with name: nginx-replicaset.
Kubernetes
Hint
Start by defining the API version, kind, and metadata name exactly as shown.
2
Add the replicas count and selector
Add a spec section with replicas: 3 and a selector that matches pods with label app: nginx.
Kubernetes
Hint
Under spec, set replicas to 3 and define selector.matchLabels.app as nginx.
3
Define the pod template with container details
Inside spec, add template with metadata.labels matching app: nginx. Under template.spec.containers, define a container named nginx using image nginx:latest and expose port 80.
Kubernetes
Hint
Make sure pod labels match the selector labels exactly. Define container name, image, and port as specified.
4
Output the complete ReplicaSet YAML
Print the full ReplicaSet YAML to verify your definition.
Kubernetes
Hint
Check your YAML matches the full ReplicaSet definition exactly.
Practice
(1/5)
1. What is the main purpose of a ReplicaSet in Kubernetes?
easy
A. To manage network policies between pods
B. To store persistent data for pods
C. To ensure a specified number of pod replicas are running at all times
D. To schedule pods on specific nodes
Solution
Step 1: Understand ReplicaSet role
A ReplicaSet's job is to keep a stable set of pod replicas running.
Step 2: Compare options with ReplicaSet function
Only To ensure a specified number of pod replicas are running at all times describes maintaining pod replicas, which is the ReplicaSet's purpose.
Final Answer:
To ensure a specified number of pod replicas are running at all times -> Option C
Quick Check:
ReplicaSet manages pod count = A [OK]
Hint: ReplicaSet = keeps pods running in set number [OK]
Common Mistakes:
Confusing ReplicaSet with PersistentVolume
Thinking ReplicaSet manages network policies
Mixing ReplicaSet with pod scheduling
2. Which of the following is the correct minimal YAML snippet to define a ReplicaSet with 3 replicas?
ReplicaSet requires apiVersion: apps/v1 and kind: ReplicaSet. The option with apiVersion: v1 is invalid.
Step 2: Validate replicas and selector-template match
Replicas must be an integer like 3, not string 'three'. Selector labels must match template labels exactly (one option has template app: otherapp mismatch). Only one option has all correct: apps/v1, replicas: 3, matching labels with proper structure.
Final Answer:
Correct YAML with apiVersion apps/v1, replicas: 3, matching selector and template labels -> Option A
Quick Check:
YAML syntax + matching labels = D [OK]
Hint: Match selector labels exactly with template labels [OK]
Common Mistakes:
Using wrong apiVersion
Setting replicas as string instead of number
Mismatching selector and template labels
3. Given this ReplicaSet YAML snippet, what will be the number of pods running after applying it?
The spec.replicas is set to 2, so Kubernetes will try to run 2 pods matching the selector.
Step 2: Confirm selector and template labels match
Selector matches label app: test, and template labels also have app: test, so pods will be created.
Final Answer:
2 pods -> Option D
Quick Check:
replicas = 2 pods running [OK]
Hint: replicas number = pods running if labels match [OK]
Common Mistakes:
Ignoring label selector and template label matching
Assuming pods run without matching labels
Confusing replicas with container count
4. You applied a ReplicaSet YAML but no pods are created. Which of these is the most likely cause?
medium
A. The replicas field is set to 0
B. The selector labels do not match the pod template labels
C. The container image name is misspelled
D. The ReplicaSet name is missing
Solution
Step 1: Understand pod creation depends on selector matching template labels
If selector labels don't match pod template labels, ReplicaSet won't manage any pods.
Step 2: Evaluate other options
Replicas 0 means no pods, but question says pods expected. Misspelled image causes pod crash, not zero pods. Name missing causes YAML error, not silent no pods.
Final Answer:
The selector labels do not match the pod template labels -> Option B
Quick Check:
Selector-template label mismatch = no pods [OK]
Hint: Selector and template labels must match exactly [OK]
Common Mistakes:
Assuming image typo prevents pod creation
Ignoring selector-template label mismatch
Thinking ReplicaSet name is optional
5. You want to update a ReplicaSet to increase replicas from 2 to 5 but keep the same pods running without downtime. What is the best approach?
hard
A. Scale the ReplicaSet using kubectl scale command to 5 replicas
B. Delete the ReplicaSet and create a new one with replicas: 5
C. Edit the ReplicaSet YAML to set replicas: 5 and apply it
D. Change the pod template labels to new values and apply
Solution
Step 1: Understand scaling ReplicaSet
Scaling with kubectl scale updates replicas live without downtime.
Step 2: Evaluate other options
Editing YAML and applying works but less safe than scale command. Deleting ReplicaSet causes downtime. Changing labels breaks pod matching.
Final Answer:
Scale the ReplicaSet using kubectl scale command to 5 replicas -> Option A
Quick Check:
Use kubectl scale for live replica changes [OK]
Hint: Use kubectl scale to change replicas live [OK]
Common Mistakes:
Deleting ReplicaSet causes downtime
Changing labels breaks pod matching
Editing YAML directly risks errors
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.