kubectl系列(八)-kubectl logs命令

1. 基础用法

查看 Pod 的日志
kubectl logs <pod-name> -n <namespace>
查看 Pod 中指定容器的日志
kubectl logs <pod-name> -c <container-name> -n <namespace>

2. 核心参数详解

参数说明
-f / --follow实时跟踪日志输出(类似 tail -f
--tail=N仅显示最后 N 行日志(默认全部显示)
--since=5m显示最近 5 分钟内的日志(支持单位:s/m/h)
--since-time=2023-10-01T12:00:00Z显示指定时间戳之后的日志(ISO 8601 格式)
--timestamps在日志中显示时间戳
-p / --previous查看已终止容器的日志(如容器崩溃重启前的日志)
-c / --container指定 Pod 中的容器名称(多容器 Pod 必选)
--all-containers查看 Pod 中所有容器的日志(适用于多容器 Pod)
--prefix在日志行前添加 Pod/容器名称前缀(多容器或多 Pod 时清晰区分)

3. 常见案例

(1) 实时跟踪容器日志
# kubectl  logs -f $POD_NAME -n $NAMESPACE
(2) 查看异常退出的容器日志
# kubectl  logs  $POD_NAME -n $NAMESPACE -p
(3) 按照时间段日志查询(h/m/s之内)
# kubectl  logs  $POD_NAME -n $NAMESPACE --since=1h
(4) 按照时间戳查询日志
# kubectl  logs  $POD_NAME -n $NAMESPACE --since-time=2019-09-29T11:00:00
(5) 查看最近100 行日志
kubectl logs --tail=100 <pod-name> -n <namespace>
(6) 多容器 Pod 查看所有容器日志
kubectl logs --all-containers=true <pod-name> -n <namespace>
(7) 导出日志到文件
kubectl logs <pod-name> -n <namespace> > pod.log

4. 高级用法

(1) 通过标签选择器查看日志
# 查看匹配标签 app=nginx 的 Pod 日志(自动选择第一个 Pod)
kubectl logs -l app=nginx -n <namespace> --tail=50
(2) 查看多个 Pod 的日志
# 查看所有匹配标签的 Pod 日志(需安装 stern 工具)
stern "app=nginx" -n <namespace>

# 或使用 kubectl 遍历(需手动处理)
kubectl get pods -l app=nginx -n <namespace> -o name | xargs -I {} kubectl logs {} -n <namespace>
(3) 结合 grep 过滤日志
kubectl logs <pod-name> -n <namespace> | grep "ERROR"
(4) 查看 Init 容器的日志
kubectl logs <pod-name> -c <init-container-name> -n <namespace>

5. 常见问题解决

Q1:Pod 处于 CrashLoopBackOff 状态,如何查看日志?
kubectl logs <pod-name> -n <namespace> --previous
Q2:日志量过大导致 kubectl 无响应?
# 限制日志行数
kubectl logs --tail=1000 <pod-name> -n <namespace>

# 导出到文件后分析
kubectl logs <pod-name> -n <namespace> > pod.log
Q3:Pod 有多个容器,如何快速查看所有日志?
# 方法1:使用 --all-containers
kubectl logs --all-containers=true <pod-name> -n <namespace>

# 方法2:使用 stern 工具(推荐)
stern <pod-name> -n <namespace>

6.日志查看工具扩展

(1) stern:多 Pod 日志聚合工具
# 安装
brew install stern  # macOS
choco install stern # Windows
sudo snap install stern # Linux

# 使用:实时跟踪所有匹配标签的 Pod 日志
stern "app=nginx" -n <namespace> --tail 100
(2) kail:高级日志查看工具
# 安装
brew tap johanhaleby/kail && brew install kail

# 使用:按服务名过滤
kail -n <namespace> --svc nginx

7. 最佳实践

  • 日志切割与存储:配置集群日志系统(如 Loki、Elasticsearch)持久化存储。

  • 结构化日志:应用输出 JSON 格式日志,便于后续分析。

  • 敏感信息过滤:避免在日志中打印密码、Token 等敏感数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alden_ygq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值