在 Azure Kubernetes 服务 (AKS) 群集中使用标签
如果你有多个节点池,可能希望在创建节点池期间添加标签。 Kubernetes 标签处理节点的计划规则。 可以随时将标签添加到节点池,并将其应用于该节点池的所有节点。
在本操作指南中,你会了解如何在 Azure Kubernetes 服务 (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
使用
kubectl get nodes --show-labels
命令验证是否已设置标签。kubectl get nodes --show-labels | grep -e "costcenter=9000" -e "dept=IT"
创建带标签的节点池
使用
az aks nodepool add
命令创建具有标签的节点池, 并为--labels
参数指定--name
参数的名称和标签。 标签必须是键/值对,并采用有效的语法以下示例命令创建名为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 保留的标签。 “虚拟节点用途”指定这些标签是否可以用作虚拟节点上的受支持系统功能。 这些系统功能更改的一些属性在虚拟节点上不可用,因为它们需要修改主机。
Label | Value | 示例/选项 | 虚拟节点用途 |
---|---|---|---|
kubernetes.azure.com/agentpool | <代理池名称> | nodepool1 | 相同 |
kubernetes.io/arch | amd64 | runtime.GOARCH | 不适用 |
kubernetes.io/os | <OS 类型> | Linux/Windows | 相同 |
node.kubernetes.io/instance-type | <VM 大小> | Standard_NC6s_v3 | 虚拟 |
topology.kubernetes.io/region | <Azure 区域> | chinaeast2 | 相同 |
topology.kubernetes.io/zone | <Azure 区域> | 0 | 相同 |
kubernetes.azure.com/cluster | <MC_RgName> | MC_aks_myAKSCluster_chinaeast2 | 相同 |
kubernetes.azure.com/mode | 模式<> | 用户或系统 | User |
kubernetes.azure.com/role | 代理 | Agent | 相同 |
kubernetes.azure.com/scalesetpriority | <VMSS 优先级> | 现成 VM 或常规 VM | 不适用 |
kubernetes.io/hostname | <hostname> | aks-nodepool-00000000-vmss000000 | 相同 |
kubernetes.azure.com/storageprofile | <OS 磁盘存储配置文件> | 托管 | 不适用 |
kubernetes.azure.com/storagetier | <OS 磁盘存储层> | Premium_LRS | 不适用 |
kubernetes.azure.com/instance-sku | <SKU 系列> | Standard_N | 虚拟 |
kubernetes.azure.com/node-image-version | <VHD 版本> | AKSUbuntu-1804-2020.03.05 | 虚拟节点版本 |
kubernetes.azure.com/subnet | <节点池子网名称> | subnetName | 虚拟节点子网名称 |
kubernetes.azure.com/vnet | <节点池 vnet 名称> | vnetName | 虚拟节点虚拟网络 |
kubernetes.azure.com/ppg | <节点池 ppg 名称> | ppgName | 不适用 |
kubernetes.azure.com/encrypted-set | <节点池已加密集名称> | encrypted-set-name | 不适用 |
kubernetes.azure.com/accelerator | <加速器> | nvidia | 不适用 |
kubernetes.azure.com/fips_enabled | <是否启用了 fips?> | 是 | 不适用 |
kubernetes.azure.com/os-sku | <os/sku> | 创建或更新 OS SKU | Linux |
- “相同”是指标签的预期值在标准节点池和虚拟节点池中没有差别。 由于虚拟节点 pod 不公开任何基础虚拟机 (VM),因此 VM SKU 值已替换为 SKU“虚拟”。
- “虚拟节点版本”是指虚拟 Kubelet-ACI 连接器的当前版本。
- “虚拟节点子网名称”是虚拟节点 pod 从中部署到 Azure 容器实例 (ACI) 的子网的名称。
- “虚拟节点虚拟网络”是虚拟网络的名称,其中包含虚拟节点 pod 从中部署到 ACI 的子网。
保留的前缀
以下前缀是 AKS 保留的前缀,不能用于任何节点:
- kubernetes.azure.com/
- kubernetes.io/
有关预留前缀的详细信息,请参阅Kubernetes 的已知标签、注释和排斥。
已弃用的标签
随着 Kubernetes v1.24 的发布,已计划弃用以下标签。 应将任何标签引用更改为引用建议的替代标签。
Label | 建议的替代标签 | 维护者 |
---|---|---|
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 服务 |
kubernetes.io/role* | kubernetes.azure.com/role=agent | Azure Kubernetes 服务 |
Agentpool* | kubernetes.azure.com/agentpool | Azure Kubernetes 服务 |
Storageprofile* | kubernetes.azure.com/storageprofile | Azure Kubernetes 服务 |
Storagetier* | kubernetes.azure.com/storagetier | Azure Kubernetes 服务 |
Accelerator* | kubernetes.azure.com/accelerator | Azure Kubernetes 服务 |
*最近已弃用。 有关详细信息,请参阅发行说明。
后续步骤
在Kubernetes 标签文档中详细了解 Kubernetes 标签。