Skip to content

Latest commit

 

History

History
49 lines (40 loc) · 2.43 KB

File metadata and controls

49 lines (40 loc) · 2.43 KB

Cluster Autoscaler on CloudStack

The cluster autoscaler on CloudStack scales worker nodes within any specified cluster. It runs 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.

Requirements

Cluster Autoscaler requires Apache CloudStack 4.16 onward as well as Kubernetes v1.16.0 or greater.

Deployment

The CloudStack kubernetes cluster can be autoscaled via the scaleKubernetesCluster by passing autoscalingenabled=true along with the minsize and maxsize parameters API from 4.16 onwards. eg:

scaleKubernetesCluster id=<cluster-id> autoscalingenabled=true minsize=<minsize> maxsize=<maxsize>

Autoscaling on the cluster can be disabled by passing autoscalingenabled=false. This will delete the deployment and leave the cluster at its current size. eg:

scaleKubernetesCluster id=<cluster-id> autoscalingenabled=false

To manually deploy the cluster autoscaler, please follow the guide below :

To configure API access to your CloudStack management server, you need to create a secret containing a cloud-config that is suitable for your environment.

cloud-config should look like this:

[Global]
api-url = <CloudStack API URL>
api-key = <CloudStack API Key>
secret-key = <CloudStack API Secret>

The access token needs to be able to execute the listKubernetesClusters and scaleKubernetesCluster APIs.

To create the secret, use the following command:

kubectl -n kube-system create secret generic cloudstack-secret --from-file=cloud-config

Finally, to deploy the autoscaler, modify the cluster-autoscaler-standard.yaml with the cluster id, minsize and maxsize located here and execute it

kubectl apply -f cluster-autoscaler-standard.yaml

Common Notes and Gotchas:

  • The automated deployment of the autoscaler will run with the defaults configured here. To change it, alter the file and deploy it again.
  • By default, cluster autoscaler will not terminate nodes running pods in the kube-system namespace. You can override this default behaviour by passing in the --skip-nodes-with-system-pods=false flag.
  • By default, cluster autoscaler will wait 10 minutes between scale down operations, you can adjust this using the --scale-down-delay flag. E.g. --scale-down-delay=5m to decrease the scale down delay to 5 minutes.