【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. ...
随机推荐
- Springboot实现注解判断权限
Springboot实现注解判断权限 今天记录一下使用springboot的注解来给方法加权限 避免了每个方法都需要大量的权限判断 超级好用√ @ 目录 Springboot实现注解判断权限 1.创建 ...
- java_方法使用细节
java_方法使用细节 1.一个方法想要返回多个值 思考?一个方法如何返回多个值 返回数组 class AA{ public int[] getSumAndSub(int n1, int n2){ / ...
- 关于Word转PDF的几种实现方案
在.NET中,你可以使用Microsoft.Office.Interop.Word库来进行Word到PDF的转换.这是一个示例代码,但请注意这需要在你的系统上安装Microsoft Office. 在 ...
- 10月TIOBE榜Java跌出前三!要不我转回C#吧
前言 Java又要完了,又要没了,你没看错,10月编程语言榜单出炉,Java跌出前三,并且即将被C#超越,很多资深人士预测只需两个月,Java就会跌出前五. 看到这样的文章,作为一名Java工程师我感 ...
- eclipse使用技巧和插件
eclipse使用技巧和插件 本篇文章只列举了一部分技巧和插件,并没有包括大家都知道的快捷键和技巧,而是一些不经常用但又很方便的功能. 一,技巧 给Eclipse添加更方便的提示功能:Windows– ...
- Java IO 与 NIO:高效的输入输出操作探究
引言 输入输出(IO)是任何编程语言中的核心概念,而在Java中,IO操作更是应用程序成功运行的基石.随着计算机系统变得越来越复杂,对IO的要求也日益增加.在本文中,我们将探讨Java IO和非阻塞I ...
- SQL还是NoSQL?架构师必备选型技能
很多时候我们都会有这样的疑问. 如果这时候直接去看MySQL.Mongo.HBase.Redis等数据库的用法.特点.区别,其实有点太着急了. 这时候,最好从「数据模型」开始讨论. 1.SQL vs ...
- Net 高级调试之二:CLR和Windows加载器及应用程序域介绍
一.简介 今天是 Net 高级调试的第二篇文章,第一篇文章记录了自己学习 Net 高级调试的第一步,认识一些调试工具,有了工具的倚仗,我们开始仗剑走天涯了,开始Net 高级调试正式的征程了.我先说一下 ...
- Java文件与IO流
首先我们要清楚什么是流,正如其名,很形象,流就是像水一样的东西,具有方向性,在java中 ,流大概就是类 接下来,我们要对输入输出流有一个基本认识,什么是输入输出流呢? 输入输出明显需要一个参照,而这 ...
- React 基础介绍以及demo实践
这篇文章是之前给新同事培训react基础所写的文章,现贴这里供大家参考: 1.什么是React? React 是一个用于构建用户界面的JavaScript库核心专注于视图,目的实现组件化开发 2.组件 ...