Compartilhar via


Usar etiquetas em um cluster do AKS (Serviço de Kubernetes do Azure)

Se você tiver vários pools de nós, talvez queira adicionar um rótulo durante a criação do pool de nós. Os Rótulos de Kubernetes identificam as regras de agendamento para nós. Você pode adicionar rótulos a um pool de nós a qualquer momento e aplicá-los a todos os nós do pool de nós.

Neste guia de instruções, você aprende a como usar rótulos em um cluster do Serviço de Kubernetes do Azure (AKS).

Pré-requisitos

Você precisará da CLI do Azure versão 2.2.0 ou posterior instalada e configurada. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Criar um cluster do AKS com um rótulo

Você pode criar um cluster AKS com rótulos de nó para definir metadados de chave/valor para agendamento de carga de trabalho.

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

Resultados:

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

Crie o cluster do AKS especificando rótulos de nó (por exemplo, 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

Resultados:

{
  "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"
}

Verifique se os rótulos foram definidos:

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"

Criar um pool de nós com um rótulo

Você pode criar um pool de nós adicional com rótulos para necessidades de agendamento específicas.

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

A seguinte saída de exemplo do comando az aks nodepool list mostra que o pool de nós labelnp está Criando nós com o nodeLabels especificado:

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

Resultados:

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

Verifique se os rótulos foram definidos:

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

Atualizando rótulos em pools de nós existentes

Você pode atualizar os rótulos em um pool de nós existente. Observe que a atualização de rótulos substituirá os rótulos antigos.

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

Verifique se os novos rótulos estão definidos:

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

Rótulos indisponíveis

Rótulos de sistema reservados

Desde a versão 2021-08-19 do AKS, o AKS interrompeu a capacidade de fazer alterações em rótulos reservados do AKS. Tentar alterar esses rótulos resulta em uma mensagem de erro.

Os seguintes rótulos são rótulos reservados do AKS. O uso do nó virtual especifica se esses rótulos podem ser um recurso do sistema com suporte em nós virtuais. Algumas propriedades que esses recursos do sistema alteram não estão disponíveis nos nós virtuais porque exigem a modificação do host.

Rótulo Valor Exemplo/Opções Uso de nós virtuais
kubernetes.azure.com/agentpool <nome do pool de agentes> nodepool1 Idêntico
kubernetes.io/arch <runtime.GOARCH> amd64 N/D
kubernetes.io/os <Tipo de sistema operacional> Linux/Windows Idêntico
node.kubernetes.io/instance-type <Tamanho da VM> Standard_NC6s_v3 Máquinas
topology.kubernetes.io/region <Região do Azure> westus2 Idêntico
topology.kubernetes.io/zone <Zona do Azure> 0 Idêntico
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 Idêntico
kubernetes.azure.com/managedby aks aks N/D
kubernetes.azure.com/mode <mode> User ou system Usuário
kubernetes.azure.com/role agente Agent Idêntico
kubernetes.azure.com/scalesetpriority <prioridade do VMSS> spot ou regular N/D
kubernetes.io/hostname <nome do host> aks-nodepool-00000000-vmss000000 Idêntico
kubernetes.azure.com/storageprofile <Perfil de armazenamento em disco do sistema operacional> Managed N/D
kubernetes.azure.com/storagetier <Camada de armazenamento em disco do sistema operacional> Premium_LRS N/D
kubernetes.azure.com/node-image-version <Versão do disco rígido virtual> AKSUbuntu-1804-2020.03.05 Versão do nó virtual
kubernetes.azure.com/network-name <nome da vnet nodepool> vnetName Rede virtual do nó virtual
kubernetes.azure.com/network-subnet <nome da sub-rede nodepool> subnetName Nome da sub-rede do nó virtual
kubernetes.azure.com/ppg <nome ppg nodepool> ppgName N/D
kubernetes.azure.com/encrypted-set <nodepool criptografado-definir nome> encrypted-set-name N/D
kubernetes.azure.com/accelerator <acelerador> nvidia N/D
kubernetes.azure.com/fips_enabled <O FIPS está habilitado?> true N/D
kubernetes.azure.com/os-sku <os/sku> Criar ou atualizar a unidade de manutenção de estoque do sistema operacional Linux
kubernetes.azure.com/os-sku-effective <SKU atual do sistema operacional escolhido> Ubuntu2204 ou semelhante (nunca Ubuntu, sempre tem a versão especificada) N/D
kubernetes.azure.com/os-sku-requested <SKU do sistema operacional solicitada pelo usuário> Ubuntu, Ubuntu2204ou semelhante (corresponde exatamente ao sku solicitado da API) N/D
kubernetes.azure.com/sku-cpu <número de CPUs> 4 Idêntico
kubernetes.azure.com/sku-memory <memória em GB> 16 Idêntico
kubernetes.azure.com/nodepool-type <Tipo de grupo de nós> VirtualMachineScaleSets N/D
  • O mesmo está incluído em locais em que os valores esperados para os rótulos não diferem entre um pool de nós padrão e um pool de nós virtuais. Como os pods de nó virtual não expõem nenhuma VM (máquina virtual) subjacente, os valores de SKU da VM são substituídos pelo SKU Virtual.
  • A versão do nó virtual refere-se à versão atual da versão virtual do conector Kubelet-ACI.
  • Nome da sub-rede do nó virtual é o nome da sub-rede em que os pods de nó virtual são implantados na ACI (Instância de Contêiner do Azure).
  • A rede virtual do nó virtual é o nome da rede virtual, que contém a sub-rede em que os pods de nó virtual são implantados na ACI.
  • Node Auto Provisioning (Karpenter) nós possuem rótulos adicionais correspondentes aos seletores suportados.
  • kubernetes.azure.com/network-name e kubernetes.azure.com/network-subnet será truncado se os nomes de recursos subjacentes tiverem mais de 64 caracteres.

Prefixos reservados

Os seguintes prefixos são prefixos reservados para o AKS e não podem ser usados em nenhum nó:

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

Para obter mais informações sobre prefixos reservados, consulte Rótulos, anotações e traços bem conhecidos do Kubernetes.

Rótulos preterido

Os rótulos a seguir devem ser preteridos na versão v1.24 do Kubernetes. Você deve alterar todas as referências do rótulo para o substituto recomendado.

Rótulo Substituto recomendado Mantenedor
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 Serviço de Kubernetes do Azure
kubernetes.io/role* kubernetes.azure.com/role=agent Serviço de Kubernetes do Azure
Agentpool* kubernetes.azure.com/agentpool Serviço de Kubernetes do Azure
Storageprofile* kubernetes.azure.com/storageprofile Serviço de Kubernetes do Azure
Storagetier* kubernetes.azure.com/storagetier Serviço de Kubernetes do Azure
Accelerator* kubernetes.azure.com/accelerator Serviço de Kubernetes do Azure

*Preterido recentemente. Para obter mais informações, consulte as Notas Sobre a Versão.

Próximas etapas

Saiba mais sobre os rótulos do Kubernetes na Documentação de rótulos do Kubernetes.