Replication Controller
A Replication Controller is a Kubernetes abstraction that ensures that a specific number of pods are running at all times. If a pod or host goes down, the replication controller ensures enough pods get recreated elsewhere.
A pod template is used to define what each pod should look like (e.g. the docker container image to use, its ports and environment variables, etc).
The containers generated can have labels so that containers can be filtered to create services.
Link between Replica controller and Pod
How does Replica Controller know which Pod to manage? It happens via a keyword label and selectors.
In the Replica Controller, we define selectors which basically points to the label defined in Pod.
Create a file replicationController.yml
apiVersion: v1
kind: ReplicationController
metadata:
name: rcontroller-nginx
spec:
replicas: 3
selector:
app: my-nginx-app
template:
metadata:
name: nginx-pod
labels:
app: my-nginx-app
spec:
containers:
- name: nginx-container
image: coolgourav147/nginx-custom
Now deploy the above RC using
kubectl apply -f replicationController.yml
check our pods using
kubectl get pods
Let's delete one pod and check if any new pods get created.
kubectl delete pod <podname>
You might be seeing one new Pod being created.
get the replication controller using below command
kubectl get rc
Describe the ReplicationController:
kubectl describe rc nginx-rc
To scale up the replicas:
kubectl scale rc nginx-rc --replicas=5
To delete the ReplicationController:
kubectl delete rc nginx-rc
kubectl delete -f replicationController.yml