我正在编写一个bash脚本,需要使用kubectl命令根据特定标签获取集群中的所有名称空间。
kubectl get ns -l=app=backend
当我运行上面的命令时,我得到:no resources found
no resources found
gojuced71#
只有在ns中的pod有那个标签.想知道是否有一种方法我可以操纵kubectl输出只有ns的pod有那个标签您可以合并几个命令来执行以下操作:
kubectl get pods -A -l app=backend -o json | jq -r '.items[]|.metadata.namespace' | sort -u
这将获得所有名称空间中与标签选择器匹配的所有pod的列表;使用jq从每个pod提取命名空间名称,然后使用sort -u生成唯一列表。实际上,不用jq,也可以使用go-template输出格式来实现这一点,但对我来说,这意味着要访问go模板文档:
jq
sort -u
go-template
kubectl get pods -A -l app=backend \ -o go-template='{{range .items}}{{.metadata.namespace}}{{"\n"}}{{end}}' | sort -u
1条答案
按热度按时间gojuced71#
只有在ns中的pod有那个标签.想知道是否有一种方法我可以操纵kubectl输出只有ns的pod有那个标签
您可以合并几个命令来执行以下操作:
这将获得所有名称空间中与标签选择器匹配的所有pod的列表;使用
jq
从每个pod提取命名空间名称,然后使用sort -u
生成唯一列表。实际上,不用
jq
,也可以使用go-template
输出格式来实现这一点,但对我来说,这意味着要访问go模板文档: