在 Azure Kubernetes Service (AKS) 叢集中使用標籤
如果您有多個節點集區,建議您在節點集區建立期間新增標籤。 Kubernetes 標籤處理節點的排程規則。 您可以隨時將標籤新增至節點集區,並將其套用至節點集區中的所有節點。
在本操作指南中,了解如何在 Azure Kubernetes Service (AKS) 叢集中使用標籤。
必要條件
您需要安裝和設定 Azure CLI 2.2.0 版或更新版本。 執行 az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。
搭配標籤建立 AKS 叢集
使用
az aks create
命令建立具有標籤的 AKS 叢集,並指定--node-labels
參數來設定標籤。 標籤必須是索引鍵/值組,並具備有效語法。az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 2 \ --nodepool-labels dept=IT costcenter=9000 \ --generate-ssh-keys
使用
kubectl get nodes --show-labels
命令確認已設定標籤。kubectl get nodes --show-labels | grep -e "costcenter=9000" -e "dept=IT"
搭配標籤建立節點集區
使用
az aks nodepool add
命令建立具有標籤的節點集區,並指定--name
參數的名稱和--labels
參數的標籤。 標籤必須是機碼/值組,並具備有效語法下列範例命令會建立名為 labelnp 的節點集區,其具有 dept=HR 和 costcenter=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" }, ... }, ... ]
使用
kubectl get nodes --show-labels
命令確認已設定標籤。kubectl get nodes --show-labels | grep -e "costcenter=5000" -e "dept=HR"
更新現有節點集區上的標籤
使用
az aks nodepool update
命令更新現有節點集區上的標籤。 更新現有節點集區上的標籤將會以新標籤覆寫舊標籤。 標籤必須是索引鍵/值組,並具備有效語法。az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name labelnp \ --labels dept=ACCT costcenter=6000 \ --no-wait
使用
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 標籤。