CONTROLLERS
Controllers
are the brain behind the k8s. They are the processes that monitor the
k8s objects and respond accordingly.
Replication Controller:
The
replication controller helps us to run multiple instances of a single
pod in a k8s cluster, thus providing High Availability.
They
can also replace a Single failed pod, thus provide HA even without
multiple instance of PODs.
It
also helps in Load Balancing and Scaling. Another reason we need
replicaiton controller is to create mulltiple pods and to share the
load between them. At first it will increase the number of pods in
the same node when demand increases, say when the user is increasing.
After the node has reached its bottleneck , we will create additional
pods in another new nodes. Thus the replication controller spans
across multiple nodes in the cluster.
Replication Controller Vs Replica Set:
They
both have the same purpose, but they are not the same.
Replica
Set is the new technology for replication setup in k8s, the features
that we said about Replicaton Controller is also applicable to
Replica Set too.
Replication Controller definition:
rc-definition.yml
apiVersion: v1 kind: ReplicationController metadata: name: myapp-rc labels: app: myapp type: front-end spec: template: metadata: name: myapp-pod labels: app: myapp type: front-end spec: containers: - name: nginx-image image: nginx replicas: 3
# kubectl create -f rc-definition.yml
# kubectl get replicationcontroller
# kubectl get pods
Replica Set Definition :
replicaset-definition.yml
The
mager difference between the Replication Controller and the Replica
Set is there is an another child (selector: )for the component spec:
in Replica Set
apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp-replicaset labels: app: myapp type: front-end spec: template: metadata: name: myapp-pod labels: app: myapp type: front-end spec: containers: - name: nginx-image image: nginx replicas: 3 selector: matchLabels: type: front-end
# kubectl create -f replicaset-definition.yml
# kubectl get replicaset
# kubectl get pods
# kubectl delete replicaset myapp-replicaset
Scale the Replica Set:
First
need to edit the “replicas: 3” section and change that to
“replicas: 6” in replicaset-definition.yml
Now
execute the below commands to scale the replica sets to 6 replicas
# kubectl replace -f replicaset-definition.yml
OR
# kubectl scale --replicas=6 -f replicaset-definition.yml
OR
# kubectl scale --replicas=6 replicaset myapp-replicaset
Where ( replicaset -> Type ) & ( myapp-replicaset -> Name of replicaset )
NB: The value in thereplicaset-definition.yml
file will remain 3 , even after you update the replicas value to 6 with the “kubectl scale” command method using
replicaset-definition.yml file.
Comments