Bird
Raised Fist0
Kubernetesdevops~20 mins

ReplicaSet definition in Kubernetes - Mini Project: Build & Apply

Choose your learning style10 modes available
ReplicaSet definition
📖 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

  1. Step 1: Understand ReplicaSet role

    A ReplicaSet's job is to keep a stable set of pod replicas running.
  2. 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.
  3. Final Answer:

    To ensure a specified number of pod replicas are running at all times -> Option C
  4. 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?
easy
A. apiVersion: apps/v1\nkind: ReplicaSet\nmetadata:\n name: my-rs\nspec:\n replicas: 3\n selector:\n matchLabels:\n app: myapp\n template:\n metadata:\n labels:\n app: myapp\n spec:\n containers:\n - name: nginx\n image: nginx
B. apiVersion: v1\nkind: ReplicaSet\nmetadata:\n name: my-rs\nspec:\n replicas: 3\n selector:\n app: myapp\n template:\n metadata:\n labels:\n app: myapp\n spec:\n containers:\n - name: nginx\n image: nginx
C. apiVersion: apps/v1\nkind: ReplicaSet\nmetadata:\n name: my-rs\nspec:\n replicas: three\n selector:\n matchLabels:\n app: myapp\n template:\n metadata:\n labels:\n app: myapp\n spec:\n containers:\n - name: nginx\n image: nginx
D. apiVersion: apps/v1\nkind: ReplicaSet\nmetadata:\n name: my-rs\nspec:\n replicas: 3\n selector:\n matchLabels:\n app: myapp\n template:\n metadata:\n labels:\n app: otherapp\n spec:\n containers:\n - name: nginx\n image: nginx

Solution

  1. Step 1: Check apiVersion and kind

    ReplicaSet requires apiVersion: apps/v1 and kind: ReplicaSet. The option with apiVersion: v1 is invalid.
  2. 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.
  3. Final Answer:

    Correct YAML with apiVersion apps/v1, replicas: 3, matching selector and template labels -> Option A
  4. 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?
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: test-rs
spec:
  replicas: 2
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ['sleep', '3600']
medium
A. 3 pods
B. 1 pod
C. 0 pods
D. 2 pods

Solution

  1. Step 1: Check replicas field

    The spec.replicas is set to 2, so Kubernetes will try to run 2 pods matching the selector.
  2. 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.
  3. Final Answer:

    2 pods -> Option D
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    The selector labels do not match the pod template labels -> Option B
  4. 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

  1. Step 1: Understand scaling ReplicaSet

    Scaling with kubectl scale updates replicas live without downtime.
  2. 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.
  3. Final Answer:

    Scale the ReplicaSet using kubectl scale command to 5 replicas -> Option A
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard