kubernetes列出所有正在运行的pods名称

时间:2016-03-04 13:57:32

标签: kubernetes

我正在寻找列出所有广告名称

的选项

没有awk(或剪切)怎么做。现在我正在使用这个命令

kubectl get --no-headers=true pods -o name | awk -F "/" '{print $2}'

10 个答案:

答案 0 :(得分:31)

您可以使用kubectl中内置的go模板选项格式化输出,只显示每个pod的名称:

kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'

答案 1 :(得分:23)

您可以在输出选项中使用自定义列来获取名称和--no-headers选项

kubectl get --no-headers=true pods -l app=external-dns -o custom-columns=:metadata.name

答案 2 :(得分:16)

我个人更喜欢这种方法,因为它仅依赖kubectl,不是很冗长,并且我们在输出中未获得pod /前缀:

kubectl get pods --no-headers -o custom-columns=":metadata.name"

答案 3 :(得分:11)

使用-o=name获取广告连播的名称。有关更多信息,请参考此cheatsheet

kubectl get pods -o=name

示例输出:

pod/kube-xyz-53kg5
pod/kube-xyz-jh7d2
pod/kube-xyz-subt9

要删除结尾的pod/,可以使用标准bash sed命令

kubectl get pods -o=name | sed "s/^.\{4\}//"

示例输出:

kube-xyz-53kg5
kube-pqr-jh7d2
kube-abc-s2bt9

要获取具有特定字符串的podname,请使用标准linux grep命令

kubectl get pods -o=name | grep kube-pqr | sed "s/^.\{4\}//"

示例输出:

kube-pqr-jh7d2

使用此名称,您可以执行操作,例如添加别名以使Shell进入正在运行的容器:

alias bashkubepqr='kubectl exec -it $(kubectl get pods -o=name | grep kube-pqr | sed "s/^.\{4\}//") bash'

答案 4 :(得分:9)

您可以使用-o=name仅显示广告连播名称。例如,要列出代理窗格,您可以使用:

kubectl get pods -o=name --all-namespaces | grep kube-proxy

结果是:

pod/kube-proxy-95rlj
pod/kube-proxy-bm77b
pod/kube-proxy-clc25

答案 5 :(得分:3)

jsonpath替代

kubectl get po -o jsonpath="{range .items[*]}{@.metadata.name}{end}" -l app=nginx-ingress,component=controller

另见: more examples of kubectl output options

答案 6 :(得分:2)

还有此解决方案:

kubectl get pods -o jsonpath={..metadata.name}

答案 7 :(得分:1)

kubectl get po --all命名空间| awk'{if($ 4!=“ Running”)系统(“ kubectl -n” $ 1“删除容器” $ 2“ --grace-period = 0”“ --force”)}'

答案 8 :(得分:0)

获取名称空间中所有正在运行的Pod

Sequence

来自viewing, finding resources

您还可以使用 -n 指定名称空间。

答案 9 :(得分:0)

如果您想提取特定的 containerpod 名称,则 一个简单的命令可以完成所有艰苦的工作

kubectl get pods --template '{{range .items}}{{.metadata.name}}{{end}}' --selector=app=<CONTAINER-NAME>

只需将 <CONTAINER-NAME> 替换为您的服务容器名称