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

Node Pool Overview

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

Introduction

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

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

Вы также можете использовать node pools для auto scaling.

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

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

Node Pool Architecture

All nodes in a pool typically share:

  • Node OS
  • Node login mode
  • Node container runtime
  • Enterprise project
  • Startup parameters of Kubernetes components on a node
  • Пользовательский скрипт запуска узла
  • Метки и таинты Kubernetes

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

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

Описание DefaultPool

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

Сценарии применения

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

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

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

Сценарий

Функция

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

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

В кластере часто требуется 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

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

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

Развертывание нагрузки в указанном node pool

Все узлы в node pool имеют метку cce.cloud.com/cce-nodepool. Чтобы гарантировать, что нагрузка будет запланирована на узлы из конкретного node pool, вы можете использовать поле 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 и обратитесь к следующим разделам для выполнения операций с node pool: