CCE вводит node pools, чтобы помочь вам более эффективно управлять узлами в кластерах Kubernetes. Node pool содержит один узел или группу узлов с одинаковой конфигурацией в кластере.
Вы можете создавать пользовательские node pools в консоли CCE. С помощью node pools вы можете быстро создавать, управлять и удалять узлы, не влияя на кластер. Все узлы в пользовательском node pool имеют одинаковый тип и конфигурацию. Невозможно настроить отдельный узел в node pool. Любое изменение применяется ко всем узлам в node pool.
Вы также можете использовать node pools для автоматического масштабирования.
В этом разделе описывается, как работают node pools в CCE, а также как создавать и управлять node pools.
Все узлы в пуле обычно имеют общее:
CCE предоставляет следующие расширенные атрибуты для пулов узлов:
DefaultPool не является реальным пулом узлов. Он только классифицирует узлы, которые не находятся в пользовательских пулах узлов. Эти узлы создаются напрямую в консоли или с помощью вызова API. DefaultPool не поддерживает любые функции пользовательских пулов узлов, включая масштабирование и настройку параметров. DefaultPool нельзя редактировать, удалять, расширять или автоматически масштабировать, а узлы в нём нельзя мигрировать.
Если требуется кластер крупного масштаба, рекомендуется использовать пулы узлов для управления узлами.
В следующей таблице описаны различные сценарии управления кластером крупного масштаба и функции пулов узлов в каждом сценарии.
Сценарий | Функция |
|---|---|
Несколько разнородных узлов (с различными моделями и конфигурациями) в кластере | Узлы можно группировать в разные пулы для управления. |
Частое масштабирование узлов требуется в кластере | Пулы узлов поддерживают авто масштабирование для динамического добавления или уменьшения узлов. |
Сложные правила планирования приложений в кластере | Node pool tags можно использовать для быстрой указания правил планирования сервисов. |
Function | Description | Precautions |
|---|---|---|
Создание пула узлов | Add node pool. | Рекомендуется, чтобы кластер содержал не более 100 пулов узлов. |
Удаление пула узлов | Удаление пула узлов приведёт к удалению узлов в пуле. Pods на этих узлах будут автоматически перенесены на доступные узлы в других пулах узлов. | Если pods в node pool имеют конкретный node selector и ни один из остальных узлов в кластере не удовлетворяет node selector, pods станут unschedulable. |
Включение авто масштабирования для пула узлов | После включения автоматического масштабирования узлы будут автоматически создаваться или удаляться в пуле узлов в зависимости от нагрузки кластера. | Не храните важные данные на узлах в пуле узлов, так как узлы могут быть удалены после масштабирования вниз. Данные на удалённых узлах нельзя восстановить. |
Отключение автоматического масштабирования для пула узлов | После отключения автоматического масштабирования количество узлов в пуле узлов не будет автоматически изменяться в зависимости от нагрузки кластера. | Нет |
Настройка размера пула узлов | Количество узлов в пуле узлов можно напрямую изменить. Если количество узлов уменьшено, узлы удаляются случайным образом из текущего пула узлов. | После включения автоматического масштабирования не рекомендуется вручную изменять размер пула узлов. |
Изменение конфигураций пула узлов | Можно изменить имя пула узлов и количество узлов, добавить или удалить метки Kubernetes, теги ресурсов и taints, а также настроить параметры пула узлов, такие как диск, ОС и среда выполнения контейнеров пула узлов. | Удалённые или добавленные метки Kubernetes и taints (а также их количество) будут применяться ко всем узлам в пуле узлов, что может вызвать переназначение pod‑ов. Поэтому будьте осторожны при выполнении этой операции. |
Удаление узла из пула узлов | Узлы в пуле узлов могут быть перенесены в пул узлов по умолчанию того же кластера. | Узлы в пользовательском пуле узлов нельзя перенести напрямую в другой пользовательский пул узлов. |
Копирование пула узлов | Вы можете скопировать конфигурацию существующего пула узлов, чтобы создать новый пул узлов. | None |
Настройка параметров Kubernetes | Вы можете настраивать основные компоненты с тонкой гранулярностью. |
|
Все узлы в пуле узлов имеют метку cce.cloud.com/cce-nodepool. Чтобы гарантировать, что нагрузка будет запланирована на узлы из конкретного пула узлов, можно использовать поле nodeSelector в настройках нагрузки. Пример приведён ниже:
apiVersion: apps/v1kind: Deploymentmetadata:name: nginxspec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:nodeSelector:cce.cloud.com/cce-nodepool: "nodepool_name" # The label value is the node pool name.containers:- image: nginx:latestimagePullPolicy: IfNotPresentname: nginximagePullSecrets:- name: default-secret
Для более сложного планирования вы можете определить пользовательские правила аффинности, такие как жёсткие ограничения, при которых планирование происходит только при выполнении всех указанных условий, и мягкие ограничения, при которых планирование может продолжаться, даже если некоторые условия не выполнены. Подробнее см. Configuring Node Affinity Scheduling (nodeAffinity).
Кроме того, вы можете указать запросы ресурсов для контейнеров, чтобы гарантировать, что нагрузки будут запланированы только на узлы, соответствующие требуемым ресурсным критериям. Подробнее см. Resource Management for Pods and Containers. Например, если pod нагрузки запрашивает четыре ядра CPU, он не будет запланирован на узел, предоставляющий только два.
Жизненный цикл пула узлов CCE состоит из нескольких фаз и состояний.
Статус | Описание |
|---|---|
Нормально | Пул узлов работает корректно и может масштабироваться. |
Масштабирование | Узлы добавляются в пул узлов или удаляются из него. Это происходит во время удаления узла, миграции, принятия или удаления. |
Удаление | Пул узлов удаляется. |
Ошибка | В пуле узлов произошла ошибка. |
Вы можете войти в консоль управления CCE и обратиться к следующим разделам для выполнения операций с пулами узлов: