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

  1. Crie um cluster do AKS com um rótulo usando o comando az aks create e especifique o parâmetro --node-labels para definir seus rótulos. Os rótulos devem ser um par de chaves/valores e ter uma sintaxe válida.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 2 \
        --nodepool-labels dept=IT costcenter=9000
    
  2. Verifique se os rótulos foram definidos usando o comando kubectl get nodes --show-labels.

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

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

  1. Crie um pool de nós com um rótulo usando o comando az aks nodepool add e especifique um nome para os parâmetros --name e rótulos para o parâmetro --labels. Os rótulos devem ser um par de chaves/valores e ter uma sintaxe válida

    O seguinte comando de exemplo cria um pool de nós chamado labelnp com os rótulos dept=HR e costcenter=5000.

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

    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:

    [
      {
        ...
        "count": 1,
        ...
        "name": "labelnp",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "nodeLabels":  {
          "costcenter": "5000",
          "dept": "HR"
        },
        ...
      },
     ...
    ]
    
  2. Verifique se os rótulos foram definidos usando o comando kubectl get nodes --show-labels.

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

Atualizando rótulos em pools de nós existentes

  1. Atualize um rótulo de um pool de nós existente usando o comando az aks nodepool update. A Atualização de rótulos em pools de nós existentes substitui os rótulos antigos com os novos rótulos. Os rótulos devem ser um par de chaves/valores e ter uma sintaxe válida.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name labelnp \
        --labels dept=ACCT costcenter=6000 \
        --no-wait
    
  2. Verifique se os rótulos foram definidos usando o comando kubectl get nodes --show-labels.

    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 amd64 runtime.GOARCH 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áquina
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/mode <mode> Usuário ou sistema Usuário
kubernetes.azure.com/role agente Agente Idêntico
kubernetes.azure.com/scalesetpriority <prioridade do VMSS> Spot ou regular N/D
kubernetes.io/hostname <hostname> aks-nodepool-00000000-vmss000000 Idêntico
kubernetes.azure.com/storageprofile <Perfil de armazenamento em disco do sistema operacional> Gerenciado N/D
kubernetes.azure.com/storagetier <Camada de armazenamento em disco do sistema operacional> Premium_LRS N/D
kubernetes.azure.com/instance-sku <Família do SKU> Standard_N Máquina
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/subnet <nome da sub-rede nodepool> subnetName Nome da sub-rede do nó virtual
kubernetes.azure.com/vnet <nome da vnet nodepool> vnetName Rede virtual 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
  • 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.

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.