更新时间:2025-08-07 GMT+08:00
分享

通过Sidecar采集日志

可通过hostpath-replacement将hostPath替换为CCI支持的emptyDir,通过pod-sidecars注入日志采集Sidecar,通过mount-stdlog-containers使日志采集Sidecar容器增加容器标准输出日志挂载。

前提条件

通过Sidecar采集日志前,您需要先参考配置Sidecar工具容器章节配置Sidecar工具容器。

约束与限制

“volume.cci.io/mount-stdlog-containers”和“volume.cci.io/mount-stdlog-containers-path”不支持同时配置。

通过YAML创建

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    version: v1
    bursting.cci.io/burst-to-cci: enforce
  name: deploy-example
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deploy-example
      version: v1
  template:
    metadata:
      annotations:
        bursting.cci.io/hostpath-replacement: '[{"name":"log","policyType":"replaceByEmptyDir","emptyDir":{"sizeLimit":"10Gi"}}]'
        bursting.cci.io/pod-sidecars: '{"containers":[{"name":"log-sidecar","image":"fluent-bit:latest","resources":{},"volumeMounts":[{"name":"log","mountPath":"/tmp/log"}],"position":"tail"}]}'
        volume.cci.io/mount-stdlog-containers: log-sidecar #指定需要挂载容器标准输出日志的容器名
      labels:
        app: deploy-example
        version: v1
    spec:
      containers:
      - image: nginx:latest
        name: nginx
        resources:
          limits:
            cpu: "1"
            memory: 2Gi
          requests:
            cpu: "1"
            memory: 2Gi
        volumeMounts:
        - mountPath: /tmp/log
          name: log
      imagePullSecrets:
        - name: default-secret
      volumes:
      - hostPath:
          path: /local/log
        name: log

通过以上方式配置,Sidecar工具容器可采集的日志可以分为以下两种:

  • 标准输出。业务容器的标准输出日志会被挂载到/var/log/pods路径下,Sidecar可以以文件的方式收集业务容器的标准输出日志。
  • 文件日志。业务容器将日志文件输出到和Sidecar共享的Volume中,Sidecar可以收集对应Volume内的文本文件。
表1 关键参数Pod的注解说明

Pod的注解

参数类型

描述

示例值

volume.cci.io/mount-stdlog-containers

String

  1. 指定需要挂载容器标准输出日志的容器名,若有多个容器需要挂载则以逗号分隔。也可以配置"*"表示所有容器都进行挂载。如果配置了"*"则不可再配置其它容器名。
  2. 匹配了该注解的容器,在启动后会将包含该Pod所有容器标准输出日志的目录挂载到容器内的/var/log/pods路径。

示例一:

"container-0,container-1"

示例二:

"*"

volume.cci.io/mount-stdlog-containers-path

String

  1. 以json格式指定需要挂载容器标准输出日志的容器名和容器内挂载路径。容器名配置"*"表示所有容器都进行挂载。如果配置了"*"则不可再配置其它容器名。
  2. 匹配了该注解的容器,在启动后会将包含该Pod所有容器标准输出日志的目录挂载到配置指定的路径。

示例一:

"{\"container-0\":\"/var/log/pods\",\"container-1\":\"/tmp/log/pods\"}"

示例二:

"{\"*\":\"/tmp/log/pods\"}"

相关文档