Создание пулов узлов для кластера в Служба 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.

Подготовка к работе

Ограничения

Следующие ограничения применяются при создании кластеров AKS, поддерживающих несколько пулов узлов:

  • См. раздел Квоты, ограничения размера виртуальной машины и доступность региона в службе Kubernetes Azure (AKS).
  • Вы можете удалить пулы системных узлов, если у вас есть другой пул системных узлов, который будет использоваться в кластере AKS. В противном случае невозможно удалить пул системных узлов.
  • Системные пулы должны содержать по крайней мере один узел, а пулы узлов пользователей могут содержать ноль или более узлов.
  • Кластер AKS должен использовать подсистему балансировки нагрузки SKU уровня "Стандартный" для использования нескольких пулов узлов. Эта функция не поддерживается с подсистемами балансировки нагрузки SKU уровня "Базовый".
  • Кластер AKS должен использовать Масштабируемые наборы виртуальных машин для узлов.
  • Имя пула узлов может содержать только буквы в нижнем регистре и должно начинаться с буквы в нижнем регистре.
    • Для пулов узлов Linux длина должна составлять от 1 до 12 символов.
    • Для пулов узлов Windows длина должна составлять от 1 до 6 символов.
  • Все пулы узлов должны находиться в одной виртуальной сети.
  • При создании нескольких пулов узлов во время создания кластера версии Kubernetes для пулов узлов должны соответствовать версии, заданной для плоскости управления.

Создание кластера AKS

Внимание

При запуске одного пула системных узлов для кластера AKS в рабочей среде мы рекомендуем использовать по крайней мере три узла для пула узлов. Если один узел выходит из строя, ресурсы плоскости управления теряются и избыточность скомпрометирована. Вы можете снизить этот риск, имея больше узлов плоскости управления.

  1. Создайте группу ресурсов Azure с помощью az group create команды.

    az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
    
  2. Создайте кластер AKS с одним пулом узлов с помощью az aks create команды.

    az aks create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $CLUSTER_NAME \
        --vm-set-type VirtualMachineScaleSets \
        --node-count 2 \
        --generate-ssh-keys \
        --load-balancer-sku standard
    

    Создание кластера занимает несколько минут.

  3. Когда кластер будет готов, получите учетные данные кластера с помощью az aks get-credentials команды.

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

Добавление пула узлов

Кластер, созданный на предыдущем шаге, имеет один пул узлов. В этом разделе мы добавим второй пул узлов в кластер.

  1. Создайте пул узлов с помощью 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
    
  2. Проверьте состояние пулов узлов с помощью 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.

Добавление пула узлов 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 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-typeaz 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).