列出 kubernetes 中每个命名空间的 pod

Ram*_*ros 5 kubernetes

我的集群中有几个命名空间,并且想要一个类似以下的日志:

NAMESPACE            NAME                                          PODS  
MY_NAMESPACE         my_ns6446f67599-25g7f                         10   
Run Code Online (Sandbox Code Playgroud)

Ped*_*aka 12

你也可以尝试一下这个内衬:

kubectl get pods --all-namespaces | awk '{print $1}' | sort | uniq -c | sort -k1 -n -r
Run Code Online (Sandbox Code Playgroud)

这将产生:

136 some-ns
133 kube-system
119 other-ns
Run Code Online (Sandbox Code Playgroud)

解释一下:

  • kubectl get pods --all-namespaces将在第一列中列出具有命名空间的所有 Pod。
  • awk { print $1 }将“过滤掉”第一列,即命名空间
  • sort将按字母顺序对命名空间的名称进行排序
  • uniq -c将计算每个名称空间出现的次数,并以计数作为第一列进行聚合(例如,136 some-ns表示some-ns出现 136 次)。
  • sort -k1 -n -r这个将从出现最多的命名空间(即拥有最多 Pod)到出现最少的命名空间进行排序。-k1意味着我正在使用第一列进行排序,-n我正在使用数字比较,并且-r我正在进行反向排序。


lka*_*mal 7

您可以使用--all-namespacesflag 来获取 pod。

kubectl get pods --all-namespaces
Run Code Online (Sandbox Code Playgroud)

从您的输出来看,您似乎正在尝试打印 s replicaset,因为输出中有一个 POD 计数列。

kubectl get replicaset --all-namespaces
Run Code Online (Sandbox Code Playgroud)

如果你想限制结果列,我们可以使用--0 custom-columns=如下参数。

$ kubectl get replicaset --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,PODS:.status.replicas     
NAMESPACE            NAME                                          PODS  
MY_NAMESPACE         my_ns6446f67599-25g7f                         10  
Run Code Online (Sandbox Code Playgroud)