Создание пулов узлов для кластера в Служба Azure Kubernetes (AKS)
В службе Azure Kubernetes Service (AKS) узлы одной и той же конфигурации группируются в пулы узлов. Эти узлы содержат базовые виртуальные машины, на которых выполняются ваши приложения. При создании кластера AKS вы определяете начальное число узлов и их размер (SKU), который создает пул системных узлов.
Для поддержки приложений, имеющих разные требования к вычислительным ресурсам или хранилищу, можно создать пулы узлов пользователей. Пулы системных узлов служат основной целью размещения критически важных системных модулей pod, таких как CoreDNS и konnectivity
. Пулы узлов пользователей служат основной цели размещения модулей Pod приложения. Например, используйте больше пулов узлов пользователей для предоставления GPU для вычислительных приложений или доступа к высокопроизводительном хранилищу SSD. Однако если вы хотите использовать только один пул в кластере AKS, вы можете запланировать модули pod приложений в пулах системных узлов.
Примечание.
Эта функция обеспечивает больший контроль над созданием и управлением несколькими пулами узлов и требует отдельных команд для операций создания и обновления и удаления (CRUD). Ранее операции кластера с помощью az aks create
или использования API managedCluster и az aks update
были единственными вариантами изменения уровня управления и пула узлов. Эта функция предоставляет отдельный набор операций для пулов агентов через API agentPool и требует использования az aks nodepool
набора команд для выполнения операций в отдельном пуле узлов.
В этой статье показано, как создать один или несколько пулов узлов в кластере AKS.
Подготовка к работе
- Необходимо установить и настроить Azure CLI версии 2.2.0 или более поздней. Чтобы узнать версию, выполните команду
az --version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0. - Просмотрите параметры хранилища для приложений в Служба Azure Kubernetes, чтобы спланировать конфигурацию хранилища.
Ограничения
Следующие ограничения применяются при создании кластеров AKS, поддерживающих несколько пулов узлов:
- См. раздел Квоты, ограничения размера виртуальной машины и доступность региона в службе Kubernetes Azure (AKS).
- Вы можете удалить пул системных узлов, если у вас есть другой системный пул узлов, который будет использоваться в кластере AKS. В противном случае невозможно удалить пул системных узлов.
- Системные пулы должны содержать по крайней мере один узел, а пулы узлов пользователей могут содержать ноль или более узлов.
- Кластер AKS должен использовать подсистему балансировки нагрузки SKU уровня "Стандартный" для использования нескольких пулов узлов. Эта функция не поддерживается с подсистемами балансировки нагрузки SKU уровня "Базовый".
- Кластер AKS должен использовать Масштабируемые наборы виртуальных машин для узлов.
- Имя пула узлов может содержать только буквы в нижнем регистре и должно начинаться с буквы в нижнем регистре.
- Для пулов узлов Linux длина должна составлять от 1 до 12 символов.
- Для пулов узлов Windows длина должна составлять от 1 до 6 символов.
- Все пулы узлов должны находиться в одной виртуальной сети.
- При создании нескольких пулов узлов во время создания кластера версии Kubernetes для пулов узлов должны соответствовать версии, заданной для плоскости управления.
Создание кластера AKS
Внимание
При запуске одного пула системных узлов для кластера AKS в рабочей среде мы рекомендуем использовать по крайней мере три узла для пула узлов. Если один узел выходит из строя, ресурсы плоскости управления теряются и избыточность скомпрометирована. Вы можете снизить этот риск, имея больше узлов плоскости управления.
Создайте группу ресурсов Azure с помощью
az group create
команды.az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Создайте кластер AKS с одним пулом узлов с помощью
az aks create
команды.az aks create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --vm-set-type VirtualMachineScaleSets \ --node-count 2 \ --location $LOCATION \ --load-balancer-sku standard \ --generate-ssh-keys
Создание кластера занимает несколько минут.
Когда кластер будет готов, получите учетные данные кластера с помощью
az aks get-credentials
команды.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Добавление пула узлов
Кластер, созданный на предыдущем шаге, имеет один пул узлов. В этом разделе мы добавим второй пул узлов в кластер.
Создайте пул узлов с помощью
az aks nodepool add
команды. В следующем примере создается пул узлов с именем mynodepool , на котором выполняются три узла:az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-count 3
Проверьте состояние пулов узлов с помощью
az aks node pool list
команды и укажите имя группы ресурсов и кластера.az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
В следующем примере выходных данных показано, что mynodepool успешно создан с тремя узлами. При создании кластера AKS на предыдущем шаге создается nodepool1 по умолчанию с числом узлов, равным 2.
[ { ... "count": 3, ... "name": "mynodepool", "orchestratorVersion": "1.15.7", ... "vmSize": "Standard_DS2_v2", ... }, { ... "count": 2, ... "name": "nodepool1", "orchestratorVersion": "1.15.7", ... "vmSize": "Standard_DS2_v2", ... } ]
Пулы узлов ARM64
Процессор ARM64 обеспечивает вычислительные мощности с низким потреблением электроэнергии для рабочих нагрузок Kubernetes. Чтобы создать пул узлов ARM64, необходимо выбрать виртуальную машину серии Dpsv5, Dplsv5 или Epsv5.
Ограничения
- Пулы узлов ARM64 не поддерживаются в кластерах с поддержкой Defender с версией Kubernetes меньше 1.29.0.
- Пулы узлов с поддержкой FIPS не поддерживаются с SKU ARM64.
- Пулы узлов Windows не поддерживаются с номерами SKU ARM64.
Добавление пула узлов ARM64
Добавьте пул узлов ARM64 в существующий кластер с помощью .
az aks nodepool add
az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $ARM_NODE_POOL_NAME \ --node-count 3 \ --node-vm-size Standard_D2pds_v5
Пулы узлов Linux Azure
Узел контейнера Linux для AKS — это дистрибутив Linux с открытым исходным кодом, доступный в качестве узла контейнера AKS. Она обеспечивает высокую надежность, безопасность и согласованность. Он включает только минимальный набор пакетов, необходимых для выполнения рабочих нагрузок контейнеров, что повышает время загрузки и общую производительность.
Добавление пула узлов Linux Azure
Добавьте пул узлов Linux Azure в существующий кластер с помощью
az aks nodepool add
команды и укажите--os-sku AzureLinux
.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $AZ_LINUX_NODE_POOL_NAME \ --os-sku AzureLinux
Перенос узлов Ubuntu на узлы Linux Azure
Вы можете перенести существующие узлы Ubuntu в Azure Linux с помощью одного из следующих методов:
- Удалите существующие пулы узлов и добавьте новые пулы узлов Azure Linux.
- Миграция SKU ОС на месте.
Пулы узлов с уникальными подсетями
Для логической изоляции может потребоваться разделение узлов кластера на отдельные пулы. Отдельные подсети, выделенные для каждого пула узлов в кластере, могут помочь обеспечить эту изоляцию, которая может решать такие требования, как наличие неконтентного адресного пространства виртуальной сети для разделения между пулами узлов.
Примечание.
Используйте Azure CLI как минимум версии 2.35.0
.
Ограничения
- Все подсети, назначенные пулам узлов, должны принадлежать одной виртуальной сети.
- Системные модули pod должны иметь доступ ко всем узлам и модулям pod в кластере, чтобы обеспечить критически важные функциональные возможности, такие как разрешение DNS и туннелирование журналов kubectl/exec/port-forward proxy.
- При развертывании виртуальной сети после создания кластера необходимо обновить кластер перед добавлением подсети за пределами исходного блока CIDR. Хотя ошибки AKS в пуле агентов добавляются,
aks-preview
расширение Azure CLI (версия 0.5.66 и выше) теперь поддерживает выполнениеaz aks update
команды только с необходимыми-g <resourceGroup> -n <clusterName>
аргументами. Эта команда выполняет операцию обновления без внесения каких-либо изменений, которые могут восстановить кластер, застрявший в состоянии сбоя. - В кластерах с версией Kubernetes менее 1.23.3, трафик SNATs kube-proxy из новых подсетей, что может привести к удалению пакетов политикой сети Azure.
- Трафик SNAT для узлов Windows в новые подсети, пока пул узлов не будет переосмыслен.
- Внутренние подсистемы балансировки нагрузки по умолчанию — одна из подсетей пула узлов.
Добавление пула узлов с уникальной подсетью
Добавьте пул узлов с уникальной подсетью в существующий кластер с помощью
az aks nodepool add
команды и укажите .--vnet-subnet-id
az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-count 3 \ --vnet-subnet-id $SUBNET_RESOURCE_ID
Пулы узлов с поддержкой FIPS
Дополнительные сведения о включении стандарта FIPS для кластера AKS см. в разделе Включение стандарта FIPS для пулов узлов Службы Azure Kubernetes (AKS).
Пулы узлов Windows Server с containerd
Начиная с Kubernetes версии 1.20 и выше, можно указать containerd
в качестве среды выполнения контейнеров для пулов узлов Windows Server 2019. Начиная с Kubernetes 1.23, containerd
по умолчанию используется только среда выполнения контейнеров для Windows.
Внимание
При использовании containerd
с пулами узлов Windows Server 2019:
- Как уровень управления, так и пулы узлов Windows Server 2019 должны использовать Kubernetes версии 1.20 или более поздней.
- При создании или обновлении пула узлов для запуска контейнеров Windows Server значение
--node-vm-size
по умолчанию для Standard_D2s_v3, которое было минимальным рекомендуем для пулов узлов Windows Server 2019 до Kubernetes версии 1.20. Минимальный рекомендуемый размер для пулов узлов Windows Server 2019 при использованииcontainerd
— Standard_D4s_v3. При настройке--node-vm-size
параметра проверьте список ограниченных размеров виртуальных машин. - Мы рекомендуем использовать нечеткие или метки с пулами узлов Windows Server 2019, работающими
containerd
и селекторами узлов или селекторами узлов, чтобы гарантировать правильность планирования рабочих нагрузок.
Добавление пула узлов Windows Server с помощью containerd
Добавьте пул узлов Windows Server в
containerd
существующий кластер с помощью пулаaz aks nodepool add
узлов Windows Server.Примечание.
Если пользовательский заголовок не указан
WindowsContainerRuntime=containerd
, пул узлов по-прежнему используетсяcontainerd
в качестве среды выполнения контейнера по умолчанию.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --os-type Windows \ --name $CONTAINER_D_NODE_POOL_NAME \ --node-vm-size Standard_D4s_v3 \ --kubernetes-version 1.20.5 \ --aks-custom-headers WindowsContainerRuntime=containerd \ --node-count 1
Обновление определенного существующего пула узлов Windows Server до containerd
Обновите определенный пул узлов из Docker до
containerd
использованияaz aks nodepool upgrade
команды.az aks nodepool upgrade \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $CONTAINER_D_NODE_POOL_NAME \ --kubernetes-version 1.20.7 \ --aks-custom-headers WindowsContainerRuntime=containerd
Обновление всех существующих пулов узлов Windows Server до containerd
Обновите все пулы узлов из Docker до
containerd
использованияaz aks nodepool upgrade
команды.az aks nodepool upgrade \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --kubernetes-version 1.20.7 \ --aks-custom-headers WindowsContainerRuntime=containerd
Пулы узлов с временными дисками ОС
Добавьте пул узлов, использующий диски эфемерной ОС в существующий кластер с помощью
az aks nodepool add
команды с установленнымEphemeral
флагом--node-osdisk-type
.Примечание.
- Во время создания кластера можно указать диски эфемерной ОС с помощью флага
--node-osdisk-type
az aks create
с помощью команды. - Если требуется создать пулы узлов с дисками ОС, подключенными к сети, это можно сделать, задав
--node-osdisk-type Managed
.
az aks nodepool add --name $EPHEMERAL_NODE_POOL_NAME --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME -s Standard_DS3_v2 --node-osdisk-type Ephemeral
- Во время создания кластера можно указать диски эфемерной ОС с помощью флага
Внимание
С помощью эфемерной ОС можно развертывать виртуальные машины и образы экземпляров до размера кэша виртуальных машин. Конфигурация диска ОС узла по умолчанию в AKS использует 128 ГБ, что означает, что вам нужен размер виртуальной машины с кэшем размером более 128 ГБ. По умолчанию Standard_DS2_v2 имеет размер кэша размером 86 ГБ, который недостаточно велик. Номер SKU виртуальной машины Standard_DS3_v2 имеет размер кэша в 172 ГБ, который достаточно велик. Вы также можете уменьшить размер диска ОС по умолчанию с помощью --node-osdisk-size
, но помните, что минимальный размер изображений AKS составляет 30 ГБ.
Удаление пула узлов
Если пул узлов больше не нужен, его можно удалить и удалить базовые узлы виртуальной машины.
Внимание
При удалении пула узлов AKS не выполняет блокировку и остановку. У вас также не будет возможности восстановить потерянные в этом случае данные. Если модули Pod не получится запланировать в других пулах узлов, эти приложения станут недоступны. Следите за тем, чтобы пул узлов не удалялся, если используемые в нем приложения не применяют резервное копирование данных или не могут выполняться на других пулах узлов в кластере. Чтобы свести к минимуму прерывание планирования модулей pod, работающих в пуле узлов, которые вы хотите удалить, выполните кордон и очистку всех узлов в пуле узлов перед удалением.
Удалите пул узлов с помощью
az aks nodepool delete
команды и укажите имя пула узлов.az aks nodepool delete --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --no-wait
Удаление узлов и пула узлов занимает несколько минут.
Следующие шаги
В этой статье вы узнали, как создать несколько пулов узлов в кластере AKS. Сведения об управлении несколькими пулами узлов см. в статье "Управление несколькими пулами узлов" для кластера в Служба Azure Kubernetes (AKS).
Azure Kubernetes Service