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