CCE вводит node pools, чтобы помочь вам более эффективно управлять узлами в кластерах Kubernetes. node pool содержит один узел или группу узлов с идентичными конфигурациями в кластере.
Вы можете создавать custom node pools в CCE console. С помощью node pools вы можете быстро создавать, управлять и удалять узлы, не влияя на кластер. Все узлы в custom node pool имеют один и тот же тип и конфигурации. Вы не можете настроить отдельный узел в node pool. Любое изменение применяется ко всем узлам в node pool.
Вы также можете использовать node pools для auto scaling.
В этом разделе описывается, как работают node pools в CCE и как создавать и управлять node pools.
All nodes in a pool typically share:
CCE предоставляет следующие расширенные атрибуты для пулов узлов:
DefaultPool не является реальным пулом узлов. Он только классифицирует узлы, которые не находятся в пользовательских пулах узлов. Эти узлы создаются напрямую в консоли или с помощью вызова API. DefaultPool не поддерживает любые функции пользовательских пулов узлов, включая масштабирование и настройку параметров. DefaultPool нельзя редактировать, удалять, расширять или автоматически масштабировать, а узлы в нём нельзя мигрировать.
Когда требуется кластер большого масштаба, рекомендуется использовать пулы узлов для управления узлами.
В следующей таблице описаны различные сценарии управления кластером большого масштаба и функции пулов узлов в каждом сценарии.
Сценарий | Функция |
|---|---|
Несколько разнородных узлов (с различными моделями и конфигурациями) в кластере | Узлы можно группировать в разные пулы для управления. |
В кластере часто требуется node scaling | Node pools поддерживают auto scaling для динамического добавления или уменьшения nodes |
Сложные правила планирования приложений в кластере | Теги node pool можно использовать для быстрой указания правил планирования сервисов |
Функция | Описание | Мера предосторожности |
|---|---|---|
Создание node pool | Добавить node pool | Рекомендуется, чтобы кластер содержал не более 100 node pools |
Удаление node pool | Удаление node pool приведёт к удалению nodes в пуле. Pods на этих nodes будут автоматически перенесены на доступные nodes в других node pools | Если pods в node pool имеют конкретный node selector и ни один из остальных nodes в кластере не удовлетворяет node selector, pods станут unschedulable |
Включение auto scaling для node pool | После включения автоматического масштабирования узлы будут автоматически создаваться или удаляться в пуле узлов в зависимости от нагрузки кластера. | Не храните важные данные на узлах в пуле узлов, так как узлы могут быть удалены после масштабирования вниз. Данные на удалённых узлах нельзя восстановить. |
Отключение автоматического масштабирования для пула узлов | После отключения автоматического масштабирования количество узлов в пуле узлов не будет автоматически изменяться в зависимости от нагрузки кластера. | None |
Регулировка размера пула узлов | Количество узлов в пуле узлов можно напрямую изменить. Если количество узлов уменьшено, узлы случайным образом удаляются из текущего пула узлов. | После включения автоматического масштабирования не рекомендуется вручную изменять размер пула узлов. |
Изменение конфигураций пула узлов | Можно изменить название пула узлов и количество узлов, добавить или удалить метки Kubernetes, теги ресурсов и taints, а также настроить параметры пула узлов, такие как диск, ОС и среда выполнения контейнеров. | Удалённые или добавленные метки Kubernetes и taints (а также их количество) будут применяться ко всем узлам в пуле узлов, что может вызвать переназначение pod‑ов. Поэтому будьте осторожны при выполнении этой операции. |
Удаление узла из пула узлов | Узлы в пуле узлов можно перенести в пул узлов по умолчанию того же кластера. | Узлы в пуле узлов по умолчанию нельзя перенести в другие пулы узлов, а узлы в пользовательском пуле узлов нельзя перенести в другие пользовательские пулы узлов. |
Копирование пула узлов | Вы можете скопировать конфигурацию существующего node pool, чтобы создать новый node pool. | None |
Настройка параметров Kubernetes | Вы можете настраивать основные компоненты с тонкой гранулярностью. |
|
Все узлы в node pool имеют метку cce.cloud.com/cce-nodepool. Чтобы гарантировать, что нагрузка будет запланирована на узлы из конкретного node pool, вы можете использовать поле 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 и обратитесь к следующим разделам для выполнения операций с node pool: