想要使用 filebeat 等第三方日志收集工具采集业务容器日志, 如何将业务容器的日志暴露给 filebeat ,可以通过超级节点注入 Daemonset 容器实现, 这里给出一个最小挂载配置的示例 YAML 供参考(注意日志收集逻辑需要业务自行配置)。
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
k8s-app: filebeat
name: filebeat
namespace: kube-system
spec:
selector:
matchLabels:
k8s-app: filebeat
template:
metadata:
annotations:
eks.tke.cloud.tencent.com/ds-injection: "true"
labels:
k8s-app: filebeat
spec:
containers:
- name: filebeat
image: filebeat:8.0.0
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /var/log/containers
name: containers-log
readOnly: true
- mountPath: /var/log/pods
name: pods-log
readOnly: true
volumes:
- hostPath:
path: /var/log/pods # 需确保 pods 标准输出日志的真实文件目录被挂载,要不然无法获取日志。
type: ""
name: pods-log
- hostPath:
path: /var/log/containers # 挂载容器日志的软链目录
type: ""
name: containers-log
tolerations:
- key: eks.tke.cloud.tencent.com/eklet
operator: Exists
effect: NoSchedule
本示例 filebeat 感知的收集目录格式为/var/log/containers/<pod_name>_<namespace>_<container_name>-<container_id>.log
,可登陆容器查看相关目录文件是否可以获取容器日志:
cat /var/log/containers/<pod_name>_<namespace>_<container_name>-<container_id>.log
注意如果登陆或查看注入容器报错 “container xxx is not valid for pod xxx” ,请使用官网文档描述的 kubectl 版本(linux 版本),下载命令:curl -LO "https://dl.k8s.io/release/v1.16.0/bin/linux/amd64/kubectl"
参考文档:
超级节点 Daemonset 注入:https://cloud.tencent.com/document/product/457/98730
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。