Kubernetes那点事儿——日志管理

news/2024/10/31 6:16:47/

K8s日志管理

  • 前言
  • 一、日志
  • 二、K8s应用日志
  • 标准输出
    • 应用日志收集
      • 1、emptyDir挂载收集
      • 2、边车容器收集


前言

程序运行中输出的日志默认暂存在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 <容器名>

在这里插入图片描述

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

在这里插入图片描述

应用日志收集

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: 1selector:matchLabels:app: demotemplate:metadata:labels:app: demospec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80volumeMounts:- name: logsmountPath: /var/log/nginx # 挂载nginx日志目录volumes:- name: logsemptyDir: {}

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

在这里插入图片描述
在这里插入图片描述
结果是一致的,说明使用emptyDir挂载是挂载到了宿主机的/var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~empty-dir/logs/access.log

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

在这里插入图片描述

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: 1selector:matchLabels:app: demotemplate:metadata:labels:app: demospec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80volumeMounts:- name: logsmountPath: /var/log/nginx- name: log-collimage: busyboxargs: [/bin/sh,-c,'tail -f /opt/access.log']volumeMounts:- name: logsmountPath: /optvolumes:- name: logsemptyDir: {}

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

在这里插入图片描述
当然我们可以将其他日志收集组件作为sidecar,如flunetd、filebeat等


http://www.ppmy.cn/news/2556.html

相关文章

【Paper】2021_具有输入饱和的多智能体系统非负连边比例一致性研究_范志鹏

范志鹏. 具有输入饱和的多智能体系统非负连边比例一致性研究[D].华中科技大学,2021.DOI:10.27157/d.cnki.ghzku.2021.001324. 文章目录3 基于状态反馈的线性离散正系统连边比例一致性控制3.1 引言3.2 基于状态反馈的离散时间连边比例一致性的问题描述3.3 无向网络离散时间连边比…

C语言实现一个闪烁的圣诞树(控制台)

下下下周就是圣诞节啦&#xff0c;C语言的圣诞树必须安排起&#xff01;&#xff01;&#xff01; 效果展示&#xff1a; 原理说明&#xff1a; 函数 layer 画出树的层次&#xff0c;根据坐标来输出位置&#xff1b; void layer(int x, int y, int num, int col) 函数 tri…

【有营养的算法笔记】归并排序

&#x1f451;作者主页&#xff1a;进击的安度因 &#x1f3e0;学习社区&#xff1a;进击的安度因&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;有营养的算法笔记 文章目录一、思路二、模板讲解三、模板测试四、加练 —— 逆序对的数量今天讲解的内容是…

Alvas.Audio专门为C#和VB.Net程序员设计

Alvas.Audio专门为C#和VB.Net程序员设计 Alvas.Audio库使C#和VB.Net程序员能够创建执行(包括混合声音信息)、捕获、转换和编辑音频的应用程序。 Alvas.Audio音频是C#音乐库。Web程序员。 这使您能够生产。NET程序&#xff0c;例如Winforms/WPF/Windows服务/控制台录音机、Inter…

机器学习-模型评估与选择(待更新)

本章主要讲解机器学习的基础知识&#xff0c;有关一些专业术语的定义与解释。 文章目录2.1 经验误差与过拟合2.2 评估方法2.2.1 留出法2.2.2 交叉验证法2.2.3 自助法2.2.4 调参与最终模型2.3 性能度量2.3.1 错误率与精度2.3.2 查准率、查全率与F12.3.3 ROC与AUC2.1 经验误差与过…

观看2022年卡塔尔世界杯的感想

每四年一度的世界杯又开始了&#xff0c;刚好在假期&#xff0c;这可是自我懂事以来第一次认真的观看。每到有球赛时我们父子齐上阵&#xff0c;摩拳擦掌、看到精彩时不忘高声齐呼&#xff0c;于是客厅就变成我们爷俩的绿茵场了。 几场下来&#xff0c;我只看到白皮肤&…

windows几个常用的命令

1. net命令 查看用户列表: net user powershell查看用户列表: Get-WmiObject -Class Win32_UserAccount 查看用户组列表: net localgroup 查看管理组列表: net localgroup Administrators 添加用户并设置密码: net user ASP.NET Pssw0rd /add 将用户加入管理组: net localgrou…

[附源码]JAVA毕业设计田径运动会管理系统(系统+LW)

[附源码]JAVA毕业设计田径运动会管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…