2019独角兽企业重金招聘Python工程师标准>>>

欢迎大家关注腾讯云技术社区,我们将为大家推荐技术精品文章哦~

作者:腾讯云容器服务团队

引言

Kubernetes对于容器实例的日志收集,并没有提供原生的解决方案。但提供使用kubectl logs命令查看容器实例运行时的日志。kubectl logs命令实现的基本原理为:容器运行时默认将标准输出和标准错误中的日志输出到磁盘上保存。保存至主机目录:/var/lib/docker/containers/container_id/目录。用户调用kubectl logs命令时,kubelet读取对应的日志文件中的数据,将数据回传给master,再由master返回到用户。从而实现用户对日志的查看。

腾讯云容器服务利用kubectl logs命令,实现在控制台即可查看对应容器实例的日志,并且提供查看某个特定时间段的日志的功能,这极大的方便了用户对容器实例中的程序进行定位和跟踪。但是,由于在容器实例日志保存在本地,当程序中大量打印日志时,很容易造成主机上的磁盘空间大量被占用。在日志服务上线一段时间后,发现用户遇到这种情况时,一般是手动去清理日志。我们就考虑是不是有比较简单的方式,在集群节点对日志进行定期清理和回卷。

通过logrotate服务实现日志定期清理和回卷

logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。
但如果按照之前的部署方式,需要手动在每个节点上都安装和配置对应logrotate工具。如果通过Kubernetes容器服务编排的能力,将logrotate通过Kubernetes中服务的方式部署到各个节点上,这样既可以实现只需要一次部署,部署到所有节点。并且通过容器的方式保证了logrotate配置的一致性。

具体的实施方案如下图所示:

方案的具体实现是在Kubernetes集群中,创建DaemonSet资源实现。DaemonSet资源会在每个Node节点上都部署一个logrotate的容器实例,并且在容器实例中设置映射主机的log日志目录,从而实现日志的定时清理和回卷。

创建DaemonSet的示例如下

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:name: logrotate
spec:template:metadata:labels:app: loggingid: logrotatename: logrotatespec:containers:- name: logrotate-esimage: blacklabelops/logrotatesecurityContext:privileged: truevolumeMounts:- name: containersmountPath: /var/lib/docker/containers- name: varlogmountPath: /var/log/docker- name: logsmountPath: /logsenv:- name: LOGS_DIRECTORIESvalue: "/var/lib/docker/containers /var/log/docker"- name: LOGROTATE_INTERVALvalue: "hourly"- name: LOGROTATE_OLDDIRvalue: "/logs"volumes:- hostPath:path: /var/lib/docker/containersname: containers- hostPath:path: /var/log/dockername: varlog- hostPath:path: /var/log/containers/name: logs

使用这个yaml文件,可以直接在Kubernetes中进行部署。

# kubectl create -f logrotate_ds.yaml
daemonset "logrotate" created

在示例的yaml文件中,logrotate服务将按照定时(1小时)的对日志进行回卷,回卷超过5个副本后则会对日志进行清理。如果有需要,可以修改相应的参数,设置不同的回卷规则和清理规则。详细的参数说明可以参考:https://github.com/blacklabelops/logrotate。

通过修改dockerd参数进行回卷和清理

由于Kubernetes的日志收集,底层是通过docker来实现。而docker提供了一定的日志回卷和清理功能。可以通过在dockerd的启动参数中,增加log-opts()参数实现对日志的回卷和清理,其中max-size参数设置日志一个副本的最大值,max-file设置日志的最大的副本数。超过这个副本数则会对日志进行删除。

具体的修改过程包括三个步骤:
1、创建/etc/dockerd/daemon.json

{"log-driver":"json-file","log-opts":{"max-size" :"10m","max-file":"3"}
}

参数说明: 设置单个容器日志超过10M则进行回卷,回卷的副本数超过3个就进行清理。

2、修改dockerd 服务配置文件
在 /etc/systemd/system/multi-user.target.wants/dockerd.serviced文件中
添加dockerd启动参数--config-file=/etc/docker/daemon.json

3、重新启动dockerd服务

systemctl daemon-reload
service dockerd restart

相关阅读

8 月最新基于 kubernetes 的应用编排实践

5 种 Docker 日志最佳实践

一文教你迅速解决分布式事务 XA 一致性问题

此文已由作者授权腾讯云技术社区发布,转载请注明文章出处
原文链接:https://cloud.tencent.com/community/article/579587
获取更多腾讯海量技术实践干货,欢迎大家前往腾讯云技术社区

转载于:https://my.oschina.net/qcloudcommunity/blog/1528650

轻松搞定对容器实例日志设置定期清理和回卷 1相关推荐

  1. 轻松搞定对容器实例日志设置定期清理和回卷

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云容器服务团队 ###引言 Kubernetes对于容器实例的日志收集,并没有提供原生的解决方案.但提供使用 kubectl l ...

  2. 四大技巧轻松搞定云容器

    云容器技术,作为传统虚拟化管理程序的一种替代品,正称霸着云市场.容器是轻量级的,并提供增强的便携性,允许应用在平台之间迁移,而不需要开发者重做或重新架构应用.但是,尽管其好处让开发人员感到惊叹,容器仍 ...

  3. 子查询引用外表_轻松搞定慢查询?这一文就够了(内附大量实例助你看懂Explain)...

    原文:https://mp.weixin.qq.com/s/p5UKuh1yY3P4zrOzVBmY1w (复制链接至浏览器,即可查看) 大量实例助你看懂Explain的输出内容,轻松搞定慢查询 EX ...

  4. 2 如何设置窗口title_如何正确的知晓生僻字发音?无需字典查询,2步手机设置轻松搞定...

    我们使用手机进行浏览或者阅读时,是不是会遇到一些生僻字,我们完全就不知不知道这些生僻字的发音.比如说下面这些字: 以上这些字,小酱觉得大家应该很少有能认出来的吧,那么我们遇到这种情况时,很多人的选择应 ...

  5. 如何正确的知晓生僻字发音?无需字典查询,2步手机设置轻松搞定

    我们使用手机进行浏览或者阅读时,是不是会遇到一些生僻字,我们完全就不知不知道这些生僻字的发音.比如说下面这些字: 以上这些字,小酱觉得大家应该很少有能认出来的吧,那么我们遇到这种情况时,很多人的选择应 ...

  6. Iphone手机企业邮箱设置 九步轻松搞定

    Iphone手机企业邮箱设置 九步轻松搞定 随着IPhone4S.IPhone5.小米系列手机的爆棚热销,智能手机迅速成为我们生活必备品.智能手机的便捷性也是随时随地都能派上用场.轻便自不必说,电话沟 ...

  7. explain ref_轻松搞定慢查询?这一文就够了(内附大量实例助你看懂Explain)

    原文:https://mp.weixin.qq.com/s/p5UKuh1yY3P4zrOzVBmY1w (复制链接至浏览器,即可查看) 大量实例助你看懂Explain的输出内容,轻松搞定慢查询 EX ...

  8. 苹果手机怎么设置铃声?不用电脑,轻松搞定

    苹果手机怎么设置铃声?都说最快毁掉一首歌的方法是把它设置为闹铃,而最能证明我们喜欢一首歌的方法就是把它设置为手机铃声.很多安卓手机都可以直接设置铃声,并且随时更换,但是在苹果手机上好像不能这么做,很多 ...

  9. html左右分隔可调整,word里面如何设置横向页面和纵向页面同时显示?分隔符号轻松搞定!...

    在编辑word时,有时候会需要使用横式的表格,像是制作表格等,直式表格常常会有划不下去的状况,相信应该不少人就会选择将版面调整成横式的版面,不过若是直接调整版面配置的方向,会是整个文件一起做调整,那该 ...

最新文章

  1. 在visual studio 2010中调用ffmpeg
  2. Asp.net(C#)-彩色图片转化为黑白
  3. 从零开始学安全(三)●黑客常用的windows端口
  4. [Everyday Mathematics]20150104
  5. ElasticSearch 简介,概念和集成
  6. vue --- Vue中的路由跳转问题
  7. C++学习之路 | PTA乙级—— 1061 判断题 (15 分)(精简)
  8. python课程价格-福田区python课程价格
  9. Swing 显示良好JPanel保存为图片
  10. 洛谷P5170 【模板】类欧几里得算法(数论)
  11. 正找工作的同学看过来——Java项目经验篇
  12. 关于kali的pycharm创建快捷方式
  13. 骨架法matlab,matlab中轴线算法骨架
  14. Spring Cloud项目是如何读取bootstrap.properties文件的?
  15. Easy-x的基础教程使用介绍
  16. 机器人操作系统入门(一)ROS简介
  17. 学习笔记:UDP实现进程心跳检测
  18. (西安电子科技大学,汤小丹等)计算机操作系统——第二章、进程的描述与控制
  19. WebGL入门(二十)-三维视图通过透视投影矩阵创建远小近大的两排三角形
  20. ADS软件下载安装问题请教

热门文章

  1. python基础7--socket
  2. servlet-servletContext简述
  3. HDU 4115 Eliminate the Conflict【2011 ACM Asia Chengdu Regional Problem E】
  4. rCNN学习笔记二:基于R-CNN的物体检测
  5. php 7 xhprof,php7中使用xhprof解析
  6. ios开发 方形到圆的动画_使用UIBezierPath画个圆动画
  7. python处理音频的库_Python中音频处理库pydub的使用教程
  8. mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...
  9. 计算机二级考试办公室高级应用考点,全国计算机二级考试MSOFFICE高级应用考点解析Word1...
  10. 怎么捡自己空投_绝地求生:如何用纸皮自制空投?只需2个道具即可完成,附带教程...