Kubernetes: Cluster Autoscaler: failed to renew lease

Автор: | 02/04/2021

Имеется в нашем Kubernetes Cluster Autoscaler для скейлинга AWS EC2 WorkerNode Groups.

На Dev-кластере временами перестаёт работать скейлинг, а под с Cluster Autoscaler в логах пишет следующее:

[simterm]

...
E0331 08:57:52.264549       1 leaderelection.go:320] error retrieving resource lock kube-system/cluster-autoscaler: Get https://172.20.0.1:443/apis/coordination.k8s.io/v1/namespaces/kube-system/leases/cluster-autoscaler: context deadline exceeded
I0331 08:58:14.468096       1 leaderelection.go:277] failed to renew lease kube-system/cluster-autoscaler: timed out waiting for the condition
F0331 08:58:25.568173       1 main.go:428] lost master
...

[/simterm]

И постоянно уходит в ребуты:

[simterm]

$ kubectl -n kube-system get pod | grep cluster
cluster-autoscaler-864bcb77d7-p5nlv       0/1     Error     261        21d

[/simterm]

См. все доступные опции в What are the parameters to CA?

У нас он работает в виде одного инстанса, поэтому отключим “выборы” – в command добавляем --leader-elect=false:

...
          command:
            - ./cluster-autoscaler
            - --v=4
            - --stderrthreshold=info
            - --cloud-provider=aws
            - --skip-nodes-with-local-storage=false
            - --expander=least-waste
            - --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/{{ eks_cluster_name }}
            - --balance-similar-node-groups
            - --skip-nodes-with-system-pods=false
            - --leader-elect=false
...

Передеплоиваем, и ошибка пропала – за сутки “Ни единого разрыва!” (с)