Replication Controller¶
How RC works?
If there are too many pods, the ReplicationController terminates the extra pods. If there are too few, the ReplicationController starts more pods. Unlike manually created pods, the pods maintained by a ReplicationController are automatically replaced if they fail, are deleted, or are terminated.
- A
ReplicationController
ensures that a specified number of pod replicas are running at any one time. In other words, a ReplicationController makes sure that a pod or a homogeneous set of pods is always up and available. - Replication controller can span multiple nodes.
- Replication controller (RC) is the old tech while Replica Set (RS) is the new one.
Exmaple RC
apiVersion: v1
kind: ReplicationController
metadata: # this metadata is for RC
name: nginx
labels:
env: dev # label for RC
spec: # spec for RC
replicas: 3 # total replicas for RC. Defaults to 1 if not specified
selector:
app: nginx # A ReplicationController manages all the pods with labels that match this selector
template: # This template is for pod, if new one has to be created. This is the required component
metadata: # this metadata is for POD
name: nginx
labels:
app: nginx # If specified, the .spec.template.metadata.labels must be equal to the .spec.selector, or it will be rejected by the API
spec: # spec for pods
containers:
- name: nginx-by-amar
image: nginx
ports:
- containerPort: 80
Deleting only a ReplicationController¶
You can delete a ReplicationController without affecting any of its pods. Using kubectl, specify the --cascade=orphan
option to kubectl delete.