kops/addons/cluster-autoscaler
Ciprian Hacman cd48856c98 Use registry.k8s.io for legacy addons 2023-02-12 13:45:08 +02:00
..
README.md Use registry.k8s.io for legacy addons 2023-02-12 13:45:08 +02:00
addon.yaml Rename addon.yml to addon.yaml 2019-01-11 00:30:31 +00:00
cluster-autoscaler.sh Use registry.k8s.io for legacy addons 2023-02-12 13:45:08 +02:00
v1.4.0.yaml Merge pull request #4922 from jpds/autoscaler-prometheus 2018-04-09 14:24:19 -07:00
v1.6.0.yaml Merge pull request #4922 from jpds/autoscaler-prometheus 2018-04-09 14:24:19 -07:00
v1.8.0.yaml Merge pull request #4922 from jpds/autoscaler-prometheus 2018-04-09 14:24:19 -07:00
v1.10.0.yaml Update v1.10.0.yaml 2019-07-15 09:25:17 +02:00

README.md

Cluster Autoscaler Addon

This addon is deprecated. See https://kops.sigs.k8s.io/addons/#cluster-autoscaler

We strongly recommend using Cluster Autoscaler with the kubernetes version for which it was meant. Refer to the Cluster Autoscaler documentation compatibility matrix

Note that you likely want to change AWS_REGION and GROUP_NAME, and probably MIN_NODES and MAX_NODES. Here is an example of how you may wish to do so:

CLOUD_PROVIDER=aws
IMAGE=registry.k8s.io/cluster-autoscaler:v1.2.2
MIN_NODES=1
MAX_NODES=5
AWS_REGION=us-east-1
# For AWS GROUP_NAME should be the name of ASG as seen on AWS console
GROUP_NAME="nodes.k8s.example.com"
SSL_CERT_PATH="/etc/ssl/certs/ca-certificates.crt" # (/etc/ssl/certs for gce, /etc/ssl/certs/ca-bundle.crt for RHEL7.X)

addon=cluster-autoscaler.yml
wget -O ${addon} https://raw.githubusercontent.com/kubernetes/kops/master/addons/cluster-autoscaler/v1.8.0.yaml

sed -i -e "s@{{CLOUD_PROVIDER}}@${CLOUD_PROVIDER}@g" "${addon}"
sed -i -e "s@{{IMAGE}}@${IMAGE}@g" "${addon}"
sed -i -e "s@{{MIN_NODES}}@${MIN_NODES}@g" "${addon}"
sed -i -e "s@{{MAX_NODES}}@${MAX_NODES}@g" "${addon}"
sed -i -e "s@{{GROUP_NAME}}@${GROUP_NAME}@g" "${addon}"
sed -i -e "s@{{AWS_REGION}}@${AWS_REGION}@g" "${addon}"
sed -i -e "s@{{SSL_CERT_PATH}}@${SSL_CERT_PATH}@g" "${addon}"

kubectl apply -f ${addon}

An enhanced script which also adds the IAM policies is included here cluster-autoscaler.sh

Question: Which ASG group should be autoscaled?
Answer: By default, kOps creates a "nodes" instancegroup and a corresponding ASG group which will have a name such as "nodes.$CLUSTER_NAME", visible in the AWS Console. That ASG is a good choice to begin with. Optionally, you may also create a new instancegroup "kops create ig newgroupname", and configure that instead. Set the maxSize of the kOps instancesgroup, and update the cluster so the maxSize propagates to the ASG.

Question: The cluster-autoscaler documentation mentions an IAM Policy. Which IAM Role should the Policy be attached to?
Answer: Kops creates two Roles, nodes.$CLUSTER_NAME and masters.$CLUSTER_NAME. Currently the example scripts run the autoscaler process on the k8s master node, so the IAM Policy should be assigned to masters.$CLUSTER_NAME (substituting that variable for your actual cluster name).