【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. ...
随机推荐
- LSP 链路状态协议
转载请注明出处: 链路状态协议(Link State Protocol)是一种在计算机网络中用于动态计算路由的协议.它的主要作用是收集网络拓扑信息,为每个节点构建一个准确的网络图,并基于这些信息计算出 ...
- 【算法】游戏中的学习,使用c#面向对象特性控制游戏角色移动
最近,小悦的生活像是一首繁忙的交响曲,每天忙得团团转,虽然她的日程安排得满满当当,但她并未感到充实.相反,她很少有时间陪伴家人,这让她感到有些遗憾.在周五的午后,小悦的哥哥突然打来电话,他的声音里充满 ...
- 2D物理引擎 Box2D for javascript Games 第五章 碰撞处理
2D物理引擎 Box2D for javascript Games 第五章 碰撞处理 碰撞处理 考虑到 Box2D 世界和在世界中移动的刚体之间迟早会发生碰撞. 而物理游戏的大多数功能则依赖于碰撞.在 ...
- Keepalived高可用软件概述
Keepalived高可用软件概述: 1)互联网主要的高可用软件:Keepalived.Hearttbeat.其中Keepalived是轻量级的,Keepalived是一款开源.免费的实现网站.数据库 ...
- My Code Style
大家都在写,跟风. 头文件 万能头.因为我刚学 OI 的时候怎么都背不住 algorithm 怎么拼( 变量 数组开全局,一些前后重名/只在某一部分用的变量开局部. 尽量不使用指针/ stl 迭代器等 ...
- LooklessControl
Lookless controls vs User Controls. Lookless controls usage patterns(LooklessControl与UserControl的比较. ...
- Terraform 系列-使用Dynamic Blocks对Blocks进行迭代
系列文章 Terraform 系列文章 Grafana 系列文章 概述 Terraform 系列文章 介绍了使用 Grafana Terraform Provider, 基于 Terraform 的 ...
- HTML-8
(一)引用数据类型 object function array object JavaScript对象用花括号来书写 对象属性是name:value由逗号分隔 var x={firstname:&qu ...
- mysql常用函数详解
1. Mysql内置函数分类及使用范围 数学函数: 这类函数只要用于处理数字.这类函数包括绝对值函数.正弦函数.余弦函数.获取随机数函数等. 字符串函数:这类函数主要用于处理字符串.其中包括字符串连接 ...
- 一篇文章让你理解:什么是Spring???
背景 市场上,随便一个Java工程师的招牌要求上,都可以看到SSM.Spring.SpringMVC...类似字样.这玩意到底是个啥? 这是中邮消费招聘的岗位要求,可以看到第3点: 3.熟悉Strut ...