Použití štítků v clusteru Azure Kubernetes Service (AKS)

Pokud máte více fondů uzlů, můžete při vytváření fondu uzlů přidat popisek. Štítky Kubernetes spravují pravidla plánování pro uzly. Ty popisky můžete k fondu uzlů přidat kdykoli a použít je na všechny uzly ve fondu uzlů.

V tomto návodu se dozvíte, jak používat popisky v clusteru Azure Kubernetes Service (AKS).

Požadavky

Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.2.0 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Vytvoření clusteru AKS s popiskem

Cluster AKS s popisky uzlů můžete vytvořit pro nastavení metadat klíč-hodnota pro plánování úloh.

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

Výsledky:

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

Vytvořte cluster AKS určující popisky uzlů (např. 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

Výsledky:

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

Ověřte, že byly štítky nastavené:

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"

Vytvoření fondu uzlů s popiskem

Můžete vytvořit další fond uzlů se štítky pro konkrétní potřeby plánování.

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

Následuje příklad výstupu az aks nodepool list z příkazu znázorňujícího fond uzlů labelnpvytváří uzly se zadanými nodeLabels:

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

Výsledky:

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

Ověřte, že byly štítky nastavené:

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

Aktualizace popisků u existujících uzlových skupin

Popisky můžete aktualizovat u stávajícího poolu uzlů. Upozorňujeme, že aktualizace popisků přepíše staré popisky.

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

Ověřte, že jsou nové štítky nastavené.

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

Nedostupné popisky

Rezervované systémové popisky

Od vydání AKS 2021-08-19 bylo zastaveno možnost provádět změny rezervovaných štítků AKS. Při pokusu o změnu těchto popisků se zobrazí chybová zpráva.

Následující štítky jsou vyhrazené štítky AKS. Využití virtuálního uzlu určuje, jestli by tyto popisky mohly být podporovanou systémovou funkcí na virtuálních uzlech. Některé vlastnosti, které tyto systémové funkce mění, nejsou na virtuálních uzlech dostupné, protože vyžadují změnu hostitele.

Štítek Hodnota Příklad/Možnosti Využití virtuálního uzlu
kubernetes.azure.com/agentpool <Název fondu agentů> nodepool1 Stejné
kubernetes.io/arch <runtime.GOARCH> amd64
kubernetes.io/os <Typ operačního systému> Linux/Windows Stejné
node.kubernetes.io/instance-type <Velikost virtuálního počítače> Standard_NC6s_v3 Virtuální
topology.kubernetes.io/region <Region Azure> westus2 Stejné
topology.kubernetes.io/zone <Zóna Azure> 0 Stejné
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 Stejné
kubernetes.azure.com/managedby aks aks
kubernetes.azure.com/mode <režim> User nebo system Uživatel
kubernetes.azure.com/role agent Agent Stejné
kubernetes.azure.com/scalesetpriority (zastaralé) <Priorita VMSS> spot (regular není zapsán na běžných uzlech). Raději raději kubernetes.azure.com/priority .
kubernetes.azure.com/priority <Priorita virtuálního počítače> spot nebo regular
kubernetes.io/hostname <název hostitele> aks-nodepool-00000000-vmss000000 Stejné
kubernetes.azure.com/storageprofile <Profil úložiště disku s operačním systémem> Managed
kubernetes.azure.com/storagetier <Úroveň úložiště disku OS> Premium_LRS
kubernetes.azure.com/node-image-version <Verze VHD> AKSUbuntu-1804-2020.03.05 Verze virtuálního uzlu
kubernetes.azure.com/network-name <Název vnet nodepoolu> vnetName Virtuální uzel virtuální sítě
kubernetes.azure.com/network-subnet <Název podsítě skupiny uzlů> subnetName Název podsítě virtuálního uzlu
kubernetes.azure.com/ppg <název nodepoolu ppg> ppgName
kubernetes.azure.com/encrypted-set <Název šifrované sady uzlů> encrypted-set-name
kubernetes.azure.com/accelerator <akcelerátor> nvidia
kubernetes.azure.com/fips_enabled <je povolené FIPS?> true
kubernetes.azure.com/os-sku <os/sKU> Vytvoření nebo aktualizace skladové položky operačního systému Operační systém Linux
kubernetes.azure.com/os-sku-effective <Vybraná skutečná skladová položka operačního systému> Ubuntu2204 nebo podobné (nikdy ne Ubuntu, vždy má zadanou verzi)
kubernetes.azure.com/os-sku-requested <uživatel požádal o skladovou položku operačního systému> Ubuntu, Ubuntu2204 nebo podobné (přesně odpovídá požadované SKU z rozhraní API)
kubernetes.azure.com/sku-cpu <počet procesorů> 4 Stejné
kubernetes.azure.com/sku-memory <paměť v GB> 16 Stejné
kubernetes.azure.com/nodepool-type <Typ poolu uzlů> VirtualMachineScaleSets
  • Stejný je zahrnuto tam, kde se očekávané hodnoty popisků neliší mezi standardním fondem uzlů a fondem virtuálních uzlů. Vzhledem k tomu, že pody virtuálních uzlů nezpřístupňují žádný základní virtuální počítač, nahradí se hodnoty skladové položky virtuálního počítače hodnotou SKU Virtual.
  • Verze virtuálního uzlu odkazuje na aktuální verzi virtuálního konektoru Kubelet-ACI.
  • Název podsítě virtuálního uzlu označuje podsíť, ve které jsou pody virtuálního uzlu nasazené do služby Azure Container Instance (ACI).
  • Virtuální síť virtuálního uzlu je název virtuální sítě, která obsahuje podsíť, ve které jsou pody virtuálních uzlů nasazeny na ACI.
  • Uzly automatického zřizování (Karpenter) mají další štítky odpovídající podporovaným selektorům.
  • kubernetes.azure.com/network-name a kubernetes.azure.com/network-subnet zkrátí se, pokud jsou názvy podkladových prostředků delší než 64 znaků.

Rezervované předpony

Následující předpony jsou vyhrazené předpony AKS a nelze je použít pro žádný uzel:

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

Další informace o vyhrazených předponách najdete v tématu Známé popisky, poznámky a tainty Kubernetes.

Zastaralé popisky

Následující popisky se plánují pro vyřazení s vydáním Kubernetes verze 1.24. Všechny odkazy na popisky byste měli změnit na doporučenou náhradu.

Štítek Doporučená náhrada Správce
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
Fond agentů* kubernetes.azure.com/agentpool Azure Kubernetes Service
Profil úložiště* kubernetes.azure.com/storageprofile Azure Kubernetes Service
Storagetier* kubernetes.azure.com/storagetier Azure Kubernetes Service
Akcelerátor* kubernetes.azure.com/accelerator Azure Kubernetes Service

Nově nedoporučované. Další informace najdete v poznámkách k verzi.

Další kroky

Další informace o popiscích Kubernetes najdete v dokumentaci k popiskům Kubernetes.