在 Kubernetes 环境中,应用日志通常需要通过日志系统进行收集,例如使用 filebeat、ElasticSearch 和 Kibana 的组合。尽管这种组合功能强大,但在一些简单的测试集群或没有浏览器条件的自动化环境中,将多个 Pod 的日志集中查看对于问题处理和故障调试非常有帮助。
今天,我们将介绍两款非常实用的多容器实时日志查看工具:SteRn 和 KubetAIl。
SteRn
Kubectl 的 Log 命令不支持同时查看多个 Pod 的日志,而 SteRn 解决了这一问题。它不仅能够同时跟踪多个容器的日志,还提供了以下强大功能:
- 支持使用正则表达式选择需要跟踪的 Pod 名称
- 允许自定义不同 Pod 的日志输出颜色
- 自动添加符合规则的新创建 Pod 并进行日志跟踪
项目地址:GitHub – 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 功能丰富,使用灵活。以下是一些常见用法示例:
实时查看当前命名空间中所有 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 的日志合并并支持彩色输出。
项目地址:GitHub – KubetAIl
安装 KubetAIl
由于 KubetAIl 只是一个 Shell 脚本,下载后即可使用:
$ wget https://Raw.GithubUsercontent.coM/johanhaleby/kubetAIl/Master/kubetAIl
$ chmod +x kubetAIl
$ cp kubetAIl /usr/local/binMacOS 用户也可以通过 Homebrew 安装:
$ brew tap johanhaleby/kubetAIl && brew install kubetAIlKubetAIl 还支持多种 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 文件中的上下文
- -l:标签过滤器,使用 -l 参数后,会忽略 Pod 名称
- -n:指定命名空间
- -s:指定返回相对时间后的日志,例如 5s、2M 或 3h,默认是 10s
- -b:是否使用行缓冲,默认值为 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/
[[[IMG_1]]]
[[[IMG_2]]]
