使用 kubectl logs 查看日志
使用 kubectl 直接从 Kubernetes Cluster 访问和分析容器日志。
使用 kubectl logs 查看日志 是 CoddyKit 上的免费 Kubernetes Basics 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Kubernetes Basics 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Kubernetes Basics 课程共包含 4 节课。
为什么 Kubernetes 中的日志很重要
在 Kubernetes 中,了解应用正在执行的操作至关重要。日志就像应用的日记,记录事件、错误和状态更新。
日志对于以下工作必不可少:
- 调试:在出现问题时定位故障。
- 监控:持续关注应用的健康状况和性能。
- 审计:跟踪一段时间内的操作和变更。
容器日志详解
容器化应用运行时,通常会将输出写入标准输出(stdout)和标准错误(stderr)流。Kubernetes 会收集每个容器的这些输出流。
随后,您可以通过 Kubernetes API 访问这些输出流,无需通过 SSH 登录节点或单个容器。
介绍 kubectl logs
kubectl logs 命令是访问 Kubernetes 容器组中运行的容器日志的主要工具。它简单易用,并提供了多个强大选项。
最基本的用法是指定您要检查的容器组名称。
创建生成日志的容器组
为了演示 kubectl logs 的使用方式,假设我们部署了一个简单的容器组,它会持续向标准输出发送消息。这样可以模拟实际应用生成日志的过程。
以下是此类容器组的 YAML 配置(您可以使用 kubectl apply -f 应用它):
apiVersion: v1
kind: Pod
metadata:
name: busybox-logger
spec:
containers:
- name: busybox-container
image: busybox
command: ['sh', '-c', 'while true; do echo "$(date) - Hello from BusyBox"; sleep 5; done']
restartPolicy: Always查看基本 Pod 日志
当您的 busybox-logger Pod 正在运行时(使用 kubectl get pods 检查),您可以使用基本的 kubectl logs 命令获取其日志。
这会显示截至该时刻记录的所有日志条目。
kubectl logs busybox-logger实时流式查看日志
进行实时调试时,您通常需要像在 Linux 上使用 tail -f 一样,查看日志的实时产生过程。-f 或 --follow 标志正是用于此目的。
它会持续从容器中流式传输新的日志条目。
kubectl logs -f busybox-logger查看之前容器的日志
如果 Pod 中的容器崩溃并重新启动,kubectl logs 默认会显示当前运行实例的日志。
若要查看容器之前已终止实例的日志,请使用 --previous 或 -p 标志。这对于调试容器可能为何失败非常有帮助。
kubectl logs -p busybox-logger查看指定容器的日志
某些 Pod 可以运行多个容器(例如,一个主应用程序容器和一个用于日志记录或监控的辅助容器)。如果您的 Pod 包含多个容器,则必须使用 -c 或 --container 标志指定要查看哪个容器的日志。
kubectl logs my-multi-container-pod -c my-sidecar-container筛选和限制日志输出
有时您只需要日志中的特定部分,或者只需要最新的条目。您可以将 kubectl logs 与标准 Linux 命令结合使用,或使用内置标志:
- 使用
grep筛选:将输出通过管道传递给grep,以查找特定关键字。 - 使用
--tail限制行数:仅显示日志的最后 N 行。
kubectl logs busybox-logger | grep "Hello"
kubectl logs busybox-logger --tail=5日志命令挑战
您有一个名为 my-app-pod 的 Pod,其中包含两个容器:frontend 和 backend。backend 容器最近崩溃并重新启动。您希望查看 backend 容器之前实例的日志。
日志与调试总结
恭喜您!您已经学会了使用 kubectl logs 访问和分析容器日志的基本方法。对于了解和排查在 Kubernetes 中运行的应用程序问题,这个强大的命令不可或缺。
需要记住的关键命令:
kubectl logs <pod-name>:获取基本日志。kubectl logs -f <pod-name>:实时流式传输日志。kubectl logs -p <pod-name>:查看容器之前实例的日志。kubectl logs -c <container> <pod-name>:查看指定容器的日志。
常见问题解答
「使用 kubectl logs 查看日志」课时是免费的吗?
是的 — 「使用 kubectl logs 查看日志」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kubernetes Basics 课程的其余内容,请升级到 CoddyKit PRO。 Kubernetes Basics 课程共包含 4 节课。
「使用 kubectl logs 查看日志」这节课中我会学到什么?
使用 kubectl 直接从 Kubernetes Cluster 访问和分析容器日志。 你通过在浏览器中直接运行的动手代码来练习 Kubernetes Basics,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Kubernetes Basics 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Kubernetes Basics 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「使用 kubectl logs 查看日志」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Kubernetes Basics 课中编写并运行代码吗?
能。每节 Kubernetes Basics 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 kubectl logs 查看日志
- 使用 Prometheus 与 Grafana 处理指标
- 健康检查:存活与就绪探针
- 分布式追踪与事件