kubernetes 列出所有 运行 pods 名称
kubernetes list all running pods name
我正在寻找列出所有 pods 姓名的选项
没有 awk(或 cut)怎么办。现在我正在使用这个命令
kubectl get --no-headers=true pods -o name | awk -F "/" '{print }'
您可以使用 kubectl 内置的 go 模板选项将输出格式化为仅显示每个 pod 的名称:
kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
您可以在输出选项中使用自定义列来获取名称和 --no-headers 选项
kubectl get --no-headers=true pods -l app=external-dns -o custom-columns=:metadata.name
jsonpath 替代
kubectl get po -o jsonpath="{range .items[*]}{@.metadata.name}{end}" -l app=nginx-ingress,component=controller
您可以使用 -o=name 只显示 pod 名称。例如,要列出代理 pods,您可以使用:
kubectl get pods -o=name --all-namespaces | grep kube-proxy
结果是:
pod/kube-proxy-95rlj
pod/kube-proxy-bm77b
pod/kube-proxy-clc25
使用 -o=name
获取 pods 的名称 请参阅此 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'
我个人更喜欢这种方法,因为它只依赖于 kubectl,不是很冗长,而且我们不会在输出中得到 pod/ 前缀:
kubectl get pods --no-headers -o custom-columns=":metadata.name"
kubectl get po --all-命名空间 | awk '{if ($4 != "Running") system ("kubectl -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'
获取命名空间中的所有运行pods
kubectl get pods --field-selector=status.phase=Running --no-headers -o custom-columns=":metadata.name"
来自 viewing, finding resources.
您还可以使用 -n <命名空间名称>.
指定命名空间
还有这个解决办法:
kubectl get pods -o jsonpath={..metadata.name}
如果您想提取特定 container
的 pod
名称,那么
一个简单的命令可以完成所有艰巨的工作
kubectl get pods --template '{{range .items}}{{.metadata.name}}{{end}}' --selector=app=<CONTAINER-NAME>
只需将 <CONTAINER-NAME>
替换为您的服务容器名称
这是另一种方法:
kubectl get pods -o=name --field-selector=status.phase=Running
--field-selector=status.phase=Running
是必需的,因为问题提到了所有 运行 pod 名称。如果问题中的 all 是针对所有命名空间的,只需添加 --all-namespaces
选项即可。
请注意,此命令非常方便,可以快速访问 运行 个 pod 上的内容,例如日志:
kubectl logs -f $(kubectl get pods -o=name --field-selector=status.phase=Running)
好吧,在我们的例子中,我们将 pods 保留在不同的命名空间中,这里是为了识别 pods 的特定 pod 或列表,我们 运行 按照命令-
方法一:
获取命名空间列表
kubectl get ns -A
获取一个命名空间内的所有 pods kubectl get pods -n <namespace>
方法二:
使用这个命令-
kubectl get pods --all-namespaces
我正在寻找列出所有 pods 姓名的选项
没有 awk(或 cut)怎么办。现在我正在使用这个命令
kubectl get --no-headers=true pods -o name | awk -F "/" '{print }'
您可以使用 kubectl 内置的 go 模板选项将输出格式化为仅显示每个 pod 的名称:
kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
您可以在输出选项中使用自定义列来获取名称和 --no-headers 选项
kubectl get --no-headers=true pods -l app=external-dns -o custom-columns=:metadata.name
jsonpath 替代
kubectl get po -o jsonpath="{range .items[*]}{@.metadata.name}{end}" -l app=nginx-ingress,component=controller
您可以使用 -o=name 只显示 pod 名称。例如,要列出代理 pods,您可以使用:
kubectl get pods -o=name --all-namespaces | grep kube-proxy
结果是:
pod/kube-proxy-95rlj
pod/kube-proxy-bm77b
pod/kube-proxy-clc25
使用 -o=name
获取 pods 的名称 请参阅此 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'
我个人更喜欢这种方法,因为它只依赖于 kubectl,不是很冗长,而且我们不会在输出中得到 pod/ 前缀:
kubectl get pods --no-headers -o custom-columns=":metadata.name"
kubectl get po --all-命名空间 | awk '{if ($4 != "Running") system ("kubectl -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'
获取命名空间中的所有运行pods
kubectl get pods --field-selector=status.phase=Running --no-headers -o custom-columns=":metadata.name"
来自 viewing, finding resources.
您还可以使用 -n <命名空间名称>.
指定命名空间还有这个解决办法:
kubectl get pods -o jsonpath={..metadata.name}
如果您想提取特定 container
的 pod
名称,那么
一个简单的命令可以完成所有艰巨的工作
kubectl get pods --template '{{range .items}}{{.metadata.name}}{{end}}' --selector=app=<CONTAINER-NAME>
只需将 <CONTAINER-NAME>
替换为您的服务容器名称
这是另一种方法:
kubectl get pods -o=name --field-selector=status.phase=Running
--field-selector=status.phase=Running
是必需的,因为问题提到了所有 运行 pod 名称。如果问题中的 all 是针对所有命名空间的,只需添加 --all-namespaces
选项即可。
请注意,此命令非常方便,可以快速访问 运行 个 pod 上的内容,例如日志:
kubectl logs -f $(kubectl get pods -o=name --field-selector=status.phase=Running)
好吧,在我们的例子中,我们将 pods 保留在不同的命名空间中,这里是为了识别 pods 的特定 pod 或列表,我们 运行 按照命令-
方法一:
获取命名空间列表
kubectl get ns -A
获取一个命名空间内的所有 pods
kubectl get pods -n <namespace>
方法二:
使用这个命令-
kubectl get pods --all-namespaces