Облачная платформаAdvanced

CCE Кластер Autoscaler

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

Введение

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

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

Как работает дополнение

Autoscaler управляет автоматическим масштабированием вверх и вниз.

  • Автоматическое масштабирование вверх

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

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

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

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

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

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

  • Автоматическое масштабирование вниз

    Когда узел кластера находится в простое определённый период времени (по умолчанию 10 минут), инициируется масштабирование кластера вниз, и узел автоматически удаляется. Однако узел не может быть удалён из кластера, если существуют следующие pod'ы:

    • Pod'ы, не удовлетворяющие специфическим требованиям, установленным в Pod Disruption Budgets (PodDisruptionBudget)
    • Pod'ы, которые нельзя запланировать на другие узлы из‑за ограничений, таких как политики привязки и антипривязки
    • Pod'ы, которые имеют cluster-autoscaler.kubernetes.io/safe-to-evict: 'false' аннотация
    • Pod'ы (за исключением тех, которые созданы DaemonSets в пространстве имён kube-system), существующие в пространстве имён kube-system на узле
    • Pod'ы, не созданные контроллером (Deployment/ReplicaSet/job/StatefulSet)
    Note

    Когда узел удовлетворяет условиям масштабирования вниз, Autoscaler добавляет DeletionCandidateOfClusterAutoscaler метку (taint) узлу заранее, чтобы предотвратить планирование pod'ов на этот узел. После удаления дополнения Autoscaler, если метка всё ещё присутствует на узле, удалите её вручную.

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

  • Во время установки дополнения в кластере должно быть достаточно ресурсов.
  • Это дополнение поддерживает VMs только.
  • Пул узлов по умолчанию не поддерживает автоматическое масштабирование. Подробности см. Описание DefaultPool.
  • Масштабирование кластера вниз приведёт к потере данных PVC/PV для локальных PV связанных с узлом. Эти PVC и PV нельзя восстановить или использовать повторно. При масштабировании кластера вниз pod, использующий локальный PV, будет выгружен с узла. Будет создан новый pod, но он останется в состоянии ожидания, поскольку метка PVC, привязанного к нему, конфликтует с меткой узла.
  • При использовании CCE Cluster Autoscaler некоторые метки (taint) или аннотации могут влиять на автоматическое масштабирование. Поэтому не используйте следующие taint'ы или аннотации в кластерах:
    • ignore-taint.cluster-autoscaler.kubernetes.io: Эта метка (taint) применяется к узлам. Автономный Autoscaler, нативный для Kubernetes, защищает от аномального масштабирования вверх и периодически оценивает долю доступных узлов в кластере. Когда доля неготовых узлов превышает 45 %, включается защита. В этом случае все узлы с ignore-taint.cluster-autoscaler.kubernetes.io меткой в кластере исключаются из шаблона Autoscaler и учитываются как неготовые узлы, что влияет на масштабирование кластера.
    • cluster-autoscaler.kubernetes.io/enable-ds-eviction: Эта аннотация применяется к pod'ам и определяет, могут ли pod'ы DaemonSet быть выгружены Autoscaler'ом. Подробности см. Известные метки, аннотации и taint'ы.

Установка дополнения

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

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

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

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

    Параметр

    Описание

    Развертывание Multi-AZ

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

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

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

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

    Терпимость

    Использование taints и tolerations позволяет (не принудительно) размещать Deployment add‑off на узле с соответствующими taints и управлять политиками выселения Deployment после того, как узел, где он находится, будет помечен taint.

    add‑off добавляет политику терпимости по умолчанию для node.kubernetes.io/not-ready и node.kubernetes.io/unreachable taints соответственно. Окно времени терпимости составляет 60 с.

    Для получения подробной информации см. Настройка политик терпимости.

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

Компоненты

Таблица 2 Компоненты add‑off

Компонент

Описание

Тип ресурса

Автоскейлер

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

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