【K8S系列】如何高效查看 k8s日志
序言
你只管努力,其他交给时间,时间会证明一切。
文章标记颜色说明:
- 黄色:重要标题
- 红色:用来标记结论
- 绿色:用来标记一级论点
- 蓝色:用来标记二级论点
Kubernetes (k8s) 是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s日志查看相关方法
希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流
专栏介绍
这是这篇文章所在的专栏,欢迎订阅:【深入解析k8s】专栏
简单介绍一下这个专栏要做的事:
主要是深入解析每个知识点,帮助大家完全掌握k8s,以下是已更新的章节
这是专栏介绍文章地址:【深入解析K8S专栏介绍】
今天我们来看一下K8s 日志相关问题
- 日志类型
- 查看日志的方法
1日志类型

在 Kubernetes(简称为 k8s)中,主要有以下几种类型的日志:
- 容器日志
- Kubernetes 系统组件日志
- Fluentd 日志
- Sidecar 容器日志
- Init 容器日志
- 系统日志
1.1 容器日志
在 Kubernetes 中,每个容器都有一个对应的日志文件,用于存储容器的日志输出。
容器的标准输出和标准错误输出会被重定向到容器的日志文件中,可以通过在节点上查看容器的日志文件来查看容器的日志输出。
容器日志通常包括容器的启动日志、应用程序输出日志和错误日志等。
1.2 Kubernetes 系统组件日志
在 Kubernetes 中,还有一些系统组件,例如 kube-apiserver、kube-controller-manager、kube-scheduler 等,它们也会产生日志输出。
这些组件的日志输出通常包括组件的启动日志、操作日志和错误日志等。
1.3 Fluentd 日志
Fluentd 是 Kubernetes 中的一个日志收集器,用于收集容器的日志输出。
Fluentd 可以从容器的标准输出和标准错误输出中收集日志,并将其发送到指定的目标(例如 Elasticsearch、Kafka 等)。
Fluentd 的日志输出通常包括收集到的日志数据和发送到目标的日志数据等。
1.4 Sidecar 容器日志
在 Kubernetes 中,有一种常见的模式是使用 Sidecar 容器来扩展主容器的功能。
Sidecar 容器通常用于收集主容器的日志输出、监控主容器的运行情况、提供额外的服务等。
Sidecar 容器的日志输出通常包括主容器的日志数据和 Sidecar 容器自身的日志数据等。
1.5 Init 容器日志
在 Kubernetes 中,可以使用 Init 容器来执行启动任务或初始化任务。
Init 容器通常在主容器启动之前运行,用于准备容器的环境、配置文件等。
Init 容器的日志输出通常包括初始化任务的日志数据和主容器的启动日志等。
1.6 系统日志
除了容器和 Kubernetes 系统组件的日志外,节点上还会产生系统日志,例如操作系统的日志、网络日志等。
这些日志数据通常包含节点的运行情况、硬件故障、网络问题等信息,对于排查节点级别的问题非常有用。
2 查看日志的方法

在 Kubernetes 中,容器的日志输出非常重要,可以帮助我们监控和调试应用程序的运行情况。
下面是一些高效查看 Kubernetes 日志的方法:
- 使用 kubectl logs 命令
- 使用 kubectl logs 命令查看多个容器
- 使用 kubectl logs 命令查看最新的日志
- 使用 kubectl logs 命令查看时间戳
- 使用 kubectl logs 命令查看前 n 行日志
- 使用 kubectl logs 命令查看特定时间段的日志
- 使用 kubectl logs 命令查看多个 Pod 的日志
- 使用 kubectl logs 命令查看多个容器的日志
- 使用 Kubernetes Dashboard
- 使用第三方工具
2.1 使用 kubectl logs 命令
kubectl logs 命令可以用于查看 Kubernetes Pod 的日志输出。使用该命令时,需要指定 Pod 的名称和容器的名称。
例如,要查看名为 my-pod 中名为 my-container 的容器的日志,可以执行以下命令:
kubectl logs my-pod my-container
该命令会输出容器的日志输出,包括标准输出和标准错误输出。
2.2 使用 kubectl logs 命令查看多个容器
如果 Pod 中有多个容器,可以使用 kubectl logs 命令来查看多个容器的日志输出。可以使用 -c 选项来指定容器的名称。
例如,要查看名为 my-pod 中名为 my-container1 和 my-container2 的容器的日志,可以执行以下命令:
kubectl logs my-pod -c my-container1 kubectl logs my-pod -c my-container2
2.3 使用 kubectl logs 命令查看最新的日志
如果只想查看最新的日志输出,可以使用 -f 选项来实时查看容器的日志输出。
例如,要查看名为 my-pod 中名为 my-container 的容器的最新日志输出,可以执行以下命令:
kubectl logs -f my-pod my-container
该命令会实时输出容器的日志输出,直到手动停止输出。
2.4 使用 kubectl logs 命令查看时间戳
如果想查看日志输出的时间戳,可以使用 -t 选项来打印时间戳。
例如,要查看名为 my-pod 中名为 my-container 的容器的日志输出,并打印时间戳,可以执行以下命令:
kubectl logs -t my-pod my-container
2.5 使用 kubectl logs 命令查看前 n 行日志
如果只想查看日志输出的前 n 行,可以使用 --tail 选项来指定输出的行数。
例如,要查看名为 my-pod 中名为 my-container 的容器的前 10 行日志输出,可以执行以下命令:
kubectl logs --tail=10 my-pod my-container
2.6 使用 kubectl logs 命令查看特定时间段的日志
如果想查看特定时间段内的日志输出,可以使用 --since 和 --until 选项来指定时间段。
例如,要查看名为 my-pod 中名为 my-container 的容器在 2022 年 1 月 1 日至 2022 年 1 月 2 日期间的日志输出,可以执行以下命令:
kubectl logs --since="2022-01-01T00:00:00Z" --until="2022-01-02T00:00:00Z" my-pod my-container
2.7 使用 kubectl logs 命令查看多个 Pod 的日志
如果需要同时查看多个 Pod 的日志输出,可以使用 kubectl logs 命令的 -l 选项来指定 Pod 的标签选择器。例如,要查看标签为 app=my-app 的所有 Pod 的名为 my-container 的容器的日志输出,可以执行以下命令:
kubectl logs -l app=my-app -c my-container
该命令会输出所有包含 app=my-app 标签的 Pod 中名为 my-container 的容器的日志输出。
2.8 使用 kubectl logs 命令查看多个容器的日志
如果你需要同时查看多个容器的日志输出,可以使用 kubectl logs 命令的 -f 和 -c 选项来实时查看多个容器的日志输出。例如,要实时查看名为 my-pod 中名为 my-container1 和 my-container2 的容器的日志输出,可以执行以下命令:
kubectl logs -f my-pod -c my-container1 -c my-container2
该命令会实时输出名为 my-pod 中名为 my-container1 和 my-container2 的容器的日志输出。
2.9 使用 Kubernetes Dashboard
如果你使用 Kubernetes Dashboard 来管理 Kubernetes 集群,那么可以使用 Dashboard 来查看容器的日志输出。Dashboard 是一个基于 Web 的 Kubernetes 管理界面,可以帮助你更方便地管理和监控 Kubernetes 集群。
在 Dashboard 中,可以轻松地查看 Pod 的日志输出,包括标准输出和标准错误输出。你可以通过单击 Pod 的名称,在 Pod 详情页中查看日志输出。
2.10 使用第三方工具
除了 kubectl logs 命令外,还有一些第三方工具可以用于查看 Kubernetes 日志,例如 Elasticsearch、Fluentd、Kibana、Prometheus、Grafana 等。
这些工具可以帮助你更加方便地查看和分析 Kubernetes 日志,提高日志分析的效率。
ELK Stack
ELK Stack 是一个常用的日志收集和分析工具,包括 Elasticsearch、Logstash 和 Kibana。在 Kubernetes 中,可以使用 ELK Stack 来收集和分析容器的日志输出。
Logstash 用于收集容器的日志输出,并将其发送到 Elasticsearch 中,Kibana 用于展示和分析日志数据。
ELK Stack 的日志输出通常包括收集到的日志数据和展示和分析的日志数据等。
3 总结
总之,高效查看 Kubernetes 日志需要选择合适的工具和方法,并且需要根据实际情况进行调整和优化。
在实际使用中,建议使用多种方法来查看 Kubernetes 日志,以便更全面地了解容器的运行情况。
4 投票

微信名片
【K8S系列】如何高效查看 k8s日志的更多相关文章
- Docker & k8s 系列三:在k8s中部署单个服务实例
本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...
- 运维笔记--docker高效查看后台日志
场景描述: 应用程序运行在 Docker环境中,经常使用的查看后台日志的命令是:docker attach 容器名该命令优点:实时输出:不足之处:日志大量输出的时候,屏幕一闪而过,不便于调试,并且有一 ...
- 拒绝蛮力,高效查看Linux日志文件!
原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 日常分析问题时,会频繁地查看分析日志,但如果蛮力去查看日志,耗时费力还不一定有效果,因此我总结了在Linux常用的 ...
- Docker & k8s 系列一:快速上手docker
Docker & k8s 系列一:快速上手docker 本篇文章将会讲解:docker是什么?docker的安装,创建一个docker镜像,运行我们创建的docker镜像,发布自己的docke ...
- Docker & k8s 系列二:本机k8s环境搭建
本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...
- k8s系列---资源指标API及自定义指标API
不得不说千万不要随意更改版本,我用的1.13的版本,然后学到这一步时,还因yaml文件不同,卡住了很久,然后各种google才找到解决办法 https://www.linuxea.com/2112. ...
随机推荐
- MySQL系列之优化——1.优化哲学、2. 优化工具的使用、3. 优化思路分解、4. MySQL参数优化测试、5.1 参数优化、6. 参数优化结果、7. 锁的监控及处理、8. 主从优化
文章目录 1.优化哲学 1.1 为什么优化? 1.2 优化风险 1.3 谁参与优化 1.4 优化方向 1.5 优化的范围及思路 优化效果和成本的评估: 2. 优化工具的使用 2.1 系统层面的 2.1 ...
- fatal: 无法访问 'https://github.com/nmww/lingyun.git/':Failed to connect to github.com port 443 after 13 ms: Connection refused
fatal: 无法访问 'https://github.com/nmww/lingyun.git/':Failed to connect to github.com port 443 after 13 ...
- Installing Gradle
Chapter 4. Installing Gradle 4.1. Prerequisites Gradle requires a Java JDK or JRE to be installed, v ...
- .NET周刊【10月第1期 2023-10-01】
国内文章 .NET应用如何防止被反编译 https://www.cnblogs.com/Can-daydayup/p/17736700.html 本文主要讲述了如何防止.NET应用被反编译.虽然无法完 ...
- 低代码助力微信小程序对接,提升开发效率
摘要:本文由葡萄城技术团队原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 微信小程序相信大家都用过,相较于APP,微信小程序的优势在于其便 ...
- 探索Redis与MySQL的双写问题
本文已收录至GitHub,推荐阅读 Java随想录 微信公众号:Java随想录 原创不易,注重版权.转载请注明原作者和原文链接 目录 双写一致问题 缓存读写策略 Cache-Aside Pattern ...
- Splay 详细图解 & 轻量级代码实现
学 LCT 发现有点记不得 Splay 怎么写,又实在不知道这篇博客当时写了些什么东西(分段粘代码?),决定推倒重写. 好像高一学弟也在学平衡树,但相信大家都比樱雪喵强,都能一遍学会!/kel 写在前 ...
- 阿里发布AI编码助手:通义灵码,兼容 VS Code、IDEA等主流编程工具
今天是阿里云栖大会的第一天,相信场外的瓜,大家都吃过了.这里就不说了,有兴趣可以看看这里:云栖大会变成相亲现场,最新招婿鄙视链来了... . 这里主要说说阿里还发布了一款AI编码助手,对于我们开发者来 ...
- Redis7
Redis是基于内存的K-V键值对内存数据库 浅谈Redis7新特性 主要是自身底层性能和资源利用率上的提高和优化. 多AOF文件支持 config命令增强 限制客户端内存使用 listpack紧凑列 ...
- [CF3C] Tic-tac-toe
[题目描述] 显然,我们每个人都熟悉Tic-tac-toe游戏. 这个游戏的规则是:两个人依次在3X3的棋盘上下棋. 当一个人有3个棋子连成一行或一列或一纵列时,则这个人已经获得胜利.这时则停止下棋. ...