Настройка конфигурации узла для пулов узлов Службы Azure Kubernetes (AKS)

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

Prerequisites

По мере того как в службе добавляется поддержка новых настроек и параметров kubelet, может потребоваться регистрация флага предварительной функции. Если требуется флаг предварительной версии, ссылка на параметры конфигурации пользовательского узла вызывает ее.

Требования к предварительной версии параметров kubelet kubeReserved и hardEvictionThreshold

Внимание

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

Установите расширение aks-preview Azure CLI

  1. Чтобы установить расширение aks-preview, выполните следующую команду:

    az extension add --name aks-preview
    
  2. Выполните следующую команду, чтобы обновить до последней версии расширения:

    az extension update --name aks-preview
    

Зарегистрируйте флаг функции CustomNodeConfigPreview в своей подписке Azure, прежде чем использовать параметры kubelet kubeReserved и hardEvictionThreshold в предварительной версии.

Регистрация флага компонента CustomNodeConfigPreview

  1. CustomNodeConfigPreview Зарегистрируйте флаг компонента с помощью az feature register команды.

    az feature register --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"
    

    Через несколько минут отобразится состояние Registered (Зарегистрировано).

  2. Проверьте состояние регистрации с помощью az feature show команды.

    az feature show --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"
    
  3. Когда отображается состояние Зарегистрирован, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью команды az provider register.

    az provider register --namespace "Microsoft.ContainerService"
    

Создание пользовательских файлов конфигурации узлов для пулов узлов AKS

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

Примечание.

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

Конфигурация Kubelet

Создайте файл linuxkubeletconfig.json со следующим содержимым.

{
 "cpuManagerPolicy": "static",
 "cpuCfsQuota": true,
 "cpuCfsQuotaPeriod": "200ms",
 "imageGcHighThreshold": 90,
 "imageGcLowThreshold": 70,
 "topologyManagerPolicy": "best-effort",
 "allowedUnsafeSysctls": [
  "kernel.msg*",
  "net.*"
],
 "failSwapOn": false
}

Чтобы использовать параметры kubelet функции Node Customization Preview в пулах узлов Linux, добавьте kubeReserved и hardEvictionThreshold в файл конфигурации kubelet. В следующем примере резервируются ЦП и память для системных демонов Kubernetes, а также настраиваются пороги жёсткого вытеснения kubelet:

{
  "cpuManagerPolicy": "static",
  "kubeReserved": {
    "cpuMillicores": 200,
    "memoryMB": 1024
  },
  "hardEvictionThreshold": {
    "memoryAvailable": "20%",
    "nodeFsAvailable": "10%",
    "nodeFsInodesFree": "5%"
  }
}

Используйте kubeReserved и hardEvictionThreshold только в пулах узлов Linux. Для обеих настроек требуется флаг функции CustomNodeConfigPreview.

Конфигурация ОС

Создайте файл linuxosconfig.json со следующим содержимым.

{
 "transparentHugePageEnabled": "madvise",
 "transparentHugePageDefrag": "defer+madvise",
 "swapFileSizeMB": 1500,
 "sysctls": {
  "netCoreSomaxconn": 163849,
  "netIpv4TcpTwReuse": true,
  "netIpv4IpLocalPortRange": "32000 60000"
 }
}

Создание кластера AKS с помощью пользовательских файлов конфигурации

Примечание.

При создании нового кластера AKS следует учитывать следующие сведения при использовании пользовательских файлов конфигурации:

  • Если при создании кластера указать конфигурацию, конфигурация применяется только к узлам в начальном пуле узлов. Кластер сохраняет значения по умолчанию для любых параметров, не настроенных в JSON-файле.
  • CustomLinuxOsConfig не поддерживается для типа ОС Windows.
  • Параметры kubelet, доступные в предварительной версии (kubeReserved и hardEvictionThreshold), поддерживаются только в пулах узлов Linux и требуют флага функции CustomNodeConfigPreview. Выполните действия по регистрации, указанные в разделе Предварительные требования для kubeReserved и hardEvictionThreshold параметров kubelet, прежде чем создавать кластер или пул узлов.

Создайте новый кластер с помощью пользовательских файлов конфигурации, выполнив az aks create команду и указав файлы конфигурации для --kubelet-config параметров и --linux-os-config параметров. В следующем примере команды создается новый кластер с пользовательскими ./linuxkubeletconfig.json и ./linuxosconfig.json файлами:

az aks create --name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json

Добавление пула узлов с помощью пользовательских файлов конфигурации

Примечание.

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

  • При добавлении пула узлов Linux в существующий кластер можно указать конфигурацию kubelet, конфигурацию ОС или оба. При добавлении пула узлов Windows в существующий кластер можно указать только конфигурацию kubelet. Если при добавлении пула узлов указать конфигурацию, конфигурация применяется только к узлам в новом пуле узлов. Пул узлов сохраняет значения по умолчанию для любых параметров, не настроенных в JSON-файле.
  • CustomKubeletConfig поддерживается для пулов узлов Linux и Windows.
  • Параметры kubelet, доступные в предварительной версии (kubeReserved и hardEvictionThreshold), поддерживаются только в пулах узлов Linux и требуют флага функции CustomNodeConfigPreview. Выполните шаги регистрации, описанные в разделе Предварительные требования для kubeReserved и hardEvictionThreshold параметров kubelet, прежде чем создавать кластер или пул узлов.

Создайте новый пул узлов Linux с помощью команды az aks nodepool add и укажите файлы конфигурации в параметрах --kubelet-config и --linux-os-config. Следующая команда создает новый пул Linux-узлов с кастомизированным файлом ./linuxkubeletconfig.json.

az aks nodepool add --name <node-pool-name> --cluster-name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json

Были применены параметры подтверждения

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

Просмотр поддерживаемых пользовательских параметров конфигурации

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

Рекомендации по настройке пользовательских узлов

При настройке конфигурации узла следует учитывать следующие рекомендации.

  • Обновления образа узла повторно применяют пользовательские конфигурации узла.
  • Операции горизонтального масштабирования сохраняют пользовательские конфигурации узлов.
  • AKS не выполняет предварительную валидацию каждого параметра или значения настраиваемой конфигурации узла. Убедитесь, что указанные параметры и значения конфигурации пользовательского узла поддерживаются и допустимы, чтобы избежать потенциальных проблем с узлами кластера.
  • Параметры kubeReserved и hardEvictionThreshold предварительной версии доступны только в пулах узлов Linux.
  • Если вы настроите kubeReserved, значения должны быть положительными и не могут превышать емкость ЦП или памяти, доступную в целевом пуле узлов.
  • Если вы настраиваете hardEvictionThreshold, используйте только поддерживаемые единицы: Ki, Mi, Giили % для memoryAvailable и nodeFsAvailable, а также необработанное число или % для nodeFsInodesFree.
  • Значения по умолчанию для параметров конфигурации пользовательских узлов часто изменяются с новыми версиями операционной системы. При применении пользовательских конфигураций узлов просмотрите значения по умолчанию для параметров, которые вы настраиваете, чтобы убедиться, что пользовательские параметры подходят для версии ОС узлов кластера.
  • Ограничение числа пользователей, имеющих разрешения на изменение конфигурации пользовательского узла, чтобы предотвратить непредвиденные последствия для стабильности кластера и производительности. Рекомендуется использовать авторизацию идентификатора Microsoft Entra для API Kubernetes , чтобы ограничить доступ к параметрам конфигурации кластера.
  • Отделяйте пулы узлов с настраиваемыми конфигурациями от тех, кто не настраивает конфигурации, чтобы предотвратить непредвиденные последствия для рабочих нагрузок, которые могут быть чувствительны к определенным изменениям конфигурации. Например, если у вас есть критическая рабочая нагрузка, требующая определенных параметров kubelet, рассмотрите возможность изоляции рабочей нагрузки в выделенном пуле узлов с необходимой настраиваемой конфигурацией kubelet.