在 Azure Kubernetes Service (AKS) 叢集中使用標籤

如果您有多個節點集區,建議您在節點集區建立期間新增標籤。 Kubernetes 標籤處理節點的排程規則。 您可以隨時將標籤新增至節點集區,並將其套用至節點集區中的所有節點。

在本操作指南中,了解如何在 Azure Kubernetes Service (AKS) 叢集中使用標籤。

必要條件

您需要安裝和設定 Azure CLI 2.2.0 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

搭配標籤建立 AKS 叢集

  1. 使用 az aks create 命令建立具有標籤的 AKS 叢集,並指定 --node-labels 參數來設定標籤。 標籤必須是索引鍵/值組,並具備有效語法

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 2 \
        --nodepool-labels dept=IT costcenter=9000
    
  2. 使用 kubectl get nodes --show-labels 命令確認已設定標籤。

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

搭配標籤建立節點集區

  1. 使用 az aks nodepool add 命令建立具有標籤的節點集區,並指定 --name 參數的名稱和 --labels 參數的標籤。 標籤必須是機碼/值組,並具備有效語法

    下列範例命令會建立名為 labelnp 的節點集區,其具有 dept=HRcostcenter=5000 標籤。

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

    下列 az aks nodepool list 命令的範例輸出顯示 labelnp 節點集區正在使用指定的 nodeLabels建立節點:

    [
      {
        ...
        "count": 1,
        ...
        "name": "labelnp",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "nodeLabels":  {
          "costcenter": "5000",
          "dept": "HR"
        },
        ...
      },
     ...
    ]
    
  2. 使用 kubectl get nodes --show-labels 命令確認已設定標籤。

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

更新現有節點集區上的標籤

  1. 使用 az aks nodepool update 命令更新現有節點集區上的標籤。 更新現有節點集區上的標籤將會以新標籤覆寫舊標籤。 標籤必須是索引鍵/值組,並具備有效語法

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name labelnp \
        --labels dept=ACCT costcenter=6000 \
        --no-wait
    
  2. 使用 kubectl get nodes --show-labels 命令確認已設定標籤。

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

無法使用標籤

保留的系統標籤

2021-08-19 AKS 版本起,AKS 已停止變更 AKS 保留標籤的功能。 嘗試變更這些標籤會導致出現錯誤訊息。

下列標籤為 AKS 保留標籤。 「虛擬節點使用方式」會指定這些標籤是否為虛擬節點上支援的系統功能。 這些系統功能變更的部分屬性無法用於虛擬節點,因其需要修改主機。

標籤 範例/選項 虛擬節點使用方式
kubernetes.azure.com/agentpool <代理程式集區名稱> nodepool1 相同
kubernetes.io/arch amd64 runtime.GOARCH N/A
kubernetes.io/os <OS 類型> Linux/Windows 相同
node.kubernetes.io/instance-type <VM 大小> Standard_NC6s_v3 網路
topology.kubernetes.io/region <Azure 區域> westus2 相同
topology.kubernetes.io/zone <Azure 區域> 0 相同
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 相同
kubernetes.azure.com/mode <mode> 使用者或系統 User
kubernetes.azure.com/role 代理程式 專員 相同
kubernetes.azure.com/scalesetpriority <VMSS 優先順序> 現成或一般 N/A
kubernetes.io/hostname <hostname> aks-nodepool-00000000-vmss000000 相同
kubernetes.azure.com/storageprofile <OS 磁碟儲存體設定檔> 受控 N/A
kubernetes.azure.com/storagetier <OS 磁碟儲存層> Premium_LRS N/A
kubernetes.azure.com/instance-sku <SKU 系列> Standard_N 網路
kubernetes.azure.com/node-image-version <VHD 版本> AKSUbuntu-1804-2020.03.05 虛擬節點版本
kubernetes.azure.com/subnet <nodepool 子網路名稱> subnetName 虛擬節點子網路名稱
kubernetes.azure.com/vnet <nodepool vnet 名稱> vnetName 虛擬節點虛擬網路
kubernetes.azure.com/ppg <nodepool ppg 名稱> ppgName N/A
kubernetes.azure.com/encrypted-set <nodepool encrypted-set 名稱> encrypted-set-name N/A
kubernetes.azure.com/accelerator <加速器> nvidia N/A
kubernetes.azure.com/fips_enabled <fips 是否已啟用?> true N/A
kubernetes.azure.com/os-sku <os/sku> 建立或更新 OS SKU Linux
  • 「相同」包括在標準節點集區和虛擬節點集區之間標籤的預期值是相同的地方。 由於虛擬節點 Pod 不會公開任何底層虛擬機器 (VM),因此 VM SKU 值會取代為 SKU Virtual
  • 「虛擬節點版本」是指虛擬 Kubelet-ACI 連接器版本 (英文) 的目前版本。
  • 「虛擬節點子網路名稱」是虛擬節點 Pod 部署至 Azure 容器執行個體 (ACI) 所在的子網路名稱。
  • 「虛擬節點虛擬網路」是虛擬網路的名稱,其中包含在 ACI 上部署虛擬節點 Pod 的子網路。

保留前置詞

下列前置詞是 AKS 保留前置詞,無法用於任何節點:

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

如需保留前置詞的詳細資訊,請參閱 Kubernetes 已知標籤、註釋和污點

已淘汰標籤

下列標籤計畫隨著 Kubernetes v1.24 的發行而淘汰。 您應將任何標籤參考變更為建議的替代項目。

標籤 建議的替代項目 維護人員
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

*新淘汰。 如需詳細資訊,請參閱版本資訊

下一步

Kubernetes 標籤文件 (英文) 中深入了解 Kubernetes 標籤。