Автоматическое масштабирование
- Масштабирование позволяет распределить нагрузку между контейнерами и снизить риск сбоя.
- Ручное масштабирование - трудоёмкий и неэффективный процесс.
- Для автомасштабирования подходят инструменты Horizontal Pod Autoscaler и Cluster Autoscaler.
- Horizontal Pod Autoscaler масштабирует количество под-контейнеров, основываясь на нагрузке и запросах.
- Cluster Autoscaler автоматически изменяет количество узлов Kubernetes, основываясь на запросах под-контейнеров.
- В Yandex Managed Service for Kubernetes инструмент Cluster Autoscaler включён по умолчанию.
Автоматическое масштабирование
Автомасштабирование в Managed Kubernetes
Масштабирование позволяет распределять нагрузку между контейнерами и снизить риск сбоя.
На прошлых уроках мы развернули приложение в кластере из одного пода, а затем масштабировали на три пода. Ручное масштабирование — занятие трудоёмкое и неэффективное. Посмотрим, как его автоматизировать.
Для автомасштабирования подходят инструменты, встроенные в Kubernetes: Horizontal Pod Autoscaler и Cluster Autoscaler. Они решают разные задачи и могут работать как по отдельности, так и совместно.
Horizontal Pod Autoscaler, как понятно из названия, масштабирует поды: увеличивает и уменьшает их количество, когда изменяется нагрузка. Cluster Autoscaler управляет количеством узлов, на которых поды запущены.
Давайте посмотрим на работу этих инструментов поближе.
Horizontal Pod Autoscaler
Horizontal Pod Autoscaler анализирует нагрузку на сервис и исходя из неё создаёт или удаляет поды.
Сервис ориентируется на лимиты (
limits) и запросы (requests). Первые ограничивают ресурсы, доступные поду с контейнерами: процессор, память и др. Если их не указать, контейнер может забрать все ресурсы ноды. Запросы описывают количество свободных ресурсов, которыми должен располагать узел, чтобы на нём можно было запустить ещё один под с сервисом. Если ресурсов недостаточно, придётся создать дополнительный узел.И тут в дело вступает наш второй инструмент.
Cluster Autoscaler
Cluster Autoscaler оценивает запросы подов и автоматически изменяет количество узлов кластера Kubernetes:
- Если из-за нехватки ресурсов не удаётся запустить поды, то новые узлы создаются и добавляются в кластер.
- Если узлы недостаточно утилизируются, а их поды можно перенести на другие узлы, то узлы освобождаются и удаляются из кластера.
В Yandex Managed Service for Kubernetes инструмент Cluster Autoscaler включён по умолчанию. Читайте об этом в разделе документации об автомасштабировании группы узлов
На следующем уроке мы опробуем автомасштабирование на практике.