Настройка VerticalPodAutoscaler (VPA)
Для как статeless, так и stateful приложений VerticalPodAutoscaler (VPA) автоматически рекомендует и при необходимости применяет более подходящие лимиты ресурсов CPU и памяти на основе ваших бизнес-требований, обеспечивая достаточные ресурсы для подов и улучшая использование ресурсов кластера.
Содержание
Понимание VerticalPodAutoscalersКак работает VPA?Поддерживаемые возможностиПредварительные требованияУстановка плагина Vertical Pod AutoscalerСоздание VerticalPodAutoscalerИспользование CLIИспользование веб-консолиРасширенная настройка VPAОпции политики обновленияОпции политики контейнераПоследующие действияПонимание VerticalPodAutoscalers
Вы можете создать VerticalPodAutoscaler, чтобы рекомендовать или автоматически обновлять запросы и лимиты ресурсов CPU и памяти для ваших подов на основе их исторических шаблонов использования.
После создания VerticalPodAutoscaler платформа начинает отслеживать использование ресурсов CPU и памяти подами. Когда собирается достаточное количество данных, VerticalPodAutoscaler вычисляет рекомендуемые значения ресурсов на основе наблюдаемых шаблонов использования. В зависимости от настроенного режима обновления VPA может либо автоматически применять эти рекомендации, либо просто предоставлять их для ручного применения.
VPA работает, анализируя использование ресурсов ваших подов с течением времени и формируя рекомендации на основе этого анализа. Это помогает обеспечить подам необходимые ресурсы без избыточного выделения, что ведет к более эффективному использованию ресурсов в кластере.
Как работает VPA?
VerticalPodAutoscaler (VPA) расширяет концепцию оптимизации ресурсов подов. VPA отслеживает использование ресурсов ваших подов и предоставляет рекомендации по запросам CPU и памяти на основе наблюдаемых шаблонов использования.
VPA работает, непрерывно мониторя использование ресурсов подами и обновляя свои рекомендации по мере поступления новых данных. VPA может работать в следующих режимах:
- Off: VPA только предоставляет рекомендации без их автоматического применения.
- Manual Adjustment: Вы можете вручную настраивать конфигурации ресурсов на основе рекомендаций VPA.
Важно: Эластичное масштабирование может осуществлять горизонтальное или вертикальное масштабирование подов. При наличии достаточных ресурсов эластичное масштабирование дает хорошие результаты, но при недостатке ресурсов кластера поды могут находиться в состоянии Pending. Поэтому убедитесь, что в кластере достаточно ресурсов или установлены разумные квоты, либо настройте оповещения для мониторинга условий масштабирования.
Поддерживаемые возможности
VerticalPodAutoscaler предоставляет рекомендации по ресурсам на основе исторических шаблонов использования, что позволяет оптимизировать конфигурации CPU и памяти ваших подов.
Важно: При ручном применении рекомендаций VPA происходит пересоздание подов, что может вызвать временные перебои в работе приложения. Рассмотрите возможность применения рекомендаций в окна обслуживания для рабочих нагрузок в продакшене.
Предварительные требования
- Убедитесь, что компоненты мониторинга развернуты в текущем кластере и работают корректно. Вы можете проверить статус развертывания и состояние компонентов мониторинга, нажав в правом верхнем углу платформы
> Platform Health Status..
- В вашем кластере должен быть установлен кластерный плагин Alauda Container Platform Vertical Pod Autoscaler.
Установка плагина Vertical Pod Autoscaler
Перед использованием VPA необходимо установить кластерный плагин Vertical Pod Autoscaler:
-
Войдите в систему и перейдите на страницу Administrators.
-
Нажмите Marketplace > Cluster Plugins, чтобы открыть список Cluster Plugins.
-
Найдите кластерный плагин Alauda Container Platform Vertical Pod Autoscaler, нажмите Install и перейдите на страницу установки.
Создание VerticalPodAutoscaler
Использование CLI
Вы можете создать VerticalPodAutoscaler через командную строку, определив YAML-файл и используя команду kubectl create. В следующем примере показано вертикальное автоскейлирование подов для объекта Deployment:
-
Создайте YAML-файл с именем
vpa.yamlсо следующим содержимым:- Используйте API autoscaling.k8s.io/v1.
- Имя VPA.
- Укажите целевой объект рабочей нагрузки. VPA использует селектор рабочей нагрузки для поиска подов, которым нужно скорректировать ресурсы. Поддерживаемые типы рабочих нагрузок: DaemonSet, Deployment, ReplicaSet, StatefulSet, ReplicationController, Job и CronJob.
- Укажите версию API объекта для масштабирования.
- Укажите тип объекта.
- Целевой ресурс, к которому применяется VPA.
- Политика обновления, определяющая, как VPA применяет рекомендации. updateMode может принимать значения:
- Auto: Автоматически устанавливает запросы ресурсов при создании подов и обновляет текущие поды до рекомендуемых значений. В настоящее время эквивалентно "Recreate". Этот режим может вызвать простой приложения. После поддержки обновления ресурсов пода на месте режим "Auto" будет использовать этот механизм.
- Recreate: Автоматически устанавливает запросы ресурсов при создании подов и эвакуирует текущие поды для обновления до рекомендуемых значений. Обновления на месте не используются.
- Initial: Устанавливает запросы ресурсов только при создании подов, без последующих изменений.
- Off: Не изменяет запросы ресурсов подов автоматически, только предоставляет рекомендации в объекте VPA.
- Политика ресурсов, позволяющая задавать отдельные стратегии для разных контейнеров. Например, установка режима контейнера в "Auto" означает, что для него будут вычисляться рекомендации, а "Off" — что рекомендации не будут вычисляться.
- Применить политику ко всем контейнерам в поде.
- Установить режим Auto или Off. Auto означает генерацию рекомендаций для этого контейнера, Off — отсутствие рекомендаций.
-
Примените YAML-файл для создания VPA:
Пример вывода:
-
После создания VPA вы можете просмотреть рекомендации, выполнив команду:
Пример вывода (частичный):
Использование веб-консоли
-
Перейдите в Container Platform.
-
В левой навигационной панели выберите Workloads > Deployments.
-
Кликните по Имя Deployment.
-
Прокрутите вниз до раздела Elastic Scaling и нажмите справа Update.
-
Выберите Vertical Scaling и настройте правила масштабирования.
-
Нажмите Update.
Расширенная настройка VPA
Опции политики обновления
updateMode: "Off"— VPA только предоставляет рекомендации без автоматического применения. Вы можете применять рекомендации вручную по мере необходимости.updateMode: "Auto"— Автоматически устанавливает запросы ресурсов при создании подов и обновляет текущие поды до рекомендуемых значений. В настоящее время эквивалентно "Recreate".updateMode: "Recreate"— Автоматически устанавливает запросы ресурсов при создании подов и эвакуирует текущие поды для обновления до рекомендуемых значений.updateMode: "Initial"— Устанавливает запросы ресурсов только при создании подов, без последующих изменений.minReplicas: <число>— Минимальное количество реплик. Обеспечивает наличие этого минимального количества подов в доступном состоянии при эвакуации подов Updater-ом. Должно быть больше 0.
Опции политики контейнера
containerName: "*"— Применить политику ко всем контейнерам в поде.mode: "Auto"— Автоматически генерировать рекомендации для контейнера.mode: "Off"— Не генерировать рекомендации для контейнера.
Примечания:
- Рекомендации VPA основаны на исторических данных использования, поэтому для получения точных рекомендаций может потребоваться несколько дней работы подов.
- При применении рекомендаций VPA в режиме Auto происходит пересоздание подов, что может вызвать временные перебои в работе приложения.
Последующие действия
После настройки VPA рекомендуемые значения лимитов ресурсов CPU и памяти для целевого контейнера можно просмотреть в разделе Elastic Scaling. В области Containers выберите вкладку целевого контейнера и нажмите иконку справа от Resource Limits, чтобы обновить лимиты ресурсов согласно рекомендуемым значениям.