显示运行kubernetes吊舱日志的单个命令
希望使用一个命令继续从特定pod传输日志。现在我要做什么显示运行kubernetes吊舱日志的单个命令,kubernetes,kubectl,Kubernetes,Kubectl,希望使用一个命令继续从特定pod传输日志。现在我要做什么 kubectl获取吊舱(列出所有跑步吊舱) 从列表中检查正在运行的pod,并复制pod名称 kubectl日志-f(从pod连续传输日志) 奖励点:列出以特定单词开头的pod,例如,kubectl get pods asset*。这将只显示名称以asset开头的pod您可以通过kubectl get pods获得所有结果,grep可以完成其余的工作 [root@k8s-m1 ~]# kubectl get pods | grep ht
(列出所有跑步吊舱)kubectl获取吊舱
- 从列表中检查正在运行的pod,并复制pod名称
(从pod连续传输日志)kubectl日志-f
奖励点:列出以特定单词开头的pod,例如,
kubectl get pods asset*
。这将只显示名称以asset开头的pod您可以通过kubectl get pods
获得所有结果,grep
可以完成其余的工作
[root@k8s-m1 ~]# kubectl get pods | grep httpd*-app
httpd-app-66cb7d499b-4nfl4 1/1 Running 0 6m39s
httpd-app-66cb7d499b-c2blq 1/1 Running 0 6m39s
httpd-app-66cb7d499b-dt4tr 1/1 Running 0 6m39s
您可以使用一些bash技巧来实现这一点: 例如: 获取kube系统名称空间中以名称模式核心开头的pod日志
kubectl logs --namespace=kube-system $(kubectl get pods --namespace=kube-system -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep core)
甚至很简单:
kubectl logs --namespace=kube-system $(kubectl get pods -o=name --all-namespaces | grep core)
但在生产中,您应该使用fluentbit将日志流式传输到ELK,然后在kibana UI中使用过滤器获取每个pod/部署/命名空间等的日志
终于找到了解决办法。这可能有点麻烦,但我基本上会使用
--field selector=status.phase=Running
,然后只使用-o=name
标志获取名称。
我最后的命令是
kubectl logs -f $(kubectl get pods --field-selector=status.phase=Running -o=name | awk '/asset/ {print $1;exit}')
链接:您可以使用来实现此目的。您可以使用:
kubectl logs -n <namespace> $(kubectl get pod -n <namespace> | awk '/<pattern>/{print $1}') -f
此特定命令不会区分具有不同状态的POD。我只想要有运行状态的吊舱。
kubectl logs -n kube-system $(kubectl get pod -n kube-system | awk '/kube-proxy*/{print $1}') -f