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

如何通过go-template过滤kubectl输出中终止状态的Pod

仅用Go-template过滤终止状态Pod的实现方法

Kubernetes里处于Terminating(终止中)状态的Pod,.metadata.deletionTimestamp字段一定为非空值,只要在遍历Pod列表时增加一层空值判断,跳过该字段非空的实例,就能实现过滤效果,无需依赖grep等外部管道命令。

修改后可直接使用的命令

kubectl get pods -o go-template --template '{{ range .items }}{{ if not .metadata.deletionTimestamp }}{{"\n"}}{{ .metadata.name }}{{" - "}}{{ range .spec.containers }}{{ .image }}{{" "}}{{ end }}{{ end }}{{ end }}'

逻辑说明

  • 新增的{{ if not .metadata.deletionTimestamp }}判断块,会自动排除所有已经收到终止信号、进入销毁流程的Pod,滚动发布的短时间窗口内,输出结果只会包含正常存活的Pod,不会混入正在终止的不同版本实例。
  • 如果需要更严格的过滤,只输出正常运行的Pod,可以把判断条件替换为多条件联合判断:
    {{ if and (not .metadata.deletionTimestamp) (eq .status.phase "Running") }}
    
    该条件会同时排除终止中、Pending、Failed、Succeeded等非运行状态的Pod,结果更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:18:20