You need to enable JavaScript to run this app.
导航
安装 LogCollector(Sidecar 方式)
最近更新时间:2025.01.14 11:07:53首次发布时间:2023.03.03 16:39:59

本文介绍如何在 Kubernetes 集群上以 Sidecar 方式安装 LogCollector。

背景信息

通过 Sidecar 模式安装的 LogCollector,只支持采集 LogCollector 所在 Pod 内的其他容器的文本日志,不支持采集容器标准输出;也不支持采集其他 Pod 内的容器文本日志或标准输出。
在安装的过程中,主要完成以下步骤:

  1. 创建 LogCollector 的 ConfigMap。
  2. 创建 LogCollector Sidecar。

操作步骤

登录需要安装 LogCollector 的 Kubernetes 集群后,参考以下步骤以 Sidecar 方式部署 LogCollector。

1 创建 Namespace

为 LogCollector 创建一个 Namespace。

  1. 创建一个 YAML 文件,名为 logcollector_ns.yaml

    vim logcollector_ns.yaml
    
  2. 在 YAML 文件中输入如下内容。

    apiVersion: v1
    kind: Namespace
    metadata:
      name: <namespace>
    

    参数说明如下:

    参数

    示例

    说明

    namespace

    kube-system

    命名空间名称。

  3. 执行如下命令使 Namespace 配置生效。

    kubectl apply -f logcollector_ns.yaml
    

2 创建 ConfigMap

为 LogCollector 创建一个 ConfigMap。

  1. 创建一个 YAML 文件,文件名为 logcollector_config.yaml

    vim logcollector_config.yaml
    
  2. 编辑 YAML 文件,并在 YAML 文件中输入以下脚本。
    根据实际情况,在脚本中配置相关参数。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: logcollector-config
      namespace: <namespace>
    data:
      logcollector.yml: |
        sidecar_mode: true
    
        output:
          tls:
            region: <region>
            endpoint: <endpoint>
            secret_id: <secret_id>
            secret_key: <secret_key>
            label: <label>
    

    参数说明如下:

    变量

    示例

    说明

    namespace

    kube-system

    命名空间。输入您在1 创建 Namespace中设置的命名空间。

    region

    cn-beijing

    日志项目所在的地域。
    日志服务地域及对应ID请参考服务入口

    endpoint

    https://tls-cn-beijing.ivolces.com

    日志服务连接域名,即服务地址。
    登录火山引擎控制台后,您可以在日志项目的详情页中查看连接域名。详细说明请参考服务入口

    secret_id

    AK********

    火山引擎主账号或子账号的 Access Key ID。
    您可以在火山引擎控制台密钥管理页面,查看并复制 Access Key ID。

    secret_key

    TUdZ********

    火山引擎主账号或子账号的 Secret Access Key。
    您可以在火山引擎控制台密钥管理页面,查看并复制 Secret Access Key。

    label

    http_module

    LogCollector 的 label 标识。

    • 如果需要将此 LogCollector 加入机器标识类型的机器组中,则必须设置 label 参数。同时,您在创建机器标识类型的机器组时,需设置自定义标识为该 label。详细说明,请参考机器组概述
    • 支持配置多个 label 标识,多个 label 标识之间通过逗号(,)分隔。
  3. 执行以下命令,使 ConfigMap 配置生效。

    kubectl apply -f logcollector_config.yaml
    

3 创建 Sidecar

为 LogCollector 创建一个 Sidecar,用于采集在同一 Pod 内的其他容器的文本日志。

  1. 创建一个 YAML 文件,名为 logcollector_sc.yaml

    vim logcollector_sc.yaml
    
  2. YAML 文件输入如下内容,并根据实际情况设置其中的参数。

    apiVersion: v1
    kind: Pod
    metadata:
      name: sidecar-demo
      namespace: <namespace>
    spec:
      containers:
        - name: generator
          image: busybox:1.28
          args:
            - /bin/sh
            - -c
            - >
              i=0;
              while true;
              do
                echo "$i: $(date)" >> /var/log/foo.log;
                i=$((i+1));
                sleep 1;
              done
          volumeMounts:
            - name: logs-dir
              mountPath: /var/log
        - name: logcollector
          image: <image>
          imagePullPolicy: Always
          args:
            - /usr/local/container/logcollector/logcollectord
            - -c
            - /usr/local/container/logcollector/etc/logcollector.yml
            - --httpprof
            - 0.0.0.0:6060
          resources:
            limits:
              cpu: '2'
              memory: 2Gi
            requests:
              cpu: '1'
              memory: 1Gi
          volumeMounts:
            - name: logcollector-config
              mountPath: /usr/local/container/logcollector/etc
              readOnly: true
            - name: logcollector-data
              mountPath: /usr/local/container/logcollector/data
            - name: logs-dir
              mountPath: /var/log
          env:
            - name: "LOG_COLLECTOR_ENV_TAGS"
              value: "__pod_name__|__pod_ip__|__namespace__|__node_name__|__node_ip__"
            - name: "__pod_name__"
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: "__pod_ip__"
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: "__namespace__"
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: "__node_name__"
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
            - name: "__node_ip__"
              valueFrom:
                fieldRef:
                  fieldPath: status.hostIP
            - name: MAX_MEM
              valueFrom:
                resourceFieldRef:
                  containerName: logcollector
                  resource: limits.memory
            - name: MAX_PROCS
              valueFrom:
                resourceFieldRef:
                  containerName: logcollector
                  resource: limits.cpu
      volumes:
        - name: logcollector-config
          configMap:
            defaultMode: 420
            name: logcollector-config
        - name: logcollector-data
          emptyDir: { }
        - name: logs-dir
          emptyDir: { }
    

    变量

    示例

    说明

    namespace

    kube-system

    命名空间。输入您在1 创建 Namespace中设置的命名空间。

    image

    logcollector-cn-beijing.cr.volces.com/logcollector/logcollector:latest

    LogCollector 的镜像地址。最新版本 LogCollector 的镜像地址请参考LogCollector 镜像地址

  3. 执行以下命令,使 Sidecar 配置生效。

    kubectl apply -f logcollector_sc.yaml
    

LogCollector 镜像地址

日志服务在各个区域提供的最新版本 LogCollector 镜像地址如下:

地域

镜像地址

华北2(北京)

logcollector-cn-beijing.cr.volces.com/logcollector/logcollector:latest

华东2(上海)

logcollector-cn-shanghai.cr.volces.com/logcollector/logcollector:latest

华南1(广州)

logcollector-cn-guangzhou.cr.volces.com/logcollector/logcollector:latest

柔佛(亚太东南)

logcollector-ap-southeast-1.cr.volces.com/logcollector/logcollector:latest