stable/acs-engine-autoscaler/README.md
acs-engine-autoscaler is a node-level autoscaler for Kubernetes for clusters created with acs-engine.
$ helm install stable/acs-engine-autoscaler -f values.yaml
Where values.yaml contains:
acsenginecluster:
resourcegroup:
azurespappid:
azurespsecret:
azuresptenantid:
kubeconfigprivatekey:
clientprivatekey:
caprivatekey:
This chart bootstraps an acs-engine-autoscaler deployment on a Kubernetes cluster using the Helm package manager.
In order for the chart to configure the acs-engine-autoscaler properly during the installation process, you must provide some minimal configuration which can't rely on defaults. This includes all the values in the values.yaml file:
acsenginecluster:
resourcegroup:
azurespappid:
azurespsecret:
azuresptenantid:
kubeconfigprivatekey:
clientprivatekey:
caprivatekey:
To install the chart with the release name my-release:
$ helm install --name my-release stable/acs-engine-autoscaler
The command deploys acs-engine-autoscaler on the Kubernetes cluster using the supplied configuration. The configuration section lists the parameters that can be configured during installation.
Tip: List all releases using
helm list
To verify the acs-engine-autoscaler is configured properly find the pod that the deployment created and look at its logs. The result will look something similar to the following:
To verify that acs-engine-autoscaler has started, run:
kubectl --namespace=default get pods -l "app=olfactory-bunny-acs-engine-autoscaler"
To verify that acs-engine-autoscaler is running as expected, run:
kubectl logs $(kubectl --namespace=default get pods -l "app=olfactory-bunny-acs-engine-autoscaler" -o jsonpath="{.items[0].metadata.name}")
$ kubectl --namespace=default get pods -l "app=olfactory-bunny-acs-engine-autoscaler"
NAME READY STATUS RESTARTS AGE
olfactory-bunny-acs-engine-autoscaler-1715934483-c673v 1/1 Running 0 10s
$ kubectl logs $(kubectl --namespace=default get pods -l "app=olfactory-bunny-acs-engine-autoscaler" -o jsonpath="{.items[0].metadata.name}")
2017-06-11 23:20:59,352 - autoscaler.cluster - DEBUG - Using kube service account
2017-06-11 23:20:59,352 - autoscaler.cluster - INFO - ++++ Running Scaling Loop ++++++
2017-06-11 23:20:59,421 - autoscaler.cluster - INFO - Pods to schedule: 0
2017-06-11 23:20:59,421 - autoscaler.cluster - INFO - ++++ Scaling Up Begins ++++++
2017-06-11 23:20:59,421 - autoscaler.cluster - INFO - Nodes: 1
2017-06-11 23:20:59,421 - autoscaler.cluster - INFO - To schedule: 0
2017-06-11 23:20:59,421 - autoscaler.cluster - INFO - Pending pods: 0
2017-06-11 23:20:59,422 - autoscaler.cluster - INFO - ++++ Scaling Up Ends ++++++
2017-06-11 23:20:59,422 - autoscaler.cluster - INFO - ++++ Maintenance Begins ++++++
2017-06-11 23:20:59,422 - autoscaler.engine_scaler - INFO - ++++ Maintaining Nodes ++++++
2017-06-11 23:20:59,423 - autoscaler.engine_scaler - INFO - node: k8s-agentpool1-29744472-4 state: under-utilized-undrainable
2017-06-11 23:20:59,423 - autoscaler.cluster - INFO - ++++ Maintenance Ends ++++++
...
To uninstall/delete the last deployment:
$ helm ls
$ helm delete [last deployment]
The command removes all the Kubernetes components associated with the chart and deletes the release.
The following tables list the configurable parameters of the acs-engine-autoscaler chart and their default values.
| Parameter | Description | Default |
|---|---|---|
image.repository | Image repository | wbuchwalter/kubernetes-acs-engine-autoscaler |
image.tag | Image tag. Possible values listed here. | 2.1.1 |
image.pullPolicy | Image pull policy | IfNotPresent |
podAnnotations | Pod annotations | {} |
deploymentAnnotations | Deployment annotations | {} |
resources | CPU/Memory resource requests/limits | {} |
nodeSelector | Node labels for pod assignment | {} |
tolerations | Toleration labels for pod assignment | [] |
affinity | Affinity settings for pod assignment | {} |
resourcegroup | Name of the resource group containing the cluster | None. You must supply one. |
azurespappid | An Azure service principal id | None. You must supply one. |
azurespsecret | An Azure service principal secret | None. You must supply one. |
azuresptenantid | An Azure service principal tenant id | None. You must supply one. |
kubeconfigprivatekey | The key passed to the kubeConfigPrivateKey parameter in your azuredeploy.parameters.json generated with acs-engine | None. You must supply one. |
clientprivatekey | The key passed to the clientPrivateKey parameter in your azuredeploy.parameters.json generated with acs-engine | None. You must supply one. |
caprivatekey | The key passed to the caPrivateKey parameter in your azuredeploy.parameters.json generated with acs-engine | None. You must supply one. |
acsdeployment | [OPTIONAL] The name of the deployment used to deploy the kubernetes cluster initially. | azuredeploy. |
sleeptime | [OPTIONAL] The number of seconds to sleep between scaling loops. | 60 |
ignorepools | [OPTIONAL] A list of comma separated pool names the autoscaler should ignore. | None. |
spareagents | [OPTIONAL] Number of agents per pool that should always remain up. | 1 |
idlethreshold | [OPTIONAL] Maximum duration (in seconds) an agent can stay idle before being deleted. | 1800 (30 minutes) |
overprovision | [OPTIONAL] Number of extra agents to create when scaling out. | 0 |
Specify each parameter you'd like to override using a YAML file as described above in the installation section.
You need to provide a Service Principal to the autoscaler. You can create one using Azure CLI:
az ad sp create-for-rbac