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

Обзор Node Pool

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

Введение

CCE вводит node pools, чтобы помочь вам более эффективно управлять узлами в кластерах Kubernetes. Node pool содержит один узел или группу узлов с одинаковой конфигурацией в кластере.

Вы можете создавать пользовательские node pools в консоли CCE. С помощью node pools вы можете быстро создавать, управлять и удалять узлы, не влияя на кластер. Все узлы в пользовательском node pool имеют одинаковый тип и конфигурацию. Невозможно настроить отдельный узел в node pool. Любое изменение применяется ко всем узлам в node pool.

Вы также можете использовать node pools для автоматического масштабирования.

  • Когда pod в кластере не может быть запланирован из‑за недостатка ресурсов, автоматически может быть запущено масштабирование наружу.
  • Когда появляется простой узел или достигается порог метрики мониторинга, автоматически может быть запущено масштабирование внутрь.

В этом разделе описывается, как работают node pools в CCE, а также как создавать и управлять node pools.

Архитектура Node Pool

Все узлы в пуле обычно имеют общее:

  • Node OS
  • Node login mode
  • Node container runtime
  • Enterprise project
  • Параметры запуска компонентов Kubernetes на узле
  • Пользовательский скрипт запуска узла
  • Метки и отталкивания Kubernetes

CCE предоставляет следующие расширенные атрибуты для пулов узлов:

  • ОС пула узлов
  • Максимальное количество pod-ов на каждом узле в пуле узлов

Описание DefaultPool

DefaultPool не является реальным пулом узлов. Он только классифицирует узлы, которые не находятся в пользовательских пулах узлов. Эти узлы создаются напрямую в консоли или с помощью вызова API. DefaultPool не поддерживает любые функции пользовательских пулов узлов, включая масштабирование и настройку параметров. DefaultPool нельзя редактировать, удалять, расширять или автоматически масштабировать, а узлы в нём нельзя мигрировать.

Приложения

Если требуется кластер крупного масштаба, рекомендуется использовать пулы узлов для управления узлами.

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

Table 1 Использование пулов узлов для различных сценариев управления

Сценарий

Функция

Несколько разнородных узлов (с различными моделями и конфигурациями) в кластере

Узлы можно группировать в разные пулы для управления.

Частое масштабирование узлов требуется в кластере

Пулы узлов поддерживают авто масштабирование для динамического добавления или уменьшения узлов.

Сложные правила планирования приложений в кластере

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

Вы можете настраивать основные компоненты с тонкой гранулярностью.

  • Эта функция поддерживается только в кластерах версии v1.15 и выше. Она не отображается для версий ниже v1.15.
  • Пул узлов по умолчанию не поддерживает этот тип конфигурации.

Развертывание нагрузки в указанном пуле узлов

Все узлы в пуле узлов имеют метку cce.cloud.com/cce-nodepool. Чтобы гарантировать, что нагрузка будет запланирована на узлы из конкретного пула узлов, можно использовать поле nodeSelector в настройках нагрузки. Пример приведён ниже:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
cce.cloud.com/cce-nodepool: "nodepool_name" # The label value is the node pool name.
containers:
- image: nginx:latest
imagePullPolicy: IfNotPresent
name: nginx
imagePullSecrets:
- name: default-secret

Для более сложного планирования вы можете определить пользовательские правила аффинности, такие как жёсткие ограничения, при которых планирование происходит только при выполнении всех указанных условий, и мягкие ограничения, при которых планирование может продолжаться, даже если некоторые условия не выполнены. Подробнее см. Configuring Node Affinity Scheduling (nodeAffinity).

Кроме того, вы можете указать запросы ресурсов для контейнеров, чтобы гарантировать, что нагрузки будут запланированы только на узлы, соответствующие требуемым ресурсным критериям. Подробнее см. Resource Management for Pods and Containers. Например, если pod нагрузки запрашивает четыре ядра CPU, он не будет запланирован на узел, предоставляющий только два.

Жизненный цикл пула узлов

Жизненный цикл пула узлов CCE состоит из нескольких фаз и состояний.

Table 2 статусы жизненного цикла пула узлов

Статус

Описание

Нормально

Пул узлов работает корректно и может масштабироваться.

Масштабирование

Узлы добавляются в пул узлов или удаляются из него. Это происходит во время удаления узла, миграции, принятия или удаления.

Удаление

Пул узлов удаляется.

Ошибка

В пуле узлов произошла ошибка.

Полезные ссылки

Вы можете войти в консоль управления CCE и обратиться к следующим разделам для выполнения операций с пулами узлов: