显示运行kubernetes pod的日志的单个命令



希望有一个命令来继续从特定pod流式传输日志。目前我必须做

  • kubectl get pods(列出所有正在运行的pod(
  • 从列表中检查正在运行的pod,并复制pod名称
  • kubectl logs <pod name> -f(来自pod的连续日志流(

奖励点数:列出以某个单词(如kubectl get pods asset*(开头的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}')

链接:字段选择器

您可以使用awk来实现这一点。您可以使用:

kubectl logs -n <namespace> $(kubectl get pod -n <namespace> |  awk '/<pattern>/{print $1}') -f

在这里,您可以在<pattern>字段中指定regex。print $1只打印匹配对象的第一列。在我们的例子中,它是pod名称。

例如:

kubectl logs -n kube-system $(kubectl get pod -n kube-system |  awk '/kube-proxy*/{print $1}') -f

您可以通过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系统命名空间中的名称模式core开头的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/部署/命名空间等的日志。

https://github.com/fluent/fluent-bit-kubernetes-logging

只需在一行以下运行";显示来自运行kubernetes pod的日志的单个命令";

kubectl get pods -n default|grep Running|awk '{print $1}'|while read pods;do echo "Pod name is $pods" ;kubectl logs $pods;echo;done

创建一个名为"kubectl尾部";

#!/bin/bash
[ -z "$1" ] && { echo "Try kubectl tail RESOURCE_NAME"; exit 1; }
# this wil find only one pod in my case
# you can modify it if you have more than one with the same name 
pod=$(kubectl get pods --field-selector=status.phase=Running -o=name|awk -v res="$1" '$1 ~ res && !/debug$/')

[ -z "$pod" ] && { echo "No pod found!"; exit 0; }
kubectl logs -f "$pod"

将脚本放在PATH中,并使其可执行

检查

$ kubectl plugin list
The following compatible plugins are available:
/home/ufopilot/bin/kubectl-tail

现在你可以使用它

kubectl tail asset

相关内容

  • 没有找到相关文章

最新更新