k8s日志收集架构
k8s日志收集架构
https://kubernetes.io/docs/concepts/cluster-administration/logging/
容器日志的存储
-
Docker容器的日志
容器日志驱动:
https://docs.docker.com/config/containers/logging/configure/
查看当前的docker主机的驱动:
$ docker info --format '{{.LoggingDriver}}'json-file格式,docker会默认将标准和错误输出保存为宿主机的文件,路径为:
/var/lib/docker/containers/<container-id>/<container-id>-json.log并且可以设置日志轮转:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3",
"labels": "production_status",
"env": "os,customer"
}
} -
k8s Pod的日志存储
$ ll /var/log/pods/
总体分为三种方式:
- 使用在每个节点上运行的节点级日志记录代理。
- 在应用程序的 pod 中,包含专门记录日志的 sidecar 容器。
- 将日志直接从应用程序中推送到日志记录后端。
使用节点级日志代理

优势:
- 部署方便,使用DaemonSet类型控制器来部署agent即可
- 对业务应用的影响最小,没有侵入性
劣势:
- 只能收集标准和错误输出,对于容器内的文件日志,暂时收集不到