获取未运行的 Kubernetes pod 的数量

run*_*aul 0 kubernetes kubernetes-pod

我有这个命令来列出Kubernetes没有运行的pod:

sudo kubectl get pods -n my-name-space | grep -v Running
Run Code Online (Sandbox Code Playgroud)

是否有一个命令可以返回未运行的 Pod 计数?

Dav*_*aze 5

如果添加... | wc -l到该命令的末尾,它将打印该grep命令输出的行数。这可能包括标题行,但您可以将其隐藏。

kubectl get pods -n my-name-space --no-headers \
  | grep -v Running \
  | wc -l
Run Code Online (Sandbox Code Playgroud)

如果你有一个像jq可用的 JSON 处理工具,你可以获得更可靠的输出(grep如果Evictedpod 碰巧Running在其名称中包含字符串,则调用将得到错误的答案)。你应该能够做类似的事情(未经测试)

kubectl get pods -n my-namespace -o json \
  | jq '.items | map(select(.status.phase != "Running")) | length'
Run Code Online (Sandbox Code Playgroud)

如果你要做很多这样的事情,使用Kubernetes API编写一个非 shell 程序会更健壮;您通常可以使用 SDK 调用执行“获取 Pod”之类的操作,并获取可过滤的 Pod 对象列表。