Cluster Autoscaler for OpenStack Magnum
The cluster autoscaler for Magnum scales worker nodes within any
specified nodegroup. It will run as a
Deployment in your cluster.
This README will go over some of the necessary steps required to get
the cluster autoscaler up and running.
Permissions and credentials
The autoscaler needs a
ServiceAccount with permissions for Kubernetes and
requires credentials for interacting with OpenStack.
ServiceAccount is given in examples/cluster-autoscaler-svcaccount.yaml.
The credentials for authenticating with OpenStack are stored in a secret and
mounted as a file inside the container. examples/cluster-autoscaler-secret
can be modified with the contents of your cloud-config. This file can be obtained from your master node,
/etc/kubernetes (may be named
kube_openstack_config instead of
The deployment in
examples/cluster-autoscaler-deployment.yaml can be used,
but the arguments passed to the autoscaler will need to be changed
to match your cluster.
|--cluster-name||The name of your Kubernetes cluster. If there are multiple clusters sharing the same name then the cluster IDs should be used instead.|
|--cloud-provider||Can be omitted if the autoscaler is built with
|--nodes||Of the form
Magnum does not yet support multiple node groups within a single cluster, but this is currently in development. Once node groups are available for Magnum, support for autoscaling clusters using nodegroups will be made available by adding another implementation of the Magnum manager interface.
The autoscaler will not remove nodes which have non-default kube-system pods. This prevents the node that the autoscaler is running on from being scaled down. If you are deploying the autoscaler into a cluster which already has more than one node, it is best to deploy it onto any node which already has non-default kube-system pods, to minimise the number of nodes which cannot be removed when scaling.
Or, if you are using a Magnum version which supports scheduling on the master node, then the example deployment file examples/cluster-autoscaler-deployment-master.yaml can be used.