参考文献:
https://mp.weixin.qq.com/s/7Rq0LFhIs8oJoDRmNqrKqw
image
日志最主要的采集工具是 Agent,在 Kubernetes 场景下
,通常会分为两种采集方式:
-
DaemonSet 方式
:在 K8S 的每个 node 上部署日志 agent,由 agent 采集所有容器的日志到服务端。 -
Sidecar 方式
:一个 POD 中运行一个 sidecar 的日志 agent 容器,用于采集该POD 主容器产生的日志
。
每种采集方式都有其对应的优缺点
,这里简单总结如下:
DaemonSet方式 | Sidecar方式 | |
---|---|---|
采集日志类型 | 标准输出+部分文件 | 文件 |
部署运维 | 一般,需维护 DaemonSet | 较高,每个需要采集日志的 POD 都需要部署 sidecar 容器 |
日志分类存储 | 一般,可通过容器 / 路径等映射 | 每个 POD 可单独配置,灵活性高 |
多租户隔离 | 一般,只能通过配置间隔离 | 强,通过容器进行隔离,可单独分配资源 |
支持集群规模 | 中小型规模,业务数最多支持百级别 | 无限制 |
资源占用 | 较低,每个节点运行一个容器 | 较高,每个 POD 运行一个容器 |
查询便捷性 | 较高,可进行自定义的查询、统计 | 高,可根据业务特点进行定制 |
可定制性 | 低 | 高,每个 POD 单独配置 |
使用场景 | 功能单一型的集群 | 大型、混合型、PAAS 型集群 |
在阿里内部
,对于大型的 PAAS 集群
,主要使用Sidecar 方式
采集数据,相对隔离性、灵活性
最好;
而对与功能比较单一
(部门内部
/ 产品自建
)的集群,基本都采用 DaemonSet
的方式,`资源占用最低。