【K8S系列】如何高效查看 k8s日志

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【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 的容器的日志,可以执行以下命令:

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 日志,以便更全面地了解容器的运行情况。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
|
8天前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
2月前
|
消息中间件 Kubernetes API
在K8S中,如何收集k8s集群日志?
在K8S中,如何收集k8s集群日志?
|
1月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
66 0
|
2月前
|
消息中间件 Kubernetes Kafka
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
|
2月前
|
Kubernetes Shell 网络安全
【Azure K8S】记录AKS VMSS实例日志收集方式
【Azure K8S】记录AKS VMSS实例日志收集方式
|
2月前
|
存储 Prometheus Kubernetes
在K8S中,如何收集K8S日志?有哪些方案?
在K8S中,如何收集K8S日志?有哪些方案?
|
存储 监控 Kubernetes
Kubernetes 日志查询分析实践
本文将介绍如何基于日志服务实现对 Kubernetes(以下简称 K8s)日志的采集以及查询分析,此外,还附带了对 Ingress、Audit 方案的简要介绍。为了方便大家通过操作来加深理解,本文提供了详细的操作步骤以及对应截图和配置代码。
1318 0
Kubernetes 日志查询分析实践
|
监控 Kubernetes Cloud Native
Kubernetes 日志查询分析实践
本文将介绍如何基于日志服务实现对 Kubernetes(以下简称 K8s)日志的采集以及查询分析,此外,还附带了对 Ingress、Audit 方案的简要介绍。为了方便大家通过操作来加深理解,本文提供了详细的操作步骤以及对应截图和配置代码。
Kubernetes 日志查询分析实践
|
Kubernetes 监控 数据挖掘
Kubernetes 日志查询分析实践
本文将介绍如何基于日志服务实现对 Kubernetes(以下简称 K8s)日志的采集以及查询分析,此外,还附带了对 Ingress、Audit 方案的简要介绍。为了方便大家通过操作来加深理解,本文提供了详细的操作步骤以及对应截图和配置代码。
2518 0
下一篇
无影云桌面