Freigeben über


Verwenden von Bezeichnungen in einem AKS-Cluster (Azure Kubernetes Service)

Wenn Sie über mehrere Knotenpools verfügen, kann es wünschenswert sein, bei der Erstellung des Knotenpools eine Bezeichnung hinzuzufügen. Kubernetes-Bezeichnungen behandeln die Planungsregeln für Knoten. Sie können einem Knotenpool jederzeit Bezeichnungen hinzufügen und diese auf alle Knoten im Knotenpool anwenden.

In dieser Schrittanleitung erfahren Sie, wie Sie Bezeichnungen in einem AKS-Cluster (Azure Kubernetes Service) verwenden.

Voraussetzungen

Azure CLI-Version 2.2.0 oder höher muss installiert und konfiguriert sein. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Erstellen eines AKS-Clusters mit einer Bezeichnung

Sie können einen AKS-Cluster mit Knotenbeschriftungen erstellen, um Schlüssel-/Wertmetadaten für die Arbeitsauslastungsplanung festzulegen.

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

Ergebnisse:

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

Erstellen Sie den AKS-Cluster, der Knotenbeschriftungen angibt (z. B. 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

Ergebnisse:

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

Überprüfen Sie, ob die Bezeichnungen festgelegt wurden:

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"

Erstellen eines Knotenpools mit einer Bezeichnung

Sie können einen zusätzlichen Knotenpool mit Bezeichnungen für bestimmte Planungsanforderungen erstellen.

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 \

Im Folgenden finden Sie eine Beispielausgabe des az aks nodepool list Befehls, der zeigt, dass der Knotenpool "labelnp" Knoten mit den angegebenen nodeLabels erstellt:

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

Ergebnisse:

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

Überprüfen Sie, ob die Bezeichnungen festgelegt wurden:

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

Aktualisieren von Bezeichnungen für vorhandene Knotenpools

Sie können die Bezeichnungen in einem vorhandenen Knotenpool aktualisieren. Beachten Sie, dass durch das Aktualisieren von Bezeichnungen die alten Bezeichnungen überschrieben werden.

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

Überprüfen Sie, ob die neuen Bezeichnungen festgelegt sind:

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

Nicht verfügbare Bezeichnungen

Reservierte Systembezeichnungen

Seit dem AKS-Release vom 19.08.2021 gibt es in AKS keine Möglichkeit mehr, Änderungen an reservierten AKS-Bezeichnungen vorzunehmen. Der Versuch, diese Bezeichnungen zu ändern, führt zu einer Fehlermeldung.

Die folgenden Bezeichnungen sind reservierte AKS-Bezeichnungen. Die Verwendung virtueller Knoten gibt an, ob diese Bezeichnungen ein unterstütztes Systemfeature auf virtuellen Knoten sein können. Einige Eigenschaften, die diese Systemfeatures ändern, sind auf den virtuellen Knoten nicht verfügbar, da dafür eine Änderung des Hosts erforderlich ist.

Bezeichnung Wert Beispiel/Optionen Verwendung virtueller Knoten
kubernetes.azure.com/agentpool <Name des Agentpools> nodepool1 identisch
kubernetes.io/arch <runtime.GOARCH> amd64
kubernetes.io/os <OS Type> (Betriebssystemtyp) Linux/Windows identisch
node.kubernetes.io/instance-type <Größe des virtuellen Computers> Standard_NC6s_v3 Virtual
topology.kubernetes.io/region <Azure-Region> westus2 identisch
topology.kubernetes.io/zone <Azure-Zone> 0 identisch
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 identisch
kubernetes.azure.com/managedby aks aks
kubernetes.azure.com/mode <mode> User oder system Benutzer
kubernetes.azure.com/role Agent Agent identisch
kubernetes.azure.com/scalesetpriority <VMSS-Priorität> spot oder regular
kubernetes.io/hostname <Hostname> aks-nodepool-00000000-vmss000000 identisch
kubernetes.azure.com/storageprofile <Speicherprofil für Betriebssystemdatenträger> Managed
kubernetes.azure.com/storagetier <Speicherebene für Betriebssystemdatenträger> Premium_LRS
kubernetes.azure.com/node-image-version <VHD-Version> AKSUbuntu-1804-2020.03.05 Version des virtuellen Knotens
kubernetes.azure.com/network-name <Name des virtuellen Knotenpoolnetzwerks> vnetName Virtuelles Netzwerk des virtuellen Knotens
kubernetes.azure.com/network-subnet <Name des Knotenpoolsubnetzes> subnetName Subnetzname des virtuellen Knotens
kubernetes.azure.com/ppg <PPG-Name des Knotenpools> ppgName
kubernetes.azure.com/encrypted-set <Name des Verschlüsselungssets für den Knotenpool> encrypted-set-name
kubernetes.azure.com/accelerator <Beschleuniger> nvidia
kubernetes.azure.com/fips_enabled <ist FIPS aktiviert?> true
kubernetes.azure.com/os-sku <Betriebssystem/SKU> Betriebssystem-SKU erstellen oder aktualisieren Linux
kubernetes.azure.com/os-sku-effective <Aktuelle Betriebssystem-SKU ausgewählt> Ubuntu2204 oder ähnlich (nie Ubuntu, hat immer die angegebene Version)
kubernetes.azure.com/os-sku-requested <Vom Benutzer angeforderte Betriebssystem-SKU> Ubuntu, Ubuntu2204, oder ähnliche (genau dem angeforderten SKU aus der API entsprechend)
kubernetes.azure.com/sku-cpu <Anzahl der CPUs> 4 identisch
kubernetes.azure.com/sku-memory <Arbeitsspeicher in GB> 16 identisch
kubernetes.azure.com/nodepool-type <Knotenpooltyp> VirtualMachineScaleSets
  • Identisch gilt für Stellen, an denen sich die erwarteten Werte für die Bezeichnungen zwischen einem Standardknotenpool und einem virtuellen Knotenpool nicht unterscheiden. Da Pods für virtuelle Knoten keine zugrunde liegenden virtuellen Computer (VM) verfügbar machen, werden die VM-SKU-Werte durch die SKU Virtuell ersetzt.
  • Die Version des virtuellen Knotens bezieht sich auf die aktuelle Version des Releases des virtuellen Kubelet-ACI-Connectors.
  • Der Subnetzname des virtuellen Knotens ist der Name des Subnetzes, in dem Pods für virtuelle Knoten in ACI (Azure Container Instance) bereitgestellt werden.
  • Das virtuelle Netzwerk des virtuellen Knotens ist der Name des virtuellen Netzwerks, das das Subnetz enthält, in dem Pods für virtuelle Knoten in ACI bereitgestellt werden.
  • Automatische Knotenbereitstellung (Karpenter) Knoten haben zusätzliche Bezeichnungen, die den entsprechenden Selektoren entsprechen.
  • kubernetes.azure.com/network-name und kubernetes.azure.com/network-subnet werden abgeschnitten, wenn die zugrunde liegenden Ressourcennamen länger als 64 Zeichen sind.

Reservierte Präfixe

Die folgenden Präfixe sind reservierte AKS-Präfixe und können nicht für Knoten verwendet werden:

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

Weitere Informationen zu reservierten Präfixen finden Sie unter Bekannte Bezeichnungen, Anmerkungen und Taints in Kubernetes.

Veraltete Bezeichnungen

Die folgenden Bezeichnungen gelten seit der Veröffentlichung von Kubernetes v1.24 als veraltet. Sie sollten alle Verweise auf diese Bezeichnungen in die empfohlene Ersatzbezeichnung ändern.

Bezeichnung Empfohlene Ersatzbezeichnung Maintainer
failure-domain.beta.kubernetes.io/region topology.kubernetes.io/region Kubernetes (Englisch)
failure-domain.beta.kubernetes.io/zone topology.kubernetes.io/zone Kubernetes (Englisch)
beta.kubernetes.io/arch kubernetes.io/arch Kubernetes (Englisch)
beta.kubernetes.io/instance-type node.kubernetes.io/instance-type Kubernetes (Englisch)
beta.kubernetes.io/os kubernetes.io/os Kubernetes (Englisch)
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
Speicherprofil kubernetes.azure.com/storageprofile Azure Kubernetes Service
Speicherebene* kubernetes.azure.com/storagetier Azure Kubernetes Service
Beschleuniger* kubernetes.azure.com/accelerator Azure Kubernetes Service

*Kürzlich veraltet. Weitere Informationen finden Sie in den Versionshinweisen.

Nächste Schritte

Weitere Informationen zu Kubernetes-Bezeichnungen finden Sie in der Dokumentation zu Kubernetes-Bezeichnungen.