容器查看日志工具-stern
1. 安装 stern
Linux
wget https://github.com/stern/stern/releases/download/v1.33.0/stern_1.33.0_linux_amd64.tar.gz
tar -xf stern_1.33.0_linux_amd64.tar.gz
chmod +x stern
mv stern /usr/local/bin/
2. 基本用法
语法:
stern [pod-query] [flags]
pod-query
可以是 Pod 名字的前缀,也可以是 正则表达式。-n <namespace>
指定命名空间(默认是default
)。
例子:
# 查看所有名字包含 "nginx" 的 Pod 日志
stern nginx# 查看指定命名空间里的 Pod 日志
stern -n mynamespace nginx# 查看正则匹配到的 Pod
stern '^nginx-[0-9]+'
3. 常用选项
-c <container>
只看指定容器的日志(Pod 里有多个容器时很有用)
stern -n myns myapp -c sidecar
-t
显示时间戳
stern myapp -t
--since 1h
只看最近 1 小时的日志
stern myapp --since 1h
--tail 100
只拉取最近 100 行日志
stern myapp --tail 100
--context <kubeconfig-context>
跨集群看日志
stern myapp --context prod-cluster
4. 实际场景例子
查看所有ingress-nginx-controller的日志
#./stern -n ingress-nginx "ingress-nginx-controller*" + ingress-nginx-controller-f9dcf785-zjmcm › controller + ingress-nginx-controller-f9dcf785-wwlzp › controller + ingress-nginx-controller-f9dcf785-xqtkp › controller + ingress-nginx-controller-f9dcf785-72cd4 › controller ingress-nginx-controller-f9dcf785-wwlzp controller 10.1.6.8 - - [16/Sep/2025:17:25:35 +0000] "POST /inference/start HTTP/1.1" 200 215 "-" "infer-gateway/1.0" 283 0.063 [prod-attend-risk-infer] [] 10.69.11.233:8081 215 0.063 500 ddd42efb472c7aa2d5d5ca45496b9ef6
只看某个容器(比如 istio-proxy)
stern -n myns myapp -c istio-proxy
过滤日志内容
stern -n myns myapp | grep ERROR
对比 kubectl logs
的好处:
可以一次性看多个 Pod(
kubectl logs
只能一个一个看)。自动高亮 Pod 名称,方便区分日志来源。
支持正则、时间、tail、容器选择。