Scaling a Kubernetes Cluster
Learn about using the Replication Controller to scale a Kubernetes cluster.
Join the DZone community and get the full member experience.
Join For FreeAutomatic Restarting of Pods inside Replication Controller of Kubernetes Cluster shows how Kubernetes reschedule pods in the cluster if one or more of existing Pods disappear for some reason. This is a common usage pattern and one of the key features of Kubernetes.
Another common usage pattern of Replication Controller is scaling:
The replication controller makes it easy to scale the number of replicas up or down, either manually or by an auto-scaling control agent, by simply updating the replicas field.
This blog will show how a Kubernetes cluster can be easily scaled up and down.
All the code used in this blog is available at kubernetes-java-sample.
Start Replication Controller and Verify
Start a Replication Controller as:
Get status of the Pods:
- Get status of the Replication Controller:
./cluster/kubectl.sh create -f ~/workspaces/kubernetes-java-sample/wildfly-rc.yaml
replicationcontrollers/wildfly-rc
./cluster/kubectl.sh get -w po
NAME READY STATUS RESTARTS AGE
NAME READY STATUS RESTARTS AGE
wildfly-rc-bgtkg 0/1 Pending 0 1s
wildfly-rc-l8fqv 0/1 Pending 0 1s
wildfly-rc-bgtkg 0/1 Pending 0 1s
wildfly-rc-l8fqv 0/1 Pending 0 1s
wildfly-rc-bgtkg 0/1 Pending 0 1s
wildfly-rc-l8fqv 0/1 Pending 0 1s
wildfly-rc-bgtkg 0/1 Running 0 1m
wildfly-rc-l8fqv 0/1 Running 0 1m
wildfly-rc-bgtkg 1/1 Running 0 1m
wildfly-rc-l8fqv 1/1 Running 0 1m
Make sure to wait for the status to change to Running. Note down name of the Pods as wildfly-rc-bgtkg” and wildfly-rc-bgtkg”.
./cluster/kubectl.sh get rc
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
wildfly-rc wildfly-rc-pod jboss/wildfly name=wildfly 2
If multiple Replication Controllers are running then you can query for this specific one using the label:
./cluster/kubectl.sh get rc -l name=wildfly
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
wildfly-rc wildfly-rc-pod jboss/wildfly name=wildfly 2
Scaling Kubernetes Cluster Up
Replication Controller allows dynamic scaling up and down of Pods.
- Scale up the number of Pods:
Status of the Pods can be seen in another shell:
./cluster/kubectl.sh scale --replicas=3 rc wildfly-rc
scaled
./cluster/kubectl.sh get -w po
NAME READY STATUS RESTARTS AGE
wildfly-rc-k6pk2 1/1 Running 0 47s
wildfly-rc-wez29 1/1 Running 0 47s
NAME READY STATUS RESTARTS AGE
wildfly-rc-aqaqn 0/1 Pending 0 0s
wildfly-rc-aqaqn 0/1 Pending 0 0s
wildfly-rc-aqaqn 0/1 Pending 0 0s
wildfly-rc-aqaqn 0/1 Running 0 2s
wildfly-rc-aqaqn 1/1 Running 0 11s
Notice a new Pod with the name wildfly-rc-aqaqn
is created.
Scale Kubernetes Cluster Down
- Scale down the number of Pods:
- Status of the Pods using
-w
is not correctly updated (#11338). But status of the Pods can be seen correctly as:
./cluster/kubectl.sh scale --replicas=1 rc wildfly-rc
scaled
./cluster/kubectl.sh get po
NAME READY STATUS RESTARTS AGE
wildfly-rc-k6pk2 1/1 Running 0 9m
Notice only one Pod is now running.
Kubernetes dynamically scales the Pods up and down using the scale --replicas
command.
All code used in this blog is available at kubernetes-java-sample.
Published at DZone with permission of Arun Gupta, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments