Kubernetes那点事儿——日志管理

这篇具有很好参考价值的文章主要介绍了Kubernetes那点事儿——日志管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

程序运行中输出的日志默认暂存在Pod中,当Pod销毁重建时,日志也会丢失。所以需要一些持久化的方法保存程序日志。

一、日志

  1. K8s系统日志

    • kubelet组件,systemd方式部署,journalctl -u kubelet 查看
    • 其他组件,pod方式部署,kubectl logs 查看
    • 系统日志,/var/log/message

    二进制方式部署,所有组件均为systemd方式部署。

  2. K8s应用日志

    • 标准输出
    • 日志文件

二、K8s应用日志

标准输出

kubectl logs <Pod名称>
kubectl logs -f <Pod名称>
kubectl logs -f <Pod名称> -c <容器名>

Kubernetes那点事儿——日志管理

标准输出在宿主机的路径:(此功能为docker自身功能,docker会将容器中标准输入持久化到宿主机本地文件)
/var/log/docker/containers/<container-id>/<container-id>-json.log
/var/log/containers/<container-id>.log

Kubernetes那点事儿——日志管理

应用日志收集

1、emptyDir挂载收集

这里涉及到pod的挂载方式(存储)emptyDir,大家可以先熟悉一下,后续我们在存储部分会专门研究挂在卷。

emptydir实际是将容器中应用日志使用emptyDir数据卷将日志文件持久化到宿主机上,目录:/var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~empty-dir/

创建一个deploymen 并 挂载 emptydir

[root@k8s-master ~]# cat emptyDir.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: log-collect
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
        volumeMounts:
        - name: logs
          mountPath: /var/log/nginx # 挂载nginx日志目录
      volumes:
      - name: logs
        emptyDir: {}

分别从宿主机日志及pod里观察日志,看日志是否一致

Kubernetes那点事儿——日志管理
Kubernetes那点事儿——日志管理
结果是一致的,说明使用emptyDir挂载是挂载到了宿主机的/var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~empty-dir/logs/access.log

此方式只是将pod的应用日志文件持久化到宿主机的相应目录下,没有标准输出,所以kubectl logs无法获取到日志

Kubernetes那点事儿——日志管理

2、边车容器收集

边车容器也就是常说的sidecar,可以理解是为是在emptyDir挂载方式上的改进,pod里再创建一个docker用于收集日志,如filebeat,fluentd等。当然,也可以作为标准输出

sidecar示例

[root@k8s-master yaml]# cat sidecar.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: log-collect
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
        volumeMounts:
        - name: logs
          mountPath: /var/log/nginx
      - name: log-coll
        image: busybox
        args: [/bin/sh,-c,'tail -f /opt/access.log']
        volumeMounts:
        - name: logs
          mountPath: /opt
      volumes:
      - name: logs
        emptyDir: {}

我们访问这个nginx,然后kubectl logs查看日志

Kubernetes那点事儿——日志管理
当然我们可以将其他日志收集组件作为sidecar,如flunetd、filebeat等文章来源地址https://www.toymoban.com/news/detail-456614.html

到了这里,关于Kubernetes那点事儿——日志管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】kubernetes应用程序包管理工具Helm

        什么是 Helm 安装 Helm 重要概念 使用 Helm 1 简介 官网地址: Helm Helm是一个Kubernetes应用程序包管理工具,它允许你轻松管理和部署Kubernetes应用程序。Helm通过使用称为Charts的预定义模板来简化Kubernetes应用程序的部署和管理。Chart包含了一组Kubernetes对象定义,可以描述一个应用

    2024年02月09日
    浏览(40)
  • 在命令行中使用 cl.exe编译 C/C++ 程序并执行

    目录 说明 附 cl.exe是Microsoft C/C++编译器。 我的VC6.0安装目录为:D:Program Files (x86)Microsoft Visual StudioCommonMSDev98Bin cl.exe的位置在:D:Program Files (x86)Microsoft Visual StudioVC98Bin 我们进入控制台,输入cl试试,有如下提示: 这是因为缺少mspdb60.dll mspdb60.dll下载 我们下载mspdb60.dll放到

    2024年02月05日
    浏览(33)
  • Kubernetes 的包管理器工具—— Helm 使用指南:打包、安装和升级 Kubernetes 中的应用程序

    作者:禅与计算机程序设计艺术 Helm 是 Kubernetes 的包管理器工具。Helm 可以帮助用户管理复杂的 Kubernetes 应用,通过 Charts 来打包、安装和升级 Kubernetes 中的应用程序。 1.1.1 Helm 安装 Helm 的下载及安装方式可以查看 官方文档。 1.1.2 Helm 操作命令 Helm 提供了多个子命令用于管理

    2024年02月09日
    浏览(49)
  • Shell 脚本实现自动启动程序、日志管理和定时任务监控

    本篇将通过Shell 脚本实现自动启动Java程序、日志管理和定时任务监控。脚本启动程序具灵活定制、可移植性和扩展性强的优点,可以根据需要添加额外的功能、配置选项和自定义行为,从而满足更具体的要求。 确保将脚本中的/path/to/log和your_program_port等替换为实际的日志路径

    2024年01月21日
    浏览(43)
  • Springboot基于微信小程序的员工日志管理信息系统

    一、项目介绍 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发

    2024年02月02日
    浏览(45)
  • 高薪程序员&面试题精讲系列141之如何管理项目中的日志?如何查看线上日志?

    项目日志有哪些级别? 项目日志具体怎么打印? 如何管理项目中的日志? 你用过哪些日志框架? 你了解ELK吗? 项目上线后怎么查看报错日志? 我们在进行项目开发时,除了进行编码实现业务功能之外,还要进行各种辅助的工作,比如要统计日志、项目运行、运营等各种信息

    2024年02月02日
    浏览(59)
  • kubernetes--kubernetes审计日志(api访问日志)

    目录 一、审计日志介绍: 二、事件和阶段: 三、Kubernetes审计日志: 四、审计日志的启用: 五、收集审计日志方案:        在Kubernetes集群中,API Server的审计日志记录了哪些用户、哪些服务请求操作集群资源,并且可以编写不通规则,控制忽略、存储的操作日志。    

    2024年02月10日
    浏览(43)
  • 程序员的英语课🍊-前言(一)

    Hello,大家好,我是李林。 今天给大家分享一下关于程序员学英语的技巧。 最近发现搞开发是越来越卷卷卷了,AI 越来越成熟,结合 AI 开发效率提升不少,效率高了,焦虑也高了,公司甚至想低代码结合 AI 直接零代码了,前几天又裁员一批,程序员太难了啊! 发现单纯的学

    2024年02月01日
    浏览(47)
  • 小程序内嵌H5那些事儿

    小程序内嵌H5是指将一个H5页面嵌入到小程序中的一种方式 小程序内嵌H5可以让用户在小程序中直接浏览和使用H5网页 同时也可以让开发者在小程序中使用H5网页的某些功能。 当原有的H5转相似业务逻辑的小程序时 除了内嵌H5以外 还可以采用 多端编译 的方案 但是这样做 api兼

    2024年02月13日
    浏览(41)
  • Linux应用程序开发:进程的一些事儿

      进程是一个动态过程,而非静态文件,它是程序的一次运行过程,当应用程序被加载到内存中运行之后它就称为了一个进程,当程序运行结束后也就意味着进程终止,这就是进程的一个生命周期。   Linux 系统下进程通常存在 6 种不同的状态,分为:就绪态、运行态、僵

    2023年04月24日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包