Настройка VerticalPodAutoscaler (VPA)
Для как stateless, так и 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..
- В вашем кластере должен быть установлен кластерный плагин Vertical Pod Autoscaler от Alauda Container Platform.
Установка плагина 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: <number>— Минимальное количество реплик. Обеспечивает наличие этого минимального количества подов при эвакуации подов Updater’ом. Должно быть больше 0.
Опции политики контейнера
containerName: "*"— Применить политику ко всем контейнерам в поде.mode: "Auto"— Автоматически генерировать рекомендации для контейнера.mode: "Off"— Не генерировать рекомендации для контейнера.
Примечания:
- Рекомендации VPA основаны на исторических данных использования, поэтому для получения точных рекомендаций поды должны работать несколько дней.
- При применении рекомендаций VPA в режиме Auto происходит пересоздание подов, что может вызвать временные перебои в работе приложения.
Последующие действия
После настройки VPA рекомендуемые значения лимитов ресурсов CPU и памяти для целевого контейнера можно просмотреть в области Elastic Scaling. В разделе Containers выберите вкладку целевого контейнера и нажмите иконку справа от Resource Limits, чтобы обновить лимиты ресурсов согласно рекомендуемым значениям.