Compartir a través de


Usar etiquetas en un clúster de Azure Kubernetes Service (AKS)

Si tiene varios grupos de nodos, puede agregar una etiqueta durante la creación del grupo de nodos. Las etiquetas de Kubernetes controlan las reglas de programación de los nodos. Puede agregar etiquetas a un grupo de nodos en cualquier momento y aplicarlas a todos los nodos del grupo de nodos.

En esta guía paso a paso, aprenderá a usar etiquetas en un clúster de Azure Kubernetes Service (AKS).

Requisitos previos

Es preciso que esté instalada y configurada la versión 2.2.0 de la CLI de Azure, o cualquier otra posterior. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Creación de un clúster de AKS con una etiqueta

Puede crear un clúster de AKS con etiquetas de nodo para establecer metadatos de clave y valor para la programación de cargas de trabajo.

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

Cree el clúster de AKS que especifique etiquetas de nodo (por ejemplo, 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"
}

Compruebe que se han establecido las etiquetas:

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"

Creación de un grupo de nodos con una etiqueta

Puede crear un grupo de nodos adicional con etiquetas para necesidades de programación 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 continuación se muestra un ejemplo de salida del comando az aks nodepool list que muestra que el grupo de nodos labelnp está creando nodos con nodeLabels especificadas:

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

Compruebe que se han establecido las etiquetas:

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

Actualización de etiquetas en grupos de nodos existentes

Puede actualizar las etiquetas en un grupo de nodos existente. Tenga en cuenta que la actualización de etiquetas sobrescribirá las etiquetas antiguas.

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

Compruebe que se han establecido las nuevas etiquetas:

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

Etiquetas no disponibles

Etiquetas reservadas del sistema

Desde la versión 2021-08-19 de AKS, AKS ha detenido la capacidad de hacer cambios en las etiquetas reservadas de AKS. Si intenta cambiar estas etiquetas, se produce un mensaje de error.

Las etiquetas siguientes son etiquetas reservadas de AKS. El uso del nodo virtual especifica si estas etiquetas podrían ser una característica del sistema admitida en los nodos virtuales. Algunas propiedades que cambian estas características del sistema no están disponibles en los nodos virtuales, ya que requieren modificar el host.

Etiqueta Value Ejemplo/Opciones Uso del nodo virtual
kubernetes.azure.com/agentpool <nombre del grupo de agentes> nodepool1 Iguales
kubernetes.io/arch <runtime.GOARCH> amd64 N/D
kubernetes.io/os <OS Type> (Tipo de SO) Linux/Windows Iguales
node.kubernetes.io/instance-type <Tamaño de VM> Standard_NC6s_v3 Virtual
topology.kubernetes.io/region <Región de Azure> westus2 Iguales
topology.kubernetes.io/zone <Zona de Azure> 0 Iguales
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 Iguales
kubernetes.azure.com/managedby aks aks N/D
kubernetes.azure.com/mode <modo> User o system Usuario
kubernetes.azure.com/role agente Agent Iguales
kubernetes.azure.com/scalesetpriority <Prioridad de VMSS> spot o regular N/D
kubernetes.io/hostname <nombre de host> aks-nodepool-00000000-vmss000000 Iguales
kubernetes.azure.com/storageprofile <Perfil de almacenamiento en disco del sistema operativo> Managed N/D
kubernetes.azure.com/storagetier <Nivel de almacenamiento de disco del sistema operativo> Premium_LRS N/D
kubernetes.azure.com/node-image-version <Versión del disco duro virtual> AKSUbuntu-1804-2020.03.05 Versión del nodo virtual
kubernetes.azure.com/network-name <nombre de red virtual del grupo de nodos> vnetName Red virtual de nodo virtual
kubernetes.azure.com/network-subnet <nombre de subred del grupo de nodos> subnetName Nombre de subred del nodo virtual
kubernetes.azure.com/ppg <nombre ppg del grupo de nodos> ppgName N/D
kubernetes.azure.com/encrypted-set <nombre de conjunto cifrado del grupo de nodos> encrypted-set-name N/D
kubernetes.azure.com/accelerator <acelerador> nvidia N/D
kubernetes.azure.com/fips_enabled <¿Está habilitado FIPS?> true N/D
kubernetes.azure.com/os-sku <os/sku> Crear o actualizar SKU de sistema operativo Linux
kubernetes.azure.com/os-sku-effective <SKU real del sistema operativo elegida> Ubuntu2204 o similar (nunca Ubuntu, siempre tiene la versión especificada) N/D
kubernetes.azure.com/os-sku-requested <SKU del sistema operativo solicitada por el usuario> Ubuntu, Ubuntu2204o similar (coincide exactamente con la SKU solicitada de la API) N/D
kubernetes.azure.com/sku-cpu <núm. de CPU> 4 Iguales
kubernetes.azure.com/sku-memory <memoria en GB> 16 Iguales
kubernetes.azure.com/nodepool-type <Tipo de grupo de nodos> VirtualMachineScaleSets N/D
  • Lo mismo se incluye en los lugares donde los valores esperados para las etiquetas no difieren entre un grupo de nodos estándar y un grupo de nodos virtual. Dado que los pods de nodo virtual no exponen ninguna máquina virtual (VM) subyacente, los valores de SKU de máquina virtual se reemplazan por la SKU Virtual.
  • La versión del nodo virtual hace referencia a la versión actual de la versión del conector virtual de Kubelet-ACI.
  • El nombre de subred del nodo virtual es el nombre de la subred donde se implementan los pods de nodo virtual en Azure Container Instance (ACI).
  • Red virtual de nodo virtual es el nombre de la red virtual, que contiene la subred donde se implementan pods de nodo virtual en ACI.
  • Los nodos de aprovisionamiento automático de nodos (Karpenter) tienen etiquetas adicionales correspondientes a los selectores admitidos.
  • kubernetes.azure.com/network-name y kubernetes.azure.com/network-subnet se truncarán si los nombres de recursos subyacentes tienen más de 64 caracteres de longitud.

Prefijos reservados

Los siguientes prefijos son prefijos reservados de AKS y no pueden utilizarse para ningún nodo:

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

Para obtener más información sobre prefijos reservados, consulte Etiquetas, anotaciones y marcas conocidas de Kubernetes.

Etiquetas en desuso

Las siguientes etiquetas están previstas para desuso con el lanzamiento de Kubernetes v1.24. Debe cambiar las referencias de etiqueta al sustituto recomendado.

Etiqueta Sustituto recomendado Responsable de mantenimiento
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
Storageprofile* kubernetes.azure.com/storageprofile Azure Kubernetes Service
Storagetier* kubernetes.azure.com/storagetier Azure Kubernetes Service
Accelerator* kubernetes.azure.com/accelerator Azure Kubernetes Service

*Recién en desuso. Para más información, consulte las notas de la versión.

Pasos siguientes

Más información sobre las etiquetas de Kubernetes en la documentación de etiquetas de Kubernetes.