【运维面试】k8s的日志你们是如何收集与管理的?

这时候千万不要泛泛的回答用ELK了,因为这种回答和没回答是一样的。

一般有三种方式:

  1. 将fluentd项目安装在宿主机上,然后把日志转发到远端的elsticSearch里保存起来以备检索。
    这样做的优点是: 在一个节点上只需要部署一个agent,并且不会对应用和pod有任何***性,这种用的比较多一些。
    缺点: 它要求应用输出日志,都必须直接输出到容器的stdout和stderr里

  2. 第二种方案:当容器日志只能输出某些文件的时候,我们可以通过一个sidecar容器把这些日志文件,重新输出到sidecar的stdout和stderr上,然后在使用第一种方案。

其实第二种方案就是对第一种方案缺点的补充

  1. 第三种方案,通过一个sidecar的容器,直接把应用的日志发送到远程存储里面。

这种其实也是第一种的延伸,就是把fluentd部署到pod中,后端存储还是可以用elasticsearch,知识fluentd输入源变成了应用文件日志。
但是这种方法sidecar容器会消耗过多资源。

日过日志量特比大,我们可以增加配额: 给容器上挂存储,讲日志输出到存储上。

你在回答这个问题的时候,可以说第一种方式,只要你们的日志量不大即可,如果大的话,需要加存储。

上一篇:阿里巴巴如何提升构建的效率 | 阿里巴巴DevOps实践指南


下一篇:「Kubernetes」- 使用 Fluentd 收集日志 @20210414