如何从AKS集群的节点中正确获取nodepool名称
获取AKS节点对应NodePool名称的正确方法
核心思路
AKS会为每个节点打上专属标签关联对应的NodePool,优先通过节点标签获取,比从节点名称提取更可靠。
具体操作方法
- 查看单个节点的NodePool标签
执行命令直接查看目标节点的标签,找到agentpool或kubernetes.azure.com/agentpool标签值:
kubectl get node aks-customName-234234234-vmss00011 --show-labels
输出中类似agentpool=customName的字段值就是该节点所属的NodePool名称。
如果用kubectl describe命令,在输出的Labels区块里也能找到这个标签:
Labels: agentpool=customName
kubernetes.azure.com/agentpool=customName
...
- 批量列出所有节点与NodePool对应关系
用自定义列格式直接输出所有节点及其所属NodePool:
kubectl get nodes -o custom-columns=NAME:.metadata.name,NODEPOOL:.metadata.labels.agentpool
若上述标签不存在,改用完整命名空间的标签:
kubectl get nodes -o custom-columns=NAME:.metadata.name,NODEPOOL:.metadata.labels.'kubernetes\.azure\.com/agentpool'
- 按NodePool分组节点
要将节点按所属NodePool分组,可通过以下方式实现:
- 简单分组排序:
kubectl get nodes -o=custom-columns=NODEPOOL:.metadata.labels.agentpool,NAME:.metadata.name | sort
- 用
jq生成结构化分组结果:
kubectl get nodes -o json | jq '.items | group_by(.metadata.labels.agentpool) | map({nodepool: .[0].metadata.labels.agentpool, nodes: [.[].metadata.name]})'
注意事项
之前通过节点名称提取或错误属性获取结果不准确,是因为节点名称里的前缀虽然通常对应NodePool名称,但标签是AKS官方维护的关联标识,在NodePool名称含特殊字符或有修改场景下更可靠。
内容的提问来源于stack exchange,提问作者Abhinavece
相关产品推荐
相关产品推荐

