Upgrade EKS Cluster Autoscaler

Assuming you have deployed the Kubernetes Cluster Autoscaler to your cluster, this guide will help you update the Cluster Autoscaler to the latest version that matches the Kubernetes major and minor version that you updated to.

What You'll need

Procedure

  1. Find the Cluster Autoscaler image tag that matches your cluster's Kubernetes version:

    v1.17.4

    v1.18.3

    v1.19.1

  2. Go to your GitOps repository inside your rok-tools management environment:

    root@rok-tools:~# cd ~/ops/deployments
    
  3. Set the Cluster Autoscaler image tag to the version that you found in step 1. Edit rok/cluster-autoscaler/overlays/deploy/kustomization.yaml and insert the following snippet, replacing with the appropriate Cluster Autoscaler image tag:

    images:
    - name: k8s.gcr.io/autoscaling/cluster-autoscaler
      newTag: <CLUSTER_AUTOSCALER_IMAGE_TAG>
    

    For example, to set the Cluster Autoscaler image tag to v1.19.1 insert the following snippet:

    images:
    - name: k8s.gcr.io/autoscaling/cluster-autoscaler
      newTag: v1.19.1
    
  4. Commit the changes:

    root@rok-tools:~/ops/deployments# git commit -am "Update the Cluster Autoscaler image"
    
  5. Apply the kustomization:

    root@rok-tools:~/ops/deployments# rok-deploy --apply rok/cluster-autoscaler/overlays/deploy
    

Verify

  1. Ensure that the Cluster Autoscaler is ready, that is, field READY is 1/1:

    root@rok-tools:~# kubectl get -n kube-system deploy cluster-autoscaler
    NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
    cluster-autoscaler   1/1     1            1           1d
    
  2. Ensure that the Cluster Autoscaler image tag matches the major and minor version of your Kubernetes control plane. To get the version of your Kubernetes control plane inspect the Server Version in the command that follows:

    root@rok-tools:~# kubectl -n kube-system get deploy cluster-autoscaler \
    > -o jsonpath='{.spec.template.spec.containers[].image}{"\n"}'
    k8s.gcr.io/autoscaling/cluster-autoscaler:v1.19.1
    
    root@rok-tools:~# kubectl version --short
    Client Version: v1.18.19
    Server Version: v1.19.13-eks-8df270
    

    Note

    It is ok if the Kubernetes and Cluster Autoscaler patch versions are different, as long as the the major and minor versions are the same (e.g. 1.19).

Summary

You have successfully upgraded the Cluster Autoscaler of your EKS cluster.

What's Next

Check out the rest of the EKS maintenance operations that you can perform on your cluster.