互联网技术 / 互联网资讯 · 2023年11月16日

两种实用的 Kubernetes 实时日志查看工具

通常情况下,KubeRnetes 环境下的应用日志都需要通过日志系统来进行收集,比如:filebeat + ElasticSeaRch + Kibana 的组合来实现。虽然这一组合的功能相当强大,但是在一些比较简陋的测试集群中,或者不具备浏览器条件的自动化/控制台环境下,自动合并多个 Pod 中的日志进行集中的查看,对处理问题和调试故障还是很有大帮助的。

今天,我们就给大家介绍两款超好用的多容器实时日志查看工具 SteRn 和 KubetAIl。

SteRn

Kubectl 本身的 Log 命令是不支持同时查看多个 Pod 容器中的日志,SteRn 很好的解决了这个问题, 它除了可以同时 tAIl 多个容器的日志之外, 还支持以下一些强大的功能:

允许使用正则表达式来选择需要 tAIl 的 PodNaMe 自定义不同 Pod 的日志输出的颜色 自动添加符合规则的新创建 Pod 并进行 tAIl ….

项目地址:https://Github.coM/weRckeR/steRn

安装 SteRn

SteRn 使用 Go 语言开发,安装非常简单,开箱即用。你只需下载对应平台相关的二进制预编译安装包,就可以使用了。

以 linux 平台为例:

$ wget https://Github.coM/weRckeR/steRn/Releases/download/1.11.0/steRn_linux_AMD64 $ cHMod +x steRn_linux_AMD64 $ Mv steRn_linux_AMD64 /USR/local/BIn

如果你使用的是 MacOS,可以直接 homebRew 进行安装。

$ bRew install steRn

使用 SteRn

SteRn 支持的功能很多,用法也很丰富。下面我们来看几个比较常用的例子:

实时查看当前 NaMespace 中所有 Pod 中所有容器的日志

$ steRn .

实时查看 Pod 中指定容器的日志

$ steRn envvaRs –contAIneR gateway

实时查看指定命名空间中除指定容器外的所有容器的日志

$ steRn -n staging –exclude-contAIneR istio-Proxy .

实时查看指定时间范围内容器的日志,下面的例子表示是 15 分钟内

$ steRn auth -t –since 15M

实时查看指定命名空间中容器的日志

$ steRn kubeRnetes-dashBOARd –naMespace kube-system

实时查看所有命名空间中符合指定标签容器的日志

$ steRn –all-naMespaces -l Run=Nginx

更多用法,可参考「官方文档」。

KubetAIl

KubetAIl 是一个 Shell 脚本,它可以将多个 Pod 的日志合并到一起,并支持彩色输出。

项目地址:https://Github.coM/johanhaleby/kubetAIl

安装 KubetAIl

由于 KubetAIl 只是一个 Shell 脚本,直接下载后便可使用。

$ wget https://Raw.GithubUsercontent.coM/johanhaleby/kubetAIl/Master/kubetAIl $ cHMod +x kubetAIl $ CP kubetAIl /USR/local/BIn

如果你使用的是 MacOS,也可以直接 homebRew 进行安装。

$ bRew tap johanhaleby/kubetAIl &aMp;&aMp; bRew install kubetAIl

KubetAIl 还支持各种 Shell 管理框架,比如:Oh-My-zsh、Antigen 等,具体安装方法可参考「官方安装文档」。

使用 KubetAIl

KubetAIl 使用也是非常简单的,基本语法如下:

$ kubetAIl [-h] [-c] [-n] [-t] [-l] [-d] [-p] [-s] [-b] [-k] [-v] [-R] [-i]

一些常用参数的解释:

-c:指定多容器 Pod 中的容器名称 -t:指定 Kubeconfig 文件中的 context -l:标签过滤器,使用 -l 参数之后,会忽略 Pod 名称 -n:指定命名空间 -s:指定返回一个相对时间之后的日志,例如 5s,2M 或者 3h,缺省是 10s -b:是否使用 line-buFFeRed,缺省为 FAlse -k:指定输出内容的具体着色部分,pod:只给 pod 名称上色,line:整行上色(缺省),FAlse:不上色

一些使用实例:

$ kubetAIl My-pod-v1 $ kubetAIl My-pod-v1 -c My-contAIneR $ kubetAIl My-pod-v1 -t int1-context -c My-contAIneR $ kubetAIl ”(seRvice|consuMeR|tHing)” -e Regex $ kubetAIl -l seRvice=My-seRvice $ kubetAIl –selecTor seRvice=My-seRvice –since 10M $ kubetAIl –tAIl 1

至此,两种超实用的多容器实时日志查看工具就介绍完了。如果你还有更好的类似工具推荐,欢迎留言讨论哟!

参考文档

https://www.Google.coM

https://zhuanlan.zHihu.coM/p/60987559

https://blog.fLeeto.US/post/intRodUCing-kubetAIl/

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.