在 Azure Kubernetes Service (AKS) 使用 Azure 標籤

有了 Azure Kubernetes Service (AKS) 後,您即可使用 Azure Resource Manager 和 Azure CLI 在 AKS 叢集及其相關資源上設定 Azure 標籤。 對於某些資源,您也可以使用 Kube 資訊清單來設定 Azure 標籤。 Azure 標籤是特定商務流程的實用追蹤資源,例如退款

本文章說明如何設定 AKS 叢集和相關資源的 Azure 標籤。

開始之前

開始之前,請檢閱下列資訊:

  • AKS 叢集上設定的標籤會套用於與叢集相關的全部資源,但不適用於節點集區。 此作業會覆寫現有索引鍵的值。
  • 節點集區上設定的標籤僅適用於與該節點集區相關的資源。 此作業會覆寫現有索引鍵的值。 該節點集區以外的資源,包括叢集其餘部分和其他節點集區的資源,均不會受到影響。
  • 公用 IP、檔案和磁碟區可透過 Kubernetes 資訊清單來設定 Kubernetes 所設定的標籤。 以這種方式設定的標籤會維護 Kube 值,即使您稍後使用不同的方法更新這些值也一樣。 透過 Kube 移除公用 IP、檔案或磁碟區時,會移除 Kube 所設定的任何標籤。 Kube 未追蹤這些資源上的標籤仍不會受到影響。

必要條件

  • Azure CLI 2.0.59 版或更新版本。 若要尋找您的版本,請執行 az --version。 若您需要安裝或升級版本,請參閱安裝 Azure CLI
  • Kube 1.20 版或更新版本。

限制

  • Azure 標籤具有不區分大小寫的作業索引碼,例如您藉由搜尋索引鍵擷取標籤時所需的索引碼。 在此情況下,不論大小寫為何,都會更新或擷取具有指定金鑰的標籤。 標記值會區分大小寫。
  • 在 AKS 中,如果多個標籤都設定為相同的索引鍵但大小寫不同,則標籤會依字母順序使用。 例如,Key1 產生的結果 {"Key1": "val1", "kEy1": "val2", "key1": "val3"} 且系統正在設定 val1
  • 若為共用資源,則標籤無法自行判斷資源使用量的分割。

Azure 標籤和 AKS 叢集

您使用 --tags 參數建立或更新 AKS 叢集時,系統會將下列項目指派至您指定的 Azure 標籤:

  • AKS 叢集本身及其相關資源:
    • 路由表
    • 公用 IP
    • 負載平衡器
    • 網路安全性群組
    • 虛擬網路
    • AKS 管理的 kubelet msi
    • AKS 管理的附加元件 msi
    • 私人叢集相關聯的私人 DNS 區域
    • 私人叢集相關聯的私人端點
  • 節點資源群組

注意

Azure 私用 DNS 僅支援 15 個標籤。 如需詳細資訊,請參閱標記資源

在 AKS 叢集上建立或更新標籤

建立新的 AKS 叢集

重要

若您在建立新叢集時使用現有的資源,例如 IP 位址或路由表,az aks create 命令會覆寫一組標籤。 若您稍後刪除該叢集,則會移除叢集所設定的任何標籤。

  1. 使用 az aks create 命令搭配 --tags 參數建立叢集並指派 Azure 標籤。

    注意

    若要在初始節點集區設定標籤,虛擬機器擴展集,以及與初始節點集區相關聯的每個虛擬機器擴展集執行個體,也可以設定 --nodepool-tags 參數。

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags dept=IT costcenter=9999 \
        --generate-ssh-keys
    
  2. 使用 az aks show 命令驗證標籤已套用於叢集和相關資源。

    az aks show -g myResourceGroup -n myAKSCluster --query '[tags]'
    

    下列範例輸出顯示套用於叢集的標記:

    {
      "clusterTags": {
        "dept": "IT",
        "costcenter": "9999"
      }
    }
    

更新現有的 AKS 叢集

重要

使用 az aks update 命令在叢集上設定標籤會覆寫標籤集。 例如,若您的叢集具有標籤 dept=ITcostcenter=9999,而且您搭配標籤 team=Alphacostcenter=1234 使用 az aks update,則新的標籤清單會是 team=Alphacostcenter=1234

  1. 使用 az aks update 命令搭配 --tags 參數,更新現有叢集上的標記。

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags team=alpha costcenter=1234
    
  2. 使用 az aks show 命令驗證標籤已套用於叢集和相關資源。

    az aks show -g myResourceGroup -n myAKSCluster --query '[tags]'
    

    下列範例輸出顯示套用於叢集的標記:

    {
      "clusterTags": {
        "team": "alpha",
        "costcenter": "1234"
      }
    }
    

將標籤新增至節點集區

您可以將 Azure 標籤套用至 AKS 叢集中新節點集區或現有節點集區。 套用至節點集區的標籤會套用至節點集區內的每個節點,並透過升級來保存。 標籤也會套用至於向外延展作業期間新增至節點集區的新節點。 新增標籤有助於處理原則追蹤或成本估計等工作。

您使用 --tags 參數建立或更新節點集區時,您指定的標籤會指派給下列資源:

  • 節點集區。
  • 與節點集區相關聯的虛擬機器擴展集和每個虛擬機器擴展集執行個體。

建立新的節點集區

  1. 使用 az aks nodepool add 命令搭配 --tags 參數,建立具有 Azure 標籤的節點集區。

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --node-count 1 \
        --tags abtest=a costcenter=5555 \
        --no-wait
    
  2. 使用 az aks show 命令驗證標籤已套用於節點集區。

    az aks show -g myResourceGroup -n myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    下列範例輸出顯示套用於節點集區的標記:

    [
      {
        "nodepoolName": "nodepool1",
        "tags": null
      },
      {
        "nodepoolName": "tagnodepool",
        "tags": {
          "abtest": "a",
          "costcenter": "5555"
        }
      }
    ]
    

更新現有的節點集區

重要

使用 az aks nodepool update 命令在節點集區上設定標籤會覆寫標籤集。 例如,如果您的節點集區具有標籤 abtest=acostcenter=5555,而且您搭配 appversion=0.0.2costcenter=4444 標籤使用 az aks nodepool update,則新的標籤清單會是 appversion=0.0.2costcenter=4444

  1. 使用 az aks nodepool update 命令,以 Azure 標籤更新節點集區。

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --tags appversion=0.0.2 costcenter=4444 \
        --no-wait
    
  2. 使用 az aks show 命令驗證標籤已套用於節點集區。

    az aks show -g myResourceGroup -n myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    下列範例輸出顯示套用於節點集區的標記:

    [
      {
        "nodepoolName": "nodepool1",
        "tags": null
      },
      {
        "nodepoolName": "tagnodepool",
        "tags": {
          "appversion": "0.0.2",
          "costcenter": "4444"
        }
      }
    ]
    

使用 Kube 新增標籤

重要

使用 Kube 在檔案、磁碟區和公用 IP 上設定標籤會更新標籤集。 例如,如果您的磁碟區具有標籤 dept=ITcostcenter=5555,而您使用 Kubernetes 來設定標籤 team=Betacostcenter=3333,則新的標籤清單會是 dept=ITteam=Betacostcenter=3333

您透過 Kube 對標籤所做的任何更新都會保留透過 Kube 所設定的值。 例如,如果您的磁碟區具有由 Kubernetes 設定的標籤 dept=ITcostcenter=5555,而您使用入口網站來設定標籤 team=Betacostcenter=3333,則新的標籤清單會是 dept=ITteam=Betacostcenter=5555。 若您之後透過 Kubernetes 移除磁碟區,則磁碟區會有標籤 team=Beta

您可以使用 Kube 資訊清單,將 Azure 標籤套用至公用 IP、磁碟區和檔案。

  • 若為公用 IP,請在註釋下使用 service.Beta.kubernetes.io/azure-pip-tags。 例如:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-pip-tags: costcenter=3333,team=beta
    spec:
      ...
    
  • 若為檔案和磁碟區,請在參數下使用標籤。 例如:

    ---
    apiVersion: storage.k8s.io/v1
    ...
    parameters:
      ...
      tags: costcenter=3333,team=beta
    ...
    

下一步

深入了解如何在 AKS 叢集中使用標籤