This page shows how to horizontally scale master and worker nodes on a cluster.
This page assumes you have a working Juju deployed cluster.
Any of the applications can be scaled out post-deployment. The charms update the status messages with progress, so it is recommended to run.
watch -c juju status --color
The provided Kubernetes master nodes act as a control plane for the cluster. The deployment has been designed so that these nodes can be scaled independently of worker nodes to allow for more operational flexibility. To scale a master node up, simply execute:
juju add-unit kubernetes-master
This will add another master node to the control plane. See the building high-availability clusters section of the documentation for more information.
The kubernetes-worker nodes are the load-bearing units of a Kubernetes cluster.
By default pods are automatically spread throughout the kubernetes-worker units that you have deployed.
To add more kubernetes-worker units to the cluster:
juju add-unit kubernetes-worker
or specify machine constraints to create larger nodes:
juju set-constraints kubernetes-worker "cpu-cores=8 mem=32G"
juju add-unit kubernetes-worker
Refer to the machine constraints documentation for other machine constraints that might be useful for the kubernetes-worker units.
Etcd is used as a key-value store for the Kubernetes cluster. The bundle defaults to one instance in this cluster.
For quorum reasons it is recommended to keep an odd number of etcd nodes. 3, 5, 7, and 9 nodes are the recommended amount of nodes, depending on your cluster size. The CoreOS etcd documentation has a chart for the optimal cluster size to determine fault tolerance.
To add an etcd unit:
juju add-unit etcd
Shrinking of an etcd cluster after growth is not recommended.
A single node is responsible for coordinating with all the Juju agents on each machine that manage Kubernetes; it is called the controller node. For production deployments it is recommended to enable HA of the controller node:
juju enable-ha
Enabling HA results in 3 controller nodes, this should be sufficient for most use cases. 5 and 7 controller nodes are also supported for extra large deployments.
For more information, see “Controller high availability” topic in Juju documentation.
Was this page helpful?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.