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


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

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

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

Предпосылки

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

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

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

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export AKS_CLUSTER_NAME="myAKSCluster$RANDOM_SUFFIX"
az group create --name $RESOURCE_GROUP --location $REGION

Результаты:

{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx",
  "location": "eastus2",
  "managedBy": null,
  "name": "myResourceGroupxxx",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

Создайте кластер AKS, указывающий метки узлов (например, dept=IT, costcenter=9000):

az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $AKS_CLUSTER_NAME \
    --node-count 2 \
    --nodepool-labels dept=IT costcenter=9000 \
    --generate-ssh-keys --location $REGION

Результаты:

{
  "aadProfile": null,
  "addonProfiles": {},
  "agentPoolProfiles": [
    {
      "count": 2,
      "enableAutoScaling": null,
      "mode": "System",
      "name": "nodepool1",
      "nodeLabels": {
        "costcenter": "9000",
        "dept": "IT"
      }
    }
  ],
  "dnsPrefix": "myaksclusterxxx-dns",
  "fqdn": "myaksclusterxxx-xxxxxxxx.hcp.eastus2.azmk8s.io",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSClusterxxx",
  "location": "eastus2",
  "name": "myAKSClusterxxx",
  "resourceGroup": "myResourceGroupxxx"
}

Убедитесь, что метки заданы:

az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER_NAME --overwrite-existing
kubectl get nodes --show-labels | grep -e "costcenter=9000" -e "dept=IT"

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

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

export NODEPOOL_NAME="labelnp"
az aks nodepool add \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $AKS_CLUSTER_NAME \
    --name $NODEPOOL_NAME \
    --node-count 1 \
    --labels dept=HR costcenter=5000 \

Ниже приведен пример выходных данных командыaz aks nodepool list, в которой показан пул узлов labelnp: создание узлов с указанными nodeLabels:

az aks nodepool list --resource-group $RESOURCE_GROUP --cluster-name $AKS_CLUSTER_NAME

Результаты:

[
  {
    "count": 2,
    "name": "nodepool1",
    "nodeLabels": {
      "costcenter": "9000",
      "dept": "IT"
    }
  },
  {
    "count": 1,
    "name": "labelnp",
    "nodeLabels": {
      "costcenter": "5000",
      "dept": "HR"
    },
    "provisioningState": "Creating"
  }
]

Убедитесь, что метки установлены:

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

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

Метки можно обновить в существующем пуле узлов. Обратите внимание, что обновление меток перезаписывает старые метки.

az aks nodepool update \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $AKS_CLUSTER_NAME \
    --name $NODEPOOL_NAME \
    --labels dept=ACCT costcenter=6000 \

Убедитесь, что установлены новые метки:

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

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

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

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

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

Этикетка Ценность Пример/варианты Использование виртуальных узлов
kubernetes.azure.com/agentpool <Имя пула агентов> nodepool1 Тот же
kubernetes.io/arch amd64 Среды выполнения. 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/managedby акс акс Не применимо
kubernetes.azure.com/mode <режим> Пользователь или система Пользователь
kubernetes.azure.com/role agent Агент Тот же
kubernetes.azure.com/scalesetpriority <Приоритет VMSS> Спот или регулярный Не применимо
kubernetes.io/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 <Имя подсети nodepool> Имя подсети Имя подсети виртуального узла
kubernetes.azure.com/vnet <Имя виртуальной сети nodepool> имя виртуальной сети Виртуальная сеть виртуального узла
kubernetes.azure.com/ppg <nodepool ppg имя> ppgName Не применимо
kubernetes.azure.com/encrypted-set <имя зашифрованного набора nodepool> зашифрованное-имя-набора Не применимо
kubernetes.azure.com/accelerator <акселератор> NVIDIA Не применимо
kubernetes.azure.com/fips_enabled <включена ли fips?> правда Не применимо
kubernetes.azure.com/os-sku <os/sku> Создание или обновление номера SKU ОС Линукс
  • «Такое же» включено в местах, где ожидаемые значения меток не отличаются между стандартным пулом узлов и пулом виртуальных узлов. Так как поды виртуального узла не предоставляют никаких базовых виртуальных машин, значения SKU виртуальной машины заменяются виртуальным SKU.
  • Версия виртуального узла относится к текущей версии виртуального выпуска соединителя Kubelet-ACI.
  • Имя подсети виртуального узла — это имя подсети, где виртуальные узлы-pod развертываются в службе Azure Container Instance (ACI).
  • Виртуальная сеть виртуального узла — это имя виртуальной сети, которая содержит подсеть, в которой развернуты поды виртуального узла в ACI.

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

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

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

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

Устаревшие метки

Следующие ярлыки планируется устранить в Kubernetes v1.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 Service
kubernetes.io/role* kubernetes.azure.com/role=agent Azure Kubernetes Service
Agentpool* kubernetes.azure.com/agentpool Azure Kubernetes Service
Профиль хранения kubernetes.azure.com/storageprofile Azure Kubernetes Service
Storagetier* kubernetes.azure.com/storagetier Azure Kubernetes Service
Акселератор* kubernetes.azure.com/accelerator Azure Kubernetes Service

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

Дальнейшие шаги

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