В
этой заметке мы устанавливали кластер Kubernetes в AWS с помощью kops.
А в данной заметке я опишу настройки автоскейлинга нод в Kubernetes.
Для того чтобы автоскейлинг работал, необходимо
его установить в кластер в неймспейс
kube-system.
Перед непосредственной установкой, убедитесь что на всех нодах, которые вы хотите скейлить есть соответствующие лейблы:
kops get ig
kops edit ig nodes
...
spec:
cloudLabels:
k8s.io/cluster-autoscaler/enabled: ""
kubernetes.io/cluster/k8s-dev.domain.org: ""
Эта команда будет создавать ноды с соответствующими лейблами, поэтому важно повесить лейблы также и на существующие ноды.
Подготовим файл конфигурации для автоскейлера:
cat << EOF > values.yml
autoDiscovery:
clusterName: k8s-dev.domain.org
awsRegion: eu-west-1
cloudProvider: aws
extraArgs:
balance-similar-node-groups: true
expander: random
skip-nodes-with-system-pods=false: false
rbac:
create: true
pspEnabled: true
scale-down-delay: 5m
v: 2
EOF
Установка автоскейлера:
helm install stable/cluster-autoscaler --name autoscaler -f values.yml
На этом в принципе все, можно позапускать в кластере каких-нибудь нагрузочных тестов, чтобы убедиться в работоспособности скейлинга.