0

有一个将日志打印到 stdout/stderr 的容器,我无法访问主机,所以不能使用节点日志收集器来收集并将它们发送到中央日志系统(这里是 ElasticSearch),有没有办法使用sidecar 容器做这样的事情?

4

1 回答 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 容器共享路径,使用volumeMountsfluentbit sidecar 将能够从该路径读取日志并将其流式传输到 Elasticsearch。您需要在文件中配置弹性搜索的详细信息。fluent-bit.conf

于 2020-07-20T03:08:23.420 回答