我正在寻找列出所有广告名称
的选项没有awk(或剪切)怎么做。现在我正在使用这个命令
kubectl get --no-headers=true pods -o name | awk -F "/" '{print $2}'
答案 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
答案 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)
答案 9 :(得分:0)
如果您想提取特定的 container
的 pod
名称,则
一个简单的命令可以完成所有艰苦的工作
kubectl get pods --template '{{range .items}}{{.metadata.name}}{{end}}' --selector=app=<CONTAINER-NAME>
只需将 <CONTAINER-NAME>
替换为您的服务容器名称