Kubernetes controllers act as the control plane’s “brain,” continuously observing cluster objects and reconciling the current state with your declared desired state. In this lesson, we’ll deep dive into two controllers that manage Pod replicas: ReplicationController and ReplicaSet.Documentation Index
Fetch the complete documentation index at: https://notes.kodekloud.com/llms.txt
Use this file to discover all available pages before exploring further.
Why Use Replication Controllers?
Running a single Pod is risky—if it crashes, your application goes offline. A ReplicationController (RC) maintains a specified number of identical Pods, ensuring high availability and load distribution.- High availability: If one Pod fails, others continue serving traffic.

- Redundancy and load balancing across nodes:

- Scaling across nodes to meet growing demand:

ReplicationController vs. ReplicaSet
While both controllers maintain a set of Pod replicas, ReplicaSet (RS) is the modern API (apps/v1) and supports set-based label selectors. ReplicationController (v1) is older and has fewer selector capabilities. We recommend using ReplicaSets for new deployments.
| Feature | ReplicationController (v1) | ReplicaSet (apps/v1) |
|---|---|---|
| API Version | v1 | apps/v1 |
| Selector Support | Equality-based labels only | Equality & set-based label match |
| Recommended for Usage | Deprecated | Yes |
Creating a ReplicationController
-
Define
rc-definition.yaml: -
Apply the manifest and verify:
Example output:
-
List Pods managed by the RC:
Introducing ReplicaSets
A ReplicaSet manifest closely mirrors an RC, with two key differences:- apiVersion:
apps/v1 - selector: Required to match Pods
Labels and Selectors
Labels are key/value pairs attached to objects. A ReplicaSet’sspec.selector.matchLabels determines which Pods it manages—even pre-existing ones.
Example Pod with labels:
Scaling a ReplicaSet
You can adjust replica counts by editing the YAML or usingkubectl scale:
Option 1: Update replicas in replicaset-definition.yaml and apply:
Using
For automatic scaling based on metrics, see the Horizontal Pod Autoscaler.
kubectl scale updates in-memory replica counts but does not modify your source YAML file.For automatic scaling based on metrics, see the Horizontal Pod Autoscaler.
Command Cheat Sheet
| Command | Description |
|---|---|
kubectl create -f <file> | Create any Kubernetes object |
kubectl get <resource> | List resources (e.g., pods, rs) |
kubectl delete <resource> <name> | Delete a resource by name |
kubectl replace -f <file> | Update by replacing the manifest |
kubectl scale —replicas=<n> -f <file> | Scale replicas from the command line |