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

Ali*_*MAR 37 kubernetes

我正在寻找列出所有豆荚名称的选项

怎么做没有awk(或削减).现在我正在使用此命令

kubectl get --no-headers=true pods -o name | awk -F "/" '{print $2}'
Run Code Online (Sandbox Code Playgroud)

Rob*_*ley 51

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

kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
Run Code Online (Sandbox Code Playgroud)

  • http://kubernetes.io/v1.1/docs/user-guide/kubectl/kubectl_get.html 描述了不同的输出类型并给出了使用模板的示例。模板语言本身在 https://golang.org/pkg/text/template/ 中进行了描述,您可以运行“kubectl describe -o yaml pod <NAME>”来查看可操作的字段。 (2认同)

jua*_*o85 32

我个人更喜欢这种方法,因为它只依赖于kubectl,不是很冗长,我们在输出中没有得到pod /前缀:

kubectl get pods --no-headers -o custom-columns=":metadata.name"
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到 SO。如果您解释为什么喜欢这种方法,您的回答对更多用户会更有用。 (2认同)

小智 30

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

kubectl get --no-headers=true pods -l app=external-dns -o custom-columns=:metadata.name
Run Code Online (Sandbox Code Playgroud)


kro*_*ine 20

获取pod的名称-o=name请参阅此cheatsheet了解更多信息.

kubectl get pods -o=name

示例输出:

pod/kube-xyz-53kg5
pod/kube-xyz-jh7d2
pod/kube-xyz-subt9
Run Code Online (Sandbox Code Playgroud)

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

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

示例输出:

kube-xyz-53kg5
kube-pqr-jh7d2
kube-abc-s2bt9
Run Code Online (Sandbox Code Playgroud)

要获取具有特定字符串的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'

  • 使用 awk 而不是 sed 可以使其处理任何内容(您忽略前 4 个字符,但是除了 pod 之外的其他资源,名称更长或更短怎么办?)。使用 awk :`kubectl get pods -o=name | awk -F "/" '{print $2}'` (3认同)
  • 实际上,您可以这样做:`kubectl get pods -o name`然后像这样使用输出`pod / mypod-xxxxx`:`kubectl describe pod / mypod-xxxxx` (2认同)

pon*_*lus 17

这是另一种方法:

kubectl get pods -o=name --field-selector=status.phase=Running
Run Code Online (Sandbox Code Playgroud)

--field-selector=status.phase=Running是必需的,因为问题提到了所有正在运行的pod 名称。如果问题中的all--all-namespaces适用于所有命名空间,则只需添加该选项。

请注意,当您想要一种快速方式从正在运行的 Pod 访问某些内容(例如日志)时,此命令非常方便:

kubectl logs -f $(kubectl get pods -o=name --field-selector=status.phase=Running)
Run Code Online (Sandbox Code Playgroud)


Zst*_*ack 10

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

kubectl get pods --field-selector=status.phase=Running --no-headers -o custom-columns=":metadata.name" 
Run Code Online (Sandbox Code Playgroud)

观看、寻找资源

您还可以使用-n <namespace name>指定命名空间。


Ama*_*dey 9

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

kubectl get pods -o=name --all-namespaces | grep kube-proxy
Run Code Online (Sandbox Code Playgroud)

结果是:

pod/kube-proxy-95rlj
pod/kube-proxy-bm77b
pod/kube-proxy-clc25
Run Code Online (Sandbox Code Playgroud)

  • OP 说他只是想摆脱领先的“pod/”部分...... (2认同)

Rad*_*iel 6

还有这个解决方案:

kubectl get pods -o jsonpath={..metadata.name}
Run Code Online (Sandbox Code Playgroud)