You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用kubectl检查AWS EKS集群中应用容器/Pod的AZ分布情况?

检查Pod的可用区分布

以下是几个实用的kubectl命令,可以帮你快速确认AWS EKS集群中应用Pod的可用区(AZ)分布情况:

1. 查看Pod所在节点及基础信息

先获取目标应用的Pod列表,同时显示它们绑定的节点:

kubectl get pods -n <你的命名空间> -l <应用标签> -o wide

比如你的应用在prod命名空间,标签是app=order-service,命令替换后为:

kubectl get pods -n prod -l app=order-service -o wide

输出的NODE列会显示Pod所在节点,EKS节点名称通常自带AZ标识(比如ip-10-0-2-3.us-west-2b.compute.internal中的us-west-2b),但这种方式不够严谨,建议用下面的方法直接读取节点的AZ标签。

2. 一次性输出Pod、节点及对应AZ

用这条命令可以直接关联Pod和其所在的可用区:

kubectl get pods -n <你的命名空间> -l <应用标签> -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.nodeName}{"\n"}{end}' | while read pod node; do
  echo -e "$pod\t$node\t$(kubectl get node "$node" -o jsonpath='{.metadata.labels.topology\.kubernetes\.io/zone}')"
done

AWS EKS会默认给节点添加topology.kubernetes.io/zone标签,值就是对应的可用区(比如us-east-1a),这条命令会遍历每个Pod,查询节点标签后输出Pod名 节点名 可用区的格式,清晰展示每个Pod的分布位置。

3. 汇总统计各AZ的Pod数量

如果只想快速确认分布情况,统计每个AZ下的Pod数量,用这条命令:

kubectl get pods -n <你的命名空间> -l <应用标签> -o jsonpath='{range .items[*]}{.spec.nodeName}{"\n"}{end}' | xargs -I {} kubectl get node {} -o jsonpath='{.metadata.labels.topology\.kubernetes\.io/zone}{"\n"}' | sort | uniq -c

输出结果类似:

4 us-east-1a
      3 us-east-1c

如果结果只有一行,说明所有Pod都运行在同一个可用区;多行则表示Pod分散在不同AZ中。


内容的提问来源于stack exchange,提问作者ca9163d9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:35:24