Поделиться через


Использование меток в кластере Службы Azure Kubernetes (AKS)

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

В этом руководстве описано, как использовать метки в кластере Служба Azure Kubernetes (AKS).

Необходимые компоненты

Необходимо установить и настроить Azure CLI версии 2.2.0 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

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

  1. Создайте кластер AKS с меткой с помощью az aks create команды и укажите параметр для задания --node-labels меток. Метки также должны быть парой "ключ-значение" и иметь допустимый синтаксис.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 2 \
        --nodepool-labels dept=IT costcenter=9000 \
        --generate-ssh-keys
    
  2. Убедитесь, что метки были заданы с помощью kubectl get nodes --show-labels команды.

    kubectl get nodes --show-labels | grep -e "costcenter=9000" -e "dept=IT"
    

Создание пула узлов с меткой

  1. Создайте пул узлов с меткой с помощью az aks nodepool add команды и укажите имя --name параметров и меток для --labels параметра. Метки также должны быть парой "ключ-значение" и иметь допустимый синтаксис.

    В следующем примере команды создается пул узлов с именем labelnp с метками dept=HR и costcenter=5000.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name labelnp \
        --node-count 1 \
        --labels dept=HR costcenter=5000 \
        --no-wait
    

    В следующем примере выходных данных команды az aks nodepool list показано, что пул узлов labelnpсоздание узлов с указанными nodeLabels:

    [
      {
        ...
        "count": 1,
        ...
        "name": "labelnp",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "nodeLabels":  {
          "costcenter": "5000",
          "dept": "HR"
        },
        ...
      },
     ...
    ]
    
  2. Убедитесь, что метки были заданы с помощью kubectl get nodes --show-labels команды.

    kubectl get nodes --show-labels | grep -e "costcenter=5000" -e "dept=HR"
    

Обновление меток на существующих пулах узлов

  1. Обновите метку в существующем пуле az aks nodepool update узлов с помощью команды. Обновление меток в существующих пулах узлов перезаписывает старые метки новыми метками. Метки также должны быть парой "ключ-значение" и иметь допустимый синтаксис.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name labelnp \
        --labels dept=ACCT costcenter=6000 \
        --no-wait
    
  2. Убедитесь, что метки были заданы с помощью kubectl get nodes --show-labels команды.

    kubectl get nodes --show-labels | grep -e "costcenter=6000" -e "dept=ACCT"
    

Недоступные метки

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

С момента выпуска AKS 2021-08-19 AKS AKS перестал вносить изменения в зарезервированные метки AKS. Попытка изменить эти метки приводит к возникновению сообщения об ошибке.

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

Название Значение Пример или варианты Использование виртуального узла
kubernetes.azure.com/agentpool <Имя пула агента> nodepool1 Одинаковые
kubernetes.io/arch amd64 runtime.GOARCH Н/П
kubernetes.io/os <Тип ОС.> Linux/Windows Одинаковые
node.kubernetes.io/instance-type <Размер виртуальной машины> Standard_NC6s_v3 Виртуальная
topology.kubernetes.io/region <Регион Azure> westus2 Одинаковые
topology.kubernetes.io/zone <Зона Azure> 0 Одинаковые
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 Одинаковые
kubernetes.azure.com/mode <mode> Пользователь или система User
kubernetes.azure.com/role агент Агент Одинаковые
kubernetes.azure.com/scalesetpriority <Приоритет VMSS> Точечная или обычная Н/П
kubernetes.io/hostname <hostname> aks-nodepool-00000000-vmss000000 Одинаковые
kubernetes.azure.com/storageprofile <Профиль хранения диска ОС> Управляется Н/П
kubernetes.azure.com/storagetier <Уровень хранения диска ОС> Premium_LRS Н/П
kubernetes.azure.com/instance-sku <Семейство SKU> Standard_N Виртуальная
kubernetes.azure.com/node-image-version <Версия VHD> AKSUbuntu-1804-2020.03.05 Версия виртуального узла
kubernetes.azure.com/subnet <Имя подсети пула узлов> subnetName Имя подсети виртуального узла
kubernetes.azure.com/vnet <Имя виртуальной сети пула узлов> vnetName Виртуальная сеть виртуального узла
kubernetes.azure.com/ppg <Имя ppg пула узлов> ppgName Н/П
kubernetes.azure.com/encrypted-set <Имя зашифрованного набора пула узлов> encrypted-set-name Н/П
kubernetes.azure.com/accelerator <Ускоритель> NVIDIA Н/П
kubernetes.azure.com/fips_enabled <Включена ли поддержка FIPS?> true Н/П
kubernetes.azure.com/os-sku <ОС или SKU> Создание или обновление номера SKU для ОС Linux
  • Вариант Аналогично указывается там, где ожидаемые значения меток совпадают в стандартном пуле узлов и пуле виртуальных узлов. Поскольку объекты pod виртуальных узлов не предоставляют ни одной виртуальной машины, значения номера SKU виртуальной машины заменяются номером SKU Виртуальная.
  • Версия виртуального узла — это текущая версия выпуска виртуального соединителя Kubelet-ACI.
  • Имя подсети виртуального узла — это имя подсети, в которой объекты pod виртуальных узлов развертываются в Экземпляр контейнера Azure (ACI).
  • Виртуальная сеть виртуального узла — это имя виртуальной сети, которая содержит подсеть, в которой объекты pod виртуальных узлов развертываются в ACI.

Зарезервированные префиксы

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

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

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

Нерекомендуемые метки

Следующие метки планируется указать как нерекомендуемые в выпуске Kubernetes версии 1.24. Вы должны изменить ссылки на метки на рекомендуемую замену.

Этикетка Рекомендуемые варианты замены Ответственный за команду
failure-domain.beta.kubernetes.io/region topology.kubernetes.io/region Kubernetes
failure-domain.beta.kubernetes.io/zone topology.kubernetes.io/zone Kubernetes
beta.kubernetes.io/arch kubernetes.io/arch Kubernetes
beta.kubernetes.io/instance-type node.kubernetes.io/instance-type Kubernetes
beta.kubernetes.io/os kubernetes.io/os Kubernetes
node-role.kubernetes.io/agent* kubernetes.azure.com/role=agent Служба Azure Kubernetes
kubernetes.io/role* kubernetes.azure.com/role=agent Служба Azure Kubernetes
Agentpool* kubernetes.azure.com/agentpool Служба Azure Kubernetes
Storageprofile* kubernetes.azure.com/storageprofile Служба Azure Kubernetes
Storagetier* kubernetes.azure.com/storagetier Служба Azure Kubernetes
Accelerator* kubernetes.azure.com/accelerator Служба Azure Kubernetes

*Не рекомендуется использовать. Дополнительные сведения см. в заметках о выпуске.

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

Дополнительные сведения о метках Kubernetes см. в документации по меткам Kubernetes.