在Kubernetes(K8S)集群中,Pod日志的收集和管理对于诊断和监控应用程序非常重要。

Kubernetes中收集Pod日志的详细教程_Pod

日志收集的价值:

  • 日志查询、问题排查、故障恢复和故障自愈
  • 应用日志分析,错误报警
  • 性能分析,用户行为分析

k8s常用的日志收集方式:

  1. 在节点上进行收集,基于daemonset部署日志收集容器,实现json-file类型(标准输出/dev/stdout,错误输出/dev/stderr)日志收集
  2. 使用sidecar容器收集当前Pod内一个或多个业务容器的日志,通常基于emptyDir实现业务容器与sidecar容器之间的日志共享
  3. 在容器内内置日志收集进程


本教程将指导您如何在K8S集群中收集、查看和管理Pod日志。

步骤一:查看Pod日志

要查看单个Pod的日志,可以使用kubectl命令行工具。运行以下命令:

kubectl logs <pod-name>

这将输出Pod的日志内容。如果Pod有多个容器,您可以指定容器名称:

kubectl logs <pod-name> -c <container-name>

步骤二:使用kubectl logs跟踪日志

如果您希望实时跟踪Pod的日志输出,可以使用kubectl logs命令的-f选项:

kubectl logs -f <pod-name>

这将持续输出Pod的日志,直到您手动中断该命令。

步骤三:查看先前终止的容器日志

有时,容器可能会意外终止,导致无法使用kubectl logs命令来查看日志。在这种情况下,可以使用--previous选项来查看先前终止的容器日志:

kubectl logs --previous <pod-name> -c <container-name>

步骤四:配置日志收集器

如果您希望自动收集所有Pod的日志,并集中存储以供后续检查和分析,可以配置日志收集器,如Fluentd、Logstash、或者使用Kubernetes提供的原生日志收集器——Kubelet的日志收集功能。这些收集器通常与日志聚合平台(如ELK Stack、Elasticsearch、或者Kibana)一起使用,以便更好地管理和分析日志。


结论

通过本教程,您现在应该能够在Kubernetes集群中收集、查看和管理Pod的日志。日志的有效收集和分析对于诊断和监控应用程序至关重要,因此务必配置适当的日志收集器和聚合平台,以便及时发现并解决问题,确保应用程序的可靠性和稳定性。


CKA真题

真题截图

Kubernetes中收集Pod日志的详细教程_K8S_02

中文解析

切换 k8s 集群环境:kubectl config use-context k8s

Task

监控名为foobar的Pod的日志,并过滤出具有unable-access-website信息的行,然后将写入到 /opt/KUTR00101/foobar

官方参考文档

命令行工具 (kubectl)

做题解答

  1. 切换K8S集群环境
kubectl config use-context k8s
  1. 查看Pod为fobar的日志,过滤unable-access-website信息的行,并写入到指定的文件中
kubectl logs foobar | grep unable-access-website > /opt/KUTR00101/foobar