Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
如果你有多个节点池,可能希望在创建节点池期间添加标签。 Kubernetes 标签处理节点的计划规则。 可以随时将标签添加到节点池,并将其应用于该节点池的所有节点。
在本操作指南中,你会了解如何在 Azure Kubernetes 服务 (AKS) 群集中使用标签。
先决条件
需要安装并配置 Azure CLI 2.2.0 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI。
创建带标签的 AKS 群集
可以使用节点标签创建 AKS 群集,为工作负荷计划设置键/值元数据。
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
结果:
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx",
"location": "chinanorth3",
"managedBy": null,
"name": "myResourceGroupxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
创建指定节点标签的 AKS 群集(例如,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
结果:
{
"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.cx.prod.service.azk8s.cn",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSClusterxxx",
"location": "chinanorth3",
"name": "myAKSClusterxxx",
"resourceGroup": "myResourceGroupxxx"
}
验证是否已设置标签:
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"
创建带标签的节点池
可以创建附有标签的其他节点池,以满足特定的调度需求。
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 \
下面是 az aks nodepool list 命令的示例结果,其中显示 labelnp 节点池正在 创建 具有指定 nodeLabels 的节点:
az aks nodepool list --resource-group $RESOURCE_GROUP --cluster-name $AKS_CLUSTER_NAME
结果:
[
{
"count": 2,
"name": "nodepool1",
"nodeLabels": {
"costcenter": "9000",
"dept": "IT"
}
},
{
"count": 1,
"name": "labelnp",
"nodeLabels": {
"costcenter": "5000",
"dept": "HR"
},
"provisioningState": "Creating"
}
]
验证是否已设置标签:
kubectl get nodes --show-labels | grep -e "costcenter=5000" -e "dept=HR"
更新现有节点池上的标签
可以更新现有节点池上的标签。 请注意,更新标签将覆盖旧标签。
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $AKS_CLUSTER_NAME \
--name $NODEPOOL_NAME \
--labels dept=ACCT costcenter=6000 \
验证是否已设置新标签:
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 |
<运行时.GOARCH> | amd64 |
无 |
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/managedby |
aks |
aks |
无 |
kubernetes.azure.com/mode |
<模式> |
User 或 system |
用户 |
kubernetes.azure.com/role |
代理 | Agent |
相同 |
kubernetes.azure.com/scalesetpriority |
<VMSS 优先级> |
spot 或 regular |
无 |
kubernetes.io/hostname |
<主机名> | aks-nodepool-00000000-vmss000000 |
相同 |
kubernetes.azure.com/storageprofile |
<OS 磁盘存储配置文件> | Managed |
无 |
kubernetes.azure.com/storagetier |
<OS 磁盘存储层> | Premium_LRS |
无 |
kubernetes.azure.com/node-image-version |
<VHD 版本> | AKSUbuntu-1804-2020.03.05 |
虚拟节点版本 |
kubernetes.azure.com/network-name |
<节点池 vnet 名称> | vnetName |
虚拟节点虚拟网络 |
kubernetes.azure.com/network-subnet |
<节点池子网名称> | subnetName |
虚拟节点子网名称 |
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?> | true |
无 |
kubernetes.azure.com/os-sku |
<os/sku> | 创建或更新 OS SKU | Linux |
kubernetes.azure.com/os-sku-effective |
<选择的 OS SKU> |
Ubuntu2204 或类似版本(绝不是 Ubuntu,始终会指定版本) |
无 |
kubernetes.azure.com/os-sku-requested |
<用户请求的 OS SKU> |
Ubuntu、 Ubuntu2204或类似(与 API 中请求的 SKU 完全匹配) |
无 |
kubernetes.azure.com/sku-cpu |
<处理器数量> | 4 |
相同 |
kubernetes.azure.com/sku-memory |
<内存(以 GB 为单位)> | 16 |
相同 |
kubernetes.azure.com/nodepool-type |
<节点池类型> | VirtualMachineScaleSets |
无 |
- “相同”是指标签的预期值在标准节点池和虚拟节点池中没有差别。 由于虚拟节点 pod 不公开任何基础虚拟机 (VM),因此 VM SKU 值已替换为 SKU“虚拟”。
- 虚拟节点版本指的是虚拟 Kubelet-ACI 连接器的当前版本。
- “虚拟节点子网名称”是虚拟节点 pod 从中部署到 Azure 容器实例 (ACI) 的子网的名称。
- 虚拟节点虚拟网络 是虚拟网络的名称,包含了虚拟节点 pod 在其中通过 ACI 部署的子网。
保留的前缀
以下前缀是 AKS 保留的前缀,不能用于任何节点:
- kubernetes.azure.com/
- kubernetes.io/
有关预留前缀的详细信息,请参阅 Kubernetes 的已知标签、注释和排斥。
已弃用的标签
随着 Kubernetes v1.24 的发布,已计划弃用以下标签。 应将任何标签引用更改为引用建议的替代标签。
| 标签 | 建议的替代品 | Maintainer |
|---|---|---|
| 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 标签。