Облачная платформаВсе платформы

CCE Кластер Autoscaler

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Введение

CCE Кластер Autoscaler аддон построен на компоненте Autoscaler сообщества. Он может автоматически регулировать количество узлов кластера в зависимости от потребностей приложений в ресурсах, оптимизируя использование ресурсов и производительность. Autoscaler является основным контроллером в Kubernetes. Он может автоматически масштабировать узлы в сторону увеличения или уменьшения в зависимости от требований к ресурсам. Когда ресурсов узлов недостаточно для размещения pod‑ов в кластере, Autoscaler добавляет дополнительные узлы с ресурсами для этих pod‑ов. Кроме того, если использование ресурсов добавленных узлов низкое, Autoscaler автоматически удалит их. Подробности о том, как реализовать автоматическое масштабирование узлов, см. Создание политики автоматического масштабирования узлов.

Сообщество с открытым исходным кодом: https://github.com/kubernetes/autoscaler

Как работает Add-on

CCE Кластер Autoscaler управляет автоматическим масштабированием наружу и внутрь.

  • Авто масштабирование наружу

    Вы можете выбрать один из следующих методов:

    • Если pod не может быть размещён из‑за недостаточных ресурсов рабочих узлов, CCE добавит больше узлов в кластер. Новые узлы имеют такие же квоты ресурсов, как те, которые настроены для пулов узлов, в которые попадают новые узлы.

      Авто масштабирование наружу будет выполнено, когда:

      • Ресурсы узлов недостаточны.
      • Если в конфигурациях планирования pod не установлена политика привязки к узлу. Если pod настроен с привязкой к узлу, система не будет автоматически добавлять новые узлы в кластер. Подробности о том, как настроить политики привязки к узлам, см. Настройка планирования привязки к узлу (nodeAffinity).

    • Когда кластер соответствует политике масштабирования узлов, также инициируется масштабирование кластера наружу. Подробности см. Создание политики автоматического масштабирования узлов.
    Note

    Аддон следует политике "No Less, No More". Например, если для создания pod требуется три ядра, а система поддерживает узлы с четырьмя и восемью ядрами, Autoscaler будет предпочитать создавать узел с четырьмя ядрами.

  • Авто масштабирование внутрь

    Если предварительно выделенные CPU и память узла остаются ниже порога масштабирования внутрь в течение продолжительного периода (по умолчанию 10 минут), кластер инициирует операцию масштабирования внутрь, автоматически удаляя неэффективно используемый узел. Тем не менее, узел нельзя удалить из кластера, если существуют следующие pod‑ы:

    • Pod‑ы, которые не соответствуют определённым требованиям, установленным в Pod Disruption Budgets (PodDisruptionBudget)
    • Pod‑ы, которые не могут быть размещены на других узлах из‑за ограничений, таких как политики привязки и анти‑привязки
    • Pod‑ы, которые имеют cluster-autoscaler.kubernetes.io/safe-to-evict: 'false' аннотацию
    • Pod‑ы (за исключением созданных DaemonSet‑ами в пространстве имён kube-system), находящиеся в пространстве имён kube-system
    • Pod‑ы, которые не созданы контроллерами (например, Deployments, ReplicaSets, jobs и StatefulSets)
    Note
    • Когда узел соответствует условиям масштабирования внутрь, CCE Кластер Autoscaler добавит DeletionCandidateOfClusterAutoscaler метку taint узлу заранее, чтобы предотвратить размещение pod‑ов на этом узле. После удаления аддона CCE Кластер Autoscaler, если метка taint всё ещё присутствует на узле, удалите её вручную.
    • Для обеспечения стабильности системы и эффективного использования ресурсов CCE Кластер Autoscaler использует консервативную политику. Узлы, которые не полностью простаивают, высвобождаются по одному. Когда эти узлы размещают pod‑ы с настроенным плавным завершением, процесс высвобождения может затянуться. В результате общий процесс масштабирования внутрь может занять больше времени.

Примечания и ограничения

  • Во время установки аддона в кластере должно быть достаточно ресурсов.
  • Этот аддон поддерживает VM узлы и не поддерживает PM узлы.
  • Пул узлов по умолчанию не поддерживает авто масштабирование. Подробности см. Description of DefaultPool.
  • Масштабирование узла внутрь приведёт к потере данных PVC/PV для локальных PV связанных с узлом. Эти PVC и PV нельзя восстановить или использовать снова. При масштабировании узла внутрь pod, использующий локальный PV, будет вытеснен с узла. Новый pod будет создан, но останется в состоянии ожидания. Это происходит потому, что PVC, используемый pod‑ом, имеет метку узла, из‑за чего pod нельзя разместить.
  • Когда используется CCE Кластер Autoscaler, некоторые taint‑ы или аннотации могут влиять на авто масштабирование. Поэтому не используйте следующие taint‑ы или аннотации в кластерах:
    • ignore-taint.cluster-autoscaler.kubernetes.io: Тaint применяется к узлам. Kubernetes‑native Autoscaler поддерживает защиту от аномального масштабирования наружу и периодически оценивает долю доступных узлов в кластере. Когда доля неготовых узлов превышает 45 %, срабатывает защита. В этом случае все узлы с ignore-taint.cluster-autoscaler.kubernetes.io taint в кластере отфильтровываются из шаблона Autoscaler и записываются как неготовые узлы, что влияет на масштабирование кластера.
    • cluster-autoscaler.kubernetes.io/enable-ds-eviction: Аннотация применяется к pod‑ам, определяя, могут ли pod‑ы DaemonSet быть вытеснены Autoscaler. Подробности см. Well-Known Labels, Annotations and Taints.
  • CCE Кластер Autoscaler версии ранее 1.27.205, 1.28.172, 1.29.134, 1.30.100, 1.32.38, 1.33.31 и 1.31.62 не поддерживает развертывание одновременно Snt9 и CPU узлов в одном кластере. Если оба типа узлов работают в одном кластере, узлы Snt9 будут рассматриваться как неготовые узлы. Когда доля неготовых узлов превышает 45 % от общего количества, срабатывает система защиты. Это повлияет на масштабирование пулов CPU узлов в кластере.

Установка аддона

  1. Войдите в CCE console и щёлкните название кластера, чтобы открыть консоль кластера.
  2. В навигационной панели выберите Дополнения. Найдите CCE Cluster Autoscaler справа и нажмите Установить.
  3. На Установить аддон странице, настройте спецификации по необходимости.

    Существует три типа предустановленных спецификаций в зависимости от масштаба кластера. Вы можете выбрать один по требованию. Система настроит количество pod‑ов и квоты ресурсов для аддона на основе выбранных предустановленных спецификаций. Вы можете увидеть конфигурации в консоли.

    Если ваш кластер крупный и предустановленные спецификации не удовлетворяют потребностям, вы можете настроить спецификации ресурсов и оценить количество pod‑ов в кластере, чтобы лучше определить потребление памяти аддоном. Рекомендуемые запросы и лимиты памяти в типичных больших кластерах могут быть рассчитаны следующим образом:

    • Запрос памяти = Количество pod‑ов × Размер файлов pod YAML (KB)/10000 × 0.28 GiB + 1 GiB
    • Память лимит =Запрос памяти + 2 GiB

    Например, если имеется 20 000 pod‑ов и размер YAML‑файла каждого pod‑а составляет 10 KB, запрос памяти будет 6,6 GiB (2 × 10 × 0.28 GiB + 1 GiB), а лимит памяти — 8,6 GiB (6,6 GiB + 2 GiB). (Вычисленные значения могут отличаться от рекомендаций, перечисленных в Table 1.

    Таблица 1 Рекомендованный размер памяти аддона в сценариях крупномасштабных развертываний

    Количество pod‑ов (10 KB для каждого YAML‑файла pod‑а)

    Рекомендуемый запрос памяти

    Рекомендуемый лимит памяти

    10000

    4 GiB

    6 GiB

    30000

    8 GiB

    10 GiB

    50000

    16 GiB

    18 GiB

    80000

    24 GiB

    26 GiB

    100000

    28 GiB

    30 GiB

  4. Настройте политики развертывания для pod‑ов аддона.

    Note
    • Политики планирования не применяются к pod‑ам DaemonSet аддона.
    • При настройке развертывания в нескольких AZ или привязки к узлам убедитесь, что имеются узлы, соответствующие политике планирования, и ресурсы в кластере достаточны. Иначе аддон не сможет работать.
    Таблица 2 Конфигурации планирования аддона

    Параметр

    Описание

    Развертывание в нескольких AZ

    • Предпочтительно: Pod‑ы развертывания аддона будут предпочтительно планироваться на узлы в разных AZ. Если все узлы кластера находятся в одном AZ, pod‑ы будут размещаться на разных узлах в этом AZ.
    • Эквивалентный режим: Pod‑ы развертывания аддона равномерно планируются на узлы кластера в каждом AZ. Если добавлен новый AZ, рекомендуется увеличить количество pod‑ов аддона для развертывания HA между AZ. При эквивалентном развертывании в нескольких AZ разница в числе pod‑ов аддона между различными AZ будет ≤ 1. Если ресурсы в одном из AZ недостаточны, pod‑ы не могут быть размещены в этом AZ.
    • Принудительно: Pod‑ы развертывания аддона принудительно планируются на узлы в разных AZ. В каждом AZ может быть не более одного pod‑а. Если узлы кластера находятся не в разных AZ, некоторые pod‑ы аддона могут работать некорректно. Если узел неисправен, pod‑ы аддона на нём могут не успеть мигрировать.

    Привязка к узлу

    • Не настроена: Привязка к узлу отключена для аддона.
    • Указать узел: Укажите узлы, где будет развернут аддон. Если узлы не указаны, pod‑ы аддона будут случайно планироваться согласно политике планирования кластера по умолчанию.
    • Указать пул узлов: Укажите пул узлов, где развернуты pod‑ы аддона. Если пулов не указано, pod‑ы аддона будут случайно планироваться согласно политике планирования кластера по умолчанию.
    • Настроить привязку: Введите метки узлов, где будут развернуты pod‑ы аддона, для более гибких политик планирования. Если метки узлов не указаны, pod‑ы аддона будут случайно планироваться согласно политике планирования кластера по умолчанию.

      Если настроено несколько пользовательских политик привязки, убедитесь, что в кластере есть узлы, соответствующие всем политикам привязки. Иначе аддон не сможет работать.

    Толерация

    Использование одновременно taint‑ов и толераций позволяет (не принудительно) pod‑ам развертывания аддона планироваться на узел с соответствующими taint‑ами и управлять политиками вытеснения pod‑ов после применения taint‑ов к хост‑узлам.

    Аддон добавляет политику толерации по умолчанию для node.kubernetes.io/not-ready и node.kubernetes.io/unreachable taint‑ов соответственно. Временное окно толерации — 60 с.

    Подробности см. Configuring Tolerance Policies.

  5. После завершения настройки нажмите Установить.

Компоненты

Таблица 3 Компоненты аддона

Компонент

Описание

Тип ресурса

Autoscaler

Авто масштабирование для Kubernetes кластеров

Развертывание