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

如何通过kubectl按命名空间统计集群Pod数量并排除指定命名空间

用kubectl统计Kubernetes各命名空间Pod数量并排除指定命名空间

完全可以通过kubectl结合常见文本处理工具实现需求,以下是几种实用的命令方案:

基础统计所有命名空间的Pod数量

这条命令会输出每个命名空间及其对应的Pod总数:

kubectl get pods --all-namespaces | awk 'NR>1 {print $1}' | sort | uniq -c
  • --all-namespaces:获取集群中所有命名空间的Pod
  • awk 'NR>1 {print $1}':跳过表头,提取每行的第一列(即命名空间名称)
  • sort | uniq -c:对命名空间排序后,统计每个命名空间出现的次数(对应Pod数量)

排除特定命名空间的统计

如果需要排除如kube-system、default这类命名空间,可通过以下方式实现:

方式一:用grep反向过滤

kubectl get pods --all-namespaces | awk 'NR>1 {print $1}' | grep -vE 'kube-system|default' | sort | uniq -c
  • grep -vE:反向匹配,排除符合正则表达式的内容;多个命名空间用|分隔

方式二:直接在awk中过滤

kubectl get pods --all-namespaces | awk 'NR>1 && $1 !~ /kube-system|default/ {print $1}' | sort | uniq -c
  • 在awk中直接添加判断条件,跳过指定命名空间后再输出统计

方式三:用kubectl jsonpath提取命名空间(更精准)

如果想直接通过kubectl的输出格式提取命名空间,可使用jsonpath:

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.metadata.namespace}{"\n"}{end}' | grep -vE 'kube-system|default' | sort | uniq -c

排除大量命名空间的场景

如果要排除的命名空间数量较多,可以将它们写入一个文本文件(比如exclude-namespaces.txt,每行一个命名空间),然后用以下命令过滤:

kubectl get pods --all-namespaces | awk 'NR>1 {print $1}' | grep -vFf exclude-namespaces.txt | sort | uniq -c
  • -F:按固定字符串匹配,避免正则表达式冲突
  • -f:从指定文件中读取需要排除的命名空间列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:42:02