序言

你只管努力,其他交给时间,时间会证明一切。

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

Kubernetes (k8s) 是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s日志查看相关方法

希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流

专栏介绍

这是这篇文章所在的专栏,欢迎订阅:【深入解析k8s】专栏

简单介绍一下这个专栏要做的事:

主要是深入解析每个知识点,帮助大家完全掌握k8s,以下是已更新的章节

这是专栏介绍文章地址:【深入解析K8S专栏介绍】

今天我们来看一下K8s 日志相关问题

  • 日志类型
  • 查看日志的方法

1日志类型

在 Kubernetes(简称为 k8s)中,主要有以下几种类型的日志:

  1. 容器日志
  2. Kubernetes 系统组件日志
  3. Fluentd 日志
  4. Sidecar 容器日志
  5. Init 容器日志
  6. 系统日志

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 日志的方法:

  1. 使用 kubectl logs 命令
  2. 使用 kubectl logs 命令查看多个容器
  3. 使用 kubectl logs 命令查看最新的日志
  4. 使用 kubectl logs 命令查看时间戳
  5. 使用 kubectl logs 命令查看前 n 行日志
  6. 使用 kubectl logs 命令查看特定时间段的日志
  7. 使用 kubectl logs 命令查看多个 Pod 的日志
  8. 使用 kubectl logs 命令查看多个容器的日志
  9. 使用 Kubernetes Dashboard
  10. 使用第三方工具

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 的容器的日志,可以执行以下命令:

  1.  
    kubectl logs my-pod -c my-container1
  2.  
    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日志的更多相关文章

  1. Docker & k8s 系列三:在k8s中部署单个服务实例

    本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...

  2. 运维笔记--docker高效查看后台日志

    场景描述: 应用程序运行在 Docker环境中,经常使用的查看后台日志的命令是:docker attach 容器名该命令优点:实时输出:不足之处:日志大量输出的时候,屏幕一闪而过,不便于调试,并且有一 ...

  3. 拒绝蛮力,高效查看Linux日志文件!

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 日常分析问题时,会频繁地查看分析日志,但如果蛮力去查看日志,耗时费力还不一定有效果,因此我总结了在Linux常用的 ...

  4. Docker & k8s 系列一:快速上手docker

    Docker & k8s 系列一:快速上手docker 本篇文章将会讲解:docker是什么?docker的安装,创建一个docker镜像,运行我们创建的docker镜像,发布自己的docke ...

  5. Docker & k8s 系列二:本机k8s环境搭建

    本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...

  6. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  7. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...

  8. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

  9. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...

  10. k8s系列---资源指标API及自定义指标API

    不得不说千万不要随意更改版本,我用的1.13的版本,然后学到这一步时,还因yaml文件不同,卡住了很久,然后各种google才找到解决办法  https://www.linuxea.com/2112. ...

随机推荐

  1. Django框架项目之上线——docker、部署上线

    文章目录 Docker CentOS安装Docker 设置管理Docker的仓库 安装Docker Engine-Community Docker基础命令 开启关闭 镜像操作 容器操作 Docker安 ...

  2. WEBGpu最佳实践之BindGroup

    介绍 在WebGPU中,资源通过GPUBindGroup结构传递给着色器,与支持它的布局定义(GPUBindGroupLayout和GPUPipelineLayout)以及着色器中绑定组的声明一起.这 ...

  3. 使用Github Action实现构建、发布到 nuget.org

    使用Github Action实现构建.发布到 nuget.org GitHub Actions是GitHub提供的持续集成和持续部署(CI/CD)工具,它能够自动化构建.测试和部署你的项目.在这篇教 ...

  4. [CF1178 F2] Long Colorful Strip

    F2 - Long Colorful Strip 很牛的题! 首先,我们可以将颜色相同的一段区间缩成一个点,那么每次加入一个新的颜色时,最多只能将其所覆盖的那个颜色所属的区间分成三部分(原本:0000 ...

  5. Linux g++减小可执行文件大小

    去掉参数-g,产生不带有调试信息的可执行文件 加上参数-O2,产生尽可能小和尽可能快的代码 strip 可执行文件 去掉目标文件中的一些符号表.调试符号表信息,以减小程序的大小 参考文献: g++重要 ...

  6. [Python急救站课程]等边三角形的绘制

    等边三角形的绘制 from turtle import * penup() fd(-50) pendown() pensize(25) seth(60) fd(100) seth(-60) fd(10 ...

  7. 【源码解读(二)】EFCORE源码解读之查询都做了什么以及如何自定义批量插入

    引言 书接上回,[源码解读(一)]EFCORE源码解读之创建DBContext查询拦截,在上一篇文章中,主要讲了DBContext的构造函数,以及如何缓存查询方法提升查询性能,还有最重要的拦截查询,托 ...

  8. 自定义Graph Component:1-开发指南

      可以使用自定义NLU组件和策略扩展Rasa,本文提供了如何开发自己的自定义Graph Component指南.   Rasa提供各种开箱即用的NLU组件和策略.可以使用自定义Graph Compo ...

  9. 从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?

    引言 在OpenAI DevDay发布会上,OpenAI再次震撼整个人工智能行业,为AI领域带来了重大的更新.CEO Sam Altman宣布推出了定制版本的ChatGPT,这意味着用户现在可以根据自 ...

  10. 自定义Graph Component:1.2-其它Tokenizer具体实现

      本文主要介绍了Rasa中相关Tokenizer的具体实现,包括默认Tokenizer和第三方Tokenizer.前者包括JiebaTokenizer.MitieTokenizer.SpacyTok ...