Replication controller allows us to run multiple instances of a single Pod in Kubernetes Cluster.
When currently running Pod fails, ReplicationController (or) ReplicationSet automatically spin up other Pod instance.
Let’s see this with an example.
Step 1: Create a ReplicationSet that spin up 5 pods of jboss/wildfly instance.
employeeServiceReplicationSet.yml
apiVersion: apps/v1 kind: ReplicaSet metadata: name: employee-service-replica-set labels: app: employee-service-replica-set author: krishna serviceType: webservice spec: template: metadata: name: employee-service labels: app: employee-service author: krishna serviceType: webservice spec: containers: - name: employee-service-container image: jboss/wildfly replicas: 5 selector: matchLabels: app: employee-service
Step 2: Let’s create ReplicaSet from above definition file.
$kubectl create -f employeeServiceReplicationSet.yml
replicaset.apps/employee-service-replica-set created
Query replicaset and Pods to confirm Pods are started and running.
$kubectl get rs
NAME DESIRED CURRENT READY AGE
employee-service-replica-set 5 5 5 58s
$
$kubectl get pods
NAME READY STATUS RESTARTS AGE
employee-service-replica-set-66p9h 1/1 Running 0 63s
employee-service-replica-set-g5kgm 1/1 Running 0 63s
employee-service-replica-set-gpdzz 1/1 Running 0 63s
employee-service-replica-set-n49mv 1/1 Running 0 63s
employee-service-replica-set-ngfc8 1/1 Running 0 63s
Step 3: Now, let’s delete couple of Pods to confirm that ReplicaSet starts new pods to maintain replication of 5.
$kubectl delete pod employee-service-replica-set-66p9h
pod "employee-service-replica-set-66p9h" deleted
$
$kubectl delete pod employee-service-replica-set-g5kgm
pod "employee-service-replica-set-g5kgm" deleted
Query for the pods again. You can observe that ReplicaSet create new pods to maintain 5 replicas.
$kubectl get pods
NAME READY STATUS RESTARTS AGE
employee-service-replica-set-gpdzz 1/1 Running 0 2m3s
employee-service-replica-set-kqvxw 1/1 Running 0 11s
employee-service-replica-set-n49mv 1/1 Running 0 2m3s
employee-service-replica-set-ngfc8 1/1 Running 0 2m3s
employee-service-replica-set-r67n7 0/1 ContainerCreating 0 4s
$
$kubectl get pods
NAME READY STATUS RESTARTS AGE
employee-service-replica-set-gpdzz 1/1 Running 0 2m10s
employee-service-replica-set-kqvxw 1/1 Running 0 18s
employee-service-replica-set-n49mv 1/1 Running 0 2m10s
employee-service-replica-set-ngfc8 1/1 Running 0 2m10s
employee-service-replica-set-r67n7 1/1 Running 0 11s
You can delete replicaset by executing below command.
kubectl delete rs employee-service-replica-set
$kubectl delete rs employee-service-replica-set
replicaset.apps "employee-service-replica-set" deleted
No comments:
Post a Comment