如何使用kubectl jsonpath命令列出失败Job及其所属命名空间
实现方案
完全可以通过jsonpath达成你要的输出效果,可用命令如下:
# 基础版本,输出制表符分隔的命名空间、Job名称,自带表头 kubectl get jobs --all-namespaces -o=jsonpath='{"NAMESPACE\tNAME\n"}{range .items[?(@.status.failed>=1)]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
如果需要和你示例中一致的整齐对齐效果,追加column -t做自动列对齐即可:
# 对齐优化版本,输出格式和你预期的完全匹配 kubectl get jobs --all-namespaces -o=jsonpath='{"NAMESPACE\tNAME\n"}{range .items[?(@.status.failed>=1)]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}' | column -t
说明
- 如果你需要仅筛选恰好失败1次的Job,将查询条件里的
@.status.failed>=1修改为你原来用的@.status.failed==1即可 - 命令逻辑说明:
- 开头的
{"NAMESPACE\tNAME\n"}是自定义输出表头 range .items[?(@.status.failed>=1)]会遍历所有符合失败条件的Job资源- 循环体内依次输出每个Job的所属命名空间、制表符分隔符、Job名称,最后追加换行符实现每行一条记录
- 开头的
内容的提问来源于stack exchange,提问作者user3441886
相关产品推荐
相关产品推荐

