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

如何查询Kubernetes Deployment中同时为AVAILABLE和UP-TO-DATE的Pod数量

统计Deployment同时满足AVAILABLE和UP-TO-DATE条件的Pod数量的方法

方法1:标签筛选统计

Kubernetes会为每个版本的ReplicaSet生成唯一的pod-template-hash标签,属于最新版本的Pod会携带该标签,对应Deployment的UP-TO-DATE计数;处于就绪状态的Pod对应Deployment的AVAILABLE计数,结合两个条件即可统计符合要求的Pod数量:

  1. 获取目标Deployment最新版本的哈希值:
# 替换为实际Deployment名称、命名空间
DEPLOY_NAME="web-deployment"
NS="default"
NEW_RS_HASH=$(kubectl get rs -n $NS -l <你的Deployment匹配标签> --sort-by=.metadata.creationTimestamp -o jsonpath='{.items[-1].metadata.labels.pod-template-hash}')

注:<你的Deployment匹配标签>替换为Deployment的spec.selector.matchLabels中配置的业务标签,例如app=web

  1. 统计同时符合最新版本、就绪状态的Pod数量:
READY_NEW_COUNT=$(kubectl get pods -n $NS -l pod-template-hash=$NEW_RS_HASH -o jsonpath='{range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}{end}' | grep -c "True")
echo $READY_NEW_COUNT

方法2:自定义列直观查看所有Pod状态

如果需要逐个确认Pod的状态,可以直接用自定义输出列展示所有相关Pod的属性:

kubectl get pods -n $NS -l <你的Deployment匹配标签> -o custom-columns=POD名称:.metadata.name,是否就绪:.status.conditions[?(@.type=="Ready")].status,版本哈希:.metadata.labels.pod-template-hash

输出中是否就绪为True且版本哈希和最新RS哈希一致的Pod,就是同时满足两个条件的实例。

快速校验方式

如果不需要具体数量,只需确认是否所有最新版本Pod都已就绪,可直接执行滚动发布状态校验命令:

kubectl rollout status deployment/$DEPLOY_NAME -n $NS

若返回deployment "$DEPLOY_NAME" successfully rolled out说明所有UP-TO-DATE的Pod都可用,否则说明存在发布失败、新旧版本Pod并存的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:36:04