有一个将日志打印到 stdout/stderr 的容器,我无法访问主机,所以不能使用节点日志收集器来收集并将它们发送到中央日志系统(这里是 ElasticSearch),有没有办法使用sidecar 容器做这样的事情?
问问题
2493 次
1 回答
4
您可以使用fluentbit作为 sidecar 将日志发送到 Elasticsearch。为此,您无需在主机中运行任何进程。下面是一个示例 yaml。
apiVersion: apps/v1
kind: Deployment
metadata:
name: fluentbit-logging-sidecar
spec:
selector:
matchLabels:
app: fluentbit-logging-sidecar
replicas: 1
template:
metadata:
labels:
app: fluentbit-logging-sidecar
volumes:
- name: shared-data
emptyDir: {}
- name: config-volume
configMap:
name: fb-agent-config
containers:
- name: sample-logging
image: <image>
volumeMounts:
- name: shared-data
mountPath: /app/logs
- name: fb-sidecar
image: fluent/fluent-bit
volumeMounts:
- name: shared-data
mountPath: /app/logs
- name: config-volume
mountPath: /fluent-bit/etc/fluent-bit.conf
subPath: fluent-bit.conf
您需要配置您的应用程序以在路径中写入文件系统的日志/app/logs
。因为应用程序容器和 fluentbit 容器共享路径,使用volumeMounts
fluentbit sidecar 将能够从该路径读取日志并将其流式传输到 Elasticsearch。您需要在文件中配置弹性搜索的详细信息。fluent-bit.conf
于 2020-07-20T03:08:23.420 回答