Управление узлами и пулом узлов Kubernetes

Служба Azure Kubernetes (AKS)
Виртуальные машины Azure

Архитектура Kubernetes основана на двух уровнях: плоскости управления и одного или нескольких узлов в пулах узлов. В этой статье описывается и сравнивается, как Amazon Elastic Kubernetes Service (Amazon EKS) и Служба Azure Kubernetes (AKS) управляют агентом или рабочими узлами.

Примечание.

Эта статья является частью серии статей, которые помогают специалистам, знакомым с Amazon EKS, чтобы понять AKS.

В Amazon EKS и AKS облачная платформа предоставляет уровень плоскости управления и управляет им, а клиент управляет уровнем узлов. На следующей схеме показана связь между плоскостью управления и узлами в архитектуре AKS Kubernetes.

Схема, показывющая плоскость управления и узлы в архитектуре AKS.

Группы управляемых узлов Amazon EKS

Группы управляемых узлов Amazon EKS автоматизируют подготовку и управление жизненным циклом рабочих узлов Amazon Elastic Compute Cloud (EC2) для кластеров Amazon EKS. Пользователи Amazon Web Services (AWS) могут использовать служебную программу командной строки eksctl для создания, обновления или завершения узлов для кластеров EKS. Обновления узлов и завершение работы автоматически оцепляют и очищают узлы, чтобы обеспечить доступность приложений.

Каждый управляемый узел подготавливается как часть группы автоматического масштабирования Amazon EC2, которая работает и управляет Amazon EKS. Автомасштабирование кластера Kubernetes автоматически настраивает количество рабочих узлов в кластере при сбое pod или перепланировано на другие узлы. Каждая группа узлов может быть настроена для запуска в нескольких Зоны доступности в пределах региона.

Дополнительные сведения об управляемых узлах Amazon EKS см. в статье "Создание управляемой группы узлов" и обновление группы управляемых узлов.

Вы также можете запускать модули pod Kubernetes в AWS Fargate. Fargate предоставляет по запросу правочисленную емкость вычислительных ресурсов для контейнеров. Дополнительные сведения об использовании Fargate с Amazon EKS см. в статье AWS Fargate.

Узлы и пулы узлов AKS

Создание кластера AKS автоматически создает и настраивает плоскость управления, которая предоставляет основные службы Kubernetes и оркестрацию рабочей нагрузки приложений. Платформа Azure предоставляет плоскость управления AKS без затрат как управляемый ресурс Azure. Плоскость управления и ее ресурсы существуют только в регионе, где вы создали кластер.

Узлы, также называемые узлами агента или рабочими узлами, размещают рабочие нагрузки и приложения. В AKS клиенты полностью управляют узлами агента, подключенными к кластеру AKS.

Для запуска приложений и вспомогательных служб кластер AKS должен иметь по крайней мере один узел: виртуальная машина Azure для запуска компонентов узлов Kubernetes и среды выполнения контейнера. Каждый кластер AKS должен содержать по крайней мере один системный пул узлов с по крайней мере одним узлом.

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

Схема, показывающая один узел Kubernetes.

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

Каждый узел агента пула системных или пользовательских узлов — это виртуальная машина, подготовленная в рамках Масштабируемые наборы виртуальных машин Azure и управляемого кластером AKS. Дополнительные сведения см. в разделе "Узлы и пулы узлов".

Вы можете определить начальное число и размер рабочих узлов при создании кластера AKS или при добавлении новых узлов и пулов узлов в существующий кластер AKS. Если размер виртуальной машины не указан, размер по умолчанию Standard_D2s_v3 для пулов узлов Windows и Standard_DS2_v2 для пулов узлов Linux.

Внимание

Чтобы повысить задержку для вызовов внутри узла и обмена данными со службами платформы, выберите ряд виртуальных машин, поддерживающий ускоренную сеть.

Создание пула узлов

Пул узлов можно добавить в новый или существующий кластер AKS с помощью портал Azure, Azure CLI, REST API AKS или инфраструктуры как кода (IaC), таких как Bicep, шаблоны Azure Resource Manager (ARM) или Terraform. Дополнительные сведения о добавлении пулов узлов в существующий кластер AKS см. в статье "Создание нескольких пулов узлов" для кластера в Служба Azure Kubernetes (AKS).

При создании пула узлов связанный масштабируемый набор виртуальных машин создается в группе ресурсов узла, группе ресурсов Azure, содержащей все ресурсы инфраструктуры кластера AKS. К этим ресурсам относятся узлы Kubernetes, ресурсы виртуальной сети, управляемые удостоверения и хранилище.

По умолчанию группа ресурсов узла имеет такое имя MC_<resourcegroupname>_<clustername>_<location>. AKS автоматически удаляет группу ресурсов узла при удалении кластера, поэтому эту группу ресурсов следует использовать только для ресурсов, использующих жизненный цикл кластера.

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

В следующем примере кода используется azure CLI az aks nodepool add command для добавления пула mynodepool узлов с тремя узлами в существующий кластер AKS, вызываемый myAKSCluster в myResourceGroup группе ресурсов.

az aks nodepool add \
      --resource-group myResourceGroup \
      --cluster-name myAKSCluster \
      --node-vm-size Standard_D8ds_v4 \
      --name mynodepool \
      --node-count 3

Пулы точечных узлов

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

При развертывании пула точечных узлов Azure выделяет точечные узлы при наличии емкости. Но соглашения об уровне обслуживания для точечных узлов нет. Масштабируемый набор точечных узлов, поддерживающий пул точечных узлов, развертывается в одном домене сбоя и не гарантирует высокого уровня доступности. Когда Azure нуждается в емкости, инфраструктура Azure вытесняет точечные узлы и вы получаете не более 30-секундного уведомления перед вытеснением. Помните, что пул точечных узлов не может быть пулом узлов по умолчанию кластера. Пул точечных узлов можно использовать только для дополнительного пула.

Точечные узлы предназначены для рабочих нагрузок, которые могут обрабатывать прерывания, ранние завершения или вытеснения. Например, задания пакетной обработки, среды разработки и тестирования и большие вычислительные рабочие нагрузки являются хорошими кандидатами для планирования в пуле точечных узлов. Дополнительные сведения см . в ограничениях точечных экземпляров.

az aks nodepool add Следующая команда добавляет пул точечных узлов в существующий кластер с включенным автомасштабированием.

  az aks nodepool add \
      --resource-group myResourceGroup \
      --cluster-name myAKSCluster \
      --name myspotnodepool \
      --node-vm-size Standard_D8ds_v4 \
      --priority Spot \
      --eviction-policy Delete \
      --spot-max-price -1 \
      --enable-cluster-autoscaler \
      --min-count 1 \
      --max-count 3 \
      --no-wait

Дополнительные сведения о пулах точечных узлов см. в разделе "Добавление пула точечных узлов" в кластер Служба Azure Kubernetes (AKS).

Временные диски ОС

По умолчанию Azure автоматически реплика перемещает диск операционной системы виртуальной машины (ОС) в служба хранилища Azure, чтобы избежать потери данных, если виртуальная машина должна быть перемещена на другой узел. Но так как контейнеры не предназначены для сохранения локального состояния, сохранение диска ОС в хранилище предоставляет ограниченное значение для AKS. Существуют некоторые недостатки, такие как медленная подготовка узлов и более высокая задержка чтения и записи.

В отличие от этого, временные диски ОС хранятся только на хост-компьютере, например на временном диске, а также обеспечивают более низкую задержку чтения и записи и ускоряют масштабирование узлов и обновление кластера. Как и временный диск, временный диск ОС включается в цену виртуальной машины, поэтому не требует дополнительных затрат на хранение.

Внимание

Если вы явно не запрашиваете управляемые диски для ОС, AKS по умолчанию использует эфемерную ОС, если это возможно для заданной конфигурации пула узлов.

Чтобы использовать эфемерную ОС, диск ОС должен помещаться в кэш виртуальной машины. Документация по виртуальным машинам Azure показывает размер кэша виртуальных машин в скобках рядом с пропускной способностью ввода-вывода в качестве размера кэша в ГиБ.

Например, размер виртуальной машины AKS по умолчанию Standard_DS2_v2 с размером диска ОС по умолчанию 100 ГБ поддерживает эфемерную ОС, но имеет только 86 ГБ размера кэша. Эта конфигурация по умолчанию использует управляемый диск, если не указан явным образом. Если вы явно запрашиваете эфемерную ОС для этого размера, вы получите ошибку проверки.

Если вы запрашиваете ту же виртуальную машину Standard_DS2_v2 с диском ОС размером 60 ГБ, по умолчанию вы получите эфемерную ОС. Запрошенный размер ОС размером 60 ГБ меньше максимального размера кэша в 86 ГБ.

Standard_D8s_v3 с диском ОС размером 100 ГБ поддерживает эфемерную ОС и имеет 200 ГБ места в кэше. Если пользователь не указывает тип диска ОС, пул узлов по умолчанию получает эфемерную ОС.

az aks nodepool add Следующая команда показывает, как добавить новый пул узлов в существующий кластер с временным диском ОС. Параметр --node-osdisk-type задает тип Ephemeralдиска ОС, а --node-osdisk-size параметр определяет размер диска ОС.

  az aks nodepool add \
      --resource-group myResourceGroup \
      --cluster-name myAKSCluster \
      --name mynewnodepool \
      --node-vm-size Standard_D8ds_v4 \
      --node-osdisk-type Ephemeral \
      --node-osdisk-size 48

Дополнительные сведения о временных дисках ОС см. в разделе "Эфемеральная ОС".

Виртуальные узлы

Виртуальные узлы можно использовать для быстрого масштабирования рабочих нагрузок приложений в кластере AKS. Виртуальные узлы предоставляют быструю подготовку pod, и вы оплачиваете только в секунду за время выполнения. Чтобы развернуть новые рабочие узлы для запуска дополнительных реплика pod, вам не нужно ждать автомасштабирования кластера. Виртуальные узлы поддерживаются только с модулями pod и узлами Linux. Надстройка виртуальных узлов для AKS основана на проекте Виртуального Kubelet с открытым исходным кодом.

Функции виртуального узла зависят от Экземпляры контейнеров Azure. Дополнительные сведения о виртуальных узлах см. в статье "Создание и настройка кластера Служба Azure Kubernetes( AKS) для использования виртуальных узлов.

Таинты, метки и теги

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

Чтобы создать пул узлов с запятой, можно использовать az aks nodepool add команду с параметром --node-taints . Чтобы пометить узлы в пуле узлов, можно использовать --labels параметр и указать список меток, как показано в следующем коде:

  az aks nodepool add \
      --resource-group myResourceGroup \
      --cluster-name myAKSCluster \
      --name mynodepool \
      --node-vm-size Standard_NC6 \
      --node-taints sku=gpu:NoSchedule \
      --labels dept=IT costcenter=9999

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

Зарезервированные системные метки

Amazon EKS добавляет автоматические метки Kubernetes ко всем узлам в группе управляемых узлов, например eks.amazonaws.com/capacityType, которая указывает тип емкости. AKS также автоматически добавляет системные метки к узлам агента.

Следующие префиксы зарезервированы для использования AKS и не могут использоваться для любого узла:

  • kubernetes.azure.com/
  • kubernetes.io/

Другие зарезервированные префиксы см. в разделе "Известные метки Kubernetes", "заметки" и "Запятая".

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

В столбце использования виртуального узла:

  • N/A означает, что свойство не применяется к виртуальным узлам, так как для него потребуется изменить узел.
  • То же самое означает, что ожидаемые значения одинаковы для пула виртуальных узлов, что и для стандартного пула узлов.
  • Виртуальная машина заменяет значения SKU виртуальной машины, так как модули pod виртуального узла не предоставляют базовую виртуальную машину.
  • Версия виртуального узла — это текущая версия выпуска виртуального соединителя Kubelet-ACI.
  • Имя подсети виртуального узла — это подсеть, которая развертывает модули pod виртуальных узлов в Экземпляры контейнеров Azure.
  • Виртуальная сеть виртуального узла — это виртуальная сеть , содержащая подсеть виртуального узла.
Название Значение Пример: параметры Использование виртуального узла
kubernetes.azure.com/agentpool <agent pool name> nodepool1 Одинаковые
kubernetes.io/arch amd64 runtime.GOARCH Н/П
kubernetes.io/os <OS Type> Linux или Windows Linux
node.kubernetes.io/instance-type <VM size> Standard_NC6 Virtual
topology.kubernetes.io/region <Azure region> westus2 Одинаковые
topology.kubernetes.io/zone <Azure zone> 0 Одинаковые
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 Одинаковые
kubernetes.azure.com/mode <mode> User или System User
kubernetes.azure.com/role агент Agent Одинаковые
kubernetes.azure.com/scalesetpriority <scale set priority> Spot или Regular Н/П
kubernetes.io/hostname <hostname> aks-nodepool-00000000-vmss000000 Одинаковые
kubernetes.azure.com/storageprofile <OS disk storage profile> Managed Н/П
kubernetes.azure.com/storagetier <OS disk storage tier> Premium_LRS Н/П
kubernetes.azure.com/instance-sku <SKU family> Standard_N Virtual
kubernetes.azure.com/node-image-version <VHD version> AKSUbuntu-1804-2020.03.05 Версия виртуального узла
kubernetes.azure.com/subnet <nodepool subnet name> subnetName Имя подсети виртуального узла
kubernetes.azure.com/vnet <nodepool virtual network name> vnetName Виртуальная сеть виртуального узла
kubernetes.azure.com/ppg <nodepool ppg name> ppgName Н/П
kubernetes.azure.com/encrypted-set <nodepool encrypted-set name> encrypted-set-name Н/П
kubernetes.azure.com/accelerator <accelerator> Nvidia Н/П
kubernetes.azure.com/fips_enabled <fips enabled> True Н/П
kubernetes.azure.com/os-sku <os/sku> См. статью "Создание или обновление SKU ОС" Linux SKU

пулы узлов Windows;

AKS поддерживает создание пулов узлов контейнеров Windows Server и использование их с помощью сетевого подключаемого модуля сетевого интерфейса контейнера Azure (CNI ). Сведения о планировании необходимых диапазонов подсетей и сетевых рекомендаций см. в статье о настройке сети Azure CNI.

az aks nodepool add Следующая команда добавляет пул узлов, на котором выполняются контейнеры Windows Server.

  az aks nodepool add \
      --resource-group myResourceGroup \
      --cluster-name myAKSCluster \
      --name mywindowsnodepool \
      --node-vm-size Standard_D8ds_v4 \
      --os-type Windows \
      --node-count 1

Предыдущая команда использует подсеть по умолчанию в виртуальной сети кластера AKS. Дополнительные сведения о создании кластера AKS с пулом узлов Windows см. в статье "Создание контейнера Windows Server в AKS".

Рекомендации по пулу узлов

При создании пулов узлов и нескольких пулах узлов и управлении ими применяются следующие рекомендации и ограничения.

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

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

  • Размер виртуальной машины для пула узлов нельзя изменить после создания.

  • Для нескольких пулов узлов кластер AKS должен использовать подсистемы балансировки нагрузки SKU уровня "Стандартный". Базовые подсистемы балансировки нагрузки SKU не поддерживают несколько пулов узлов.

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

  • При создании нескольких пулов узлов во время создания кластера версии Kubernetes для всех пулов узлов должны соответствовать версии уровня управления. После подготовки кластера можно обновить версии с помощью операций пула узлов.

Масштабирование пула узлов

По мере изменения рабочей нагрузки приложения может потребоваться изменить количество узлов в пуле узлов. Вы можете масштабировать количество узлов вверх или вниз вручную с помощью команды az aks nodepool scale . В следующем примере масштабируется число узлов до mynodepool пяти:

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 5

Автоматическое масштабирование пулов узлов с помощью автомасштабирования кластера

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

az aks nodepool add Следующая команда добавляет новый пул узлов, вызываемого mynodepool в существующий кластер. Параметр --enable-cluster-autoscaler включает автомасштабирование кластера в новом пуле узлов, а --min-count--max-count параметры указывают минимальное и максимальное количество узлов в пуле.

  az aks nodepool add \
  --resource-group myResourceGroup \
  --cluster-name myAKSCluster \
  --name mynewnodepool \
  --node-vm-size Standard_D8ds_v4 \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 5

Следующая команда az aks nodepool update обновляет минимальное количество узлов от одного до трех для пула mynewnodepool узлов.

  az aks nodepool update \
  --resource-group myResourceGroup \
  --cluster-name myAKSCluster \
  --name mynewnodepool \
  --update-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

Вы можете отключить автомасштабирование кластера, az aks nodepool update передав --disable-cluster-autoscaler параметр.

  az aks nodepool update \
  --resource-group myResourceGroup \
  --cluster-name myAKSCluster \
  --name mynodepool \
  --disable-cluster-autoscaler

Чтобы повторно включить автомасштабирование кластера в существующем кластере, используйтеaz aks nodepool update, указав --enable-cluster-autoscaler--min-countпараметры и --max-count параметры.

Дополнительные сведения об использовании автомасштабирования кластера для отдельных пулов узлов см. в статье "Автоматическое масштабирование кластера для удовлетворения требований приложений по Служба Azure Kubernetes (AKS)".

Обновление

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

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

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

Вы можете использовать плановое обслуживание для обновления виртуальных машин и управления уведомлениями о плановом обслуживании с помощью Azure CLI, PowerShell или портал Azure. Плановое обслуживание обнаруживает, используется ли автоматическое обновление кластера и планируется автоматические обновления во время периода обслуживания. Дополнительные сведения о плановом обслуживании см. в команде az aks maintenanceconfiguration и использовании планового обслуживания для планирования периодов обслуживания для кластера Служба Azure Kubernetes (AKS).

Обновления Kubernetes

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

По умолчанию AKS настраивает обновление для всплесков с использованием одного дополнительного узла. Значение по умолчанию для max-surge параметров сводит к минимуму прерывание рабочей нагрузки путем создания дополнительного узла для замены старых версий узлов перед оцеплением или очисткой существующих приложений. Вы можете настроить max-surge значение для пула узлов, чтобы обеспечить компромисс между скоростью обновления и прерыванием обновления. max-surge Увеличение значения завершает процесс обновления быстрее, но большое значение max-surge может привести к сбоям во время процесса обновления.

Например, max-surge значение 100 % обеспечивает самый быстрый процесс обновления путем удвоения количества узлов, но также приводит к тому, что все узлы в пуле узлов будут стекаться одновременно. Вы можете использовать это большое значение для тестирования, но для пулов max-surge рабочих узлов лучше задать 33 %.

AKS принимает как целое число, так и процентные значения max-surge. Целое число, например 5 , указывает на пять дополнительных узлов для всплеска. Процент значений max-surge для может быть минимальным 1% и максимальным 100%, округленным до ближайшего количества узлов. Значение, указывающее 50% значение всплеска в половину текущего количества узлов в пуле.

Во время обновления max-surge значение может быть минимальным 1 и максимальным значением, равным количеству узлов в пуле узлов. Можно задать более крупные значения, но максимальное количество узлов, используемых для max-surge пула, не будет выше числа узлов в пуле.

Внимание

Для операций обновления на узлах требуется достаточно квоты подписки для запрошенного max-surge количества. Например, кластер с пятью пулами узлов, каждый из которых имеет четыре узла, имеет в общей сложности 20 узлов. Если каждый пул узлов имеет max-surge значение 50%, для завершения обновления потребуется дополнительная квота вычислений и IP-адресов 10 узлов или два узла раз в пять пулов.

Если вы используете сетевой интерфейс контейнеров Azure (CNI), убедитесь, что в подсети достаточно IP-адресов, чтобы соответствовать требованиям CNI для AKS.

Обновление пулов узлов

Чтобы просмотреть доступные обновления, используйте az aks get-upgrades.

az aks get-upgrades --resource-group <myResourceGroup> --name <myAKSCluster>

Чтобы просмотреть состояние пулов узлов, используйте az aks nodepool list.

  az aks nodepool list -g <myResourceGroup> --cluster-name <myAKSCluster>

Следующая команда использует az aks nodepool upgrade для обновления одного пула узлов.

  az aks nodepool upgrade \
      --resource-group <myResourceGroup> \
      --cluster-name <myAKSCluster> \
      --name <mynodepool> \
      --kubernetes-version <KUBERNETES_VERSION>

Дополнительные сведения об обновлении версии Kubernetes для плоскости управления кластером и пулов узлов см. в следующих статье:

Моменты, которые следует учитывать при обновлении

Обратите внимание на эти рекомендации и рекомендации по обновлению версии Kubernetes в кластере AKS.

  • Рекомендуется обновить все пулы узлов в кластере AKS до той же версии Kubernetes. Поведение az aks upgrade по умолчанию обновляет все пулы узлов и плоскость управления.

  • Вручную обновите или задайте канал автоматического обновления в кластере. Если вы используете плановое обслуживание для исправления виртуальных машин, автоматическое обновление также начинается во время указанного периода обслуживания. Дополнительные сведения см. в статье Обновление кластера службы Azure Kubernetes (AKS).

  • Команда az aks upgrade с --control-plane-only флагом обновляет только плоскость управления кластером и не изменяет ни один из связанных пулов узлов в кластере. Чтобы обновить отдельные пулы узлов, укажите целевой пул узлов и версию Kubernetes в команде az aks nodepool upgrade .

  • Обновление кластера AKS активирует блокировку и остановку узлов. Если у вас есть низкая квота вычислений, обновление может завершиться ошибкой. Дополнительные сведения о увеличении квоты см. в разделе "Увеличение квоты регионального виртуального ЦП".

  • max-surge Настройте параметр в зависимости от потребностей, используя целое число или процентное значение. Для пулов рабочих узлов используйте max-surge параметр 33%. Дополнительные сведения см. в разделе "Настройка обновления всплеска узла".

  • При обновлении кластера AKS, использующего сеть CNI, убедитесь, что подсеть имеет достаточно доступных частных IP-адресов для дополнительных узлов, создаваемых max-surge параметрами. Дополнительные сведения см. в разделе "Настройка сети Azure CNI" в Служба Azure Kubernetes (AKS).

  • Если пулы узлов кластера охватывают несколько Зоны доступности в пределах региона, процесс обновления может временно вызвать небалансированную конфигурацию зоны. Дополнительные сведения см. в специальных рекомендациях по пулам узлов, охватывающим несколько Зоны доступности.

Виртуальные сети узлов

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

AKS поддерживает два сетевых подключаемых модуля:

  • Kubenet — это простой сетевой подключаемый модуль для Linux. При этом kubenetузлы получают частный IP-адрес из подсети виртуальной сети Azure. Модули Pod получают IP-адрес из логического пространства адресов. Преобразование сетевых адресов (NAT) позволяет модулям pod обращаться к ресурсам в виртуальной сети Azure путем преобразования IP-адреса исходного трафика в первичный IP-адрес узла. Этот подход сокращает количество IP-адресов, которые необходимо зарезервировать в сетевом пространстве для модулей pod.

  • Интерфейс сети контейнеров Azure (CNI) предоставляет каждому модулу pod IP-адрес для вызова и доступа напрямую. Эти IP-адреса должны быть уникальными в сетевом пространстве. Для каждого узла предусмотрен параметр конфигурации, в котором указывается максимальное число объектов pod, которые он поддерживает. Затем для этого узла зарезервировано эквивалентное число IP-адресов на узел. Этот подход требует предварительного планирования и может привести к исчерпанию IP-адресов или необходимости перестроить кластеры в более крупной подсети по мере роста потребностей приложений.

    При создании кластера или добавлении нового пула узлов в кластер, использующий Azure CNI, можно указать идентификатор ресурса двух отдельных подсетей, один для узлов и один для модулей pod. Дополнительные сведения см. в разделе Динамическое выделение IP-адресов и расширенная поддержка подсети.

Динамическое выделение IP-адресов

Модули Pod, использующие Azure CNI , получают частные IP-адреса из подсети пула узлов размещения. Динамическое выделение IP-адресов Azure CNI может выделять частные IP-адреса для модулей pod из подсети, отдельной от пула узлов, в котором размещена подсеть. Эта функция обеспечивает следующие преимущества:

  • Подсеть pod динамически выделяет IP-адреса для модулей pod. Динамическое выделение обеспечивает более эффективное использование IP-адресов по сравнению с традиционным решением CNI, которое выполняет статическое выделение IP-адресов для каждого узла.

  • Вы можете масштабировать и предоставлять общий доступ к узлам и подсетям pod независимо. Вы можете совместно использовать одну подсеть pod в нескольких пулах узлов или кластерах, развернутых в одной виртуальной сети. Можно также настроить отдельную подсеть pod для пула узлов.

  • Так как модули pod имеют частные IP-адреса виртуальной сети, они имеют прямое подключение к другим модулям pod кластера и ресурсам в виртуальной сети. Эта возможность обеспечивает более высокую производительность для очень крупных кластеров.

  • Если модули pod имеют отдельную подсеть, можно настроить политики виртуальной сети для модулей pod, отличных от политик узлов. Отдельные политики позволяют много полезных сценариев, таких как разрешение подключения к Интернету только для модулей pod, а не для узлов, исправление исходного IP-адреса для pod в пуле узлов с помощью шлюза NAT и использование групп безопасности сети (NSG) для фильтрации трафика между пулами узлов.

  • Политики сети и сетевые политики Calico Kubernetes работают с динамическим выделением IP-адресов.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участник.

Основные авторы:

Другие участник:

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

Следующие шаги