You need to enable JavaScript to run this app.
导航
安装 LogCollector(DaemonSet 方式)
最近更新时间:2025.01.14 11:07:53首次发布时间:2022.05.07 14:30:55

采集容器文本日志或容器标准输出之前,需要先在 Kubernetes 集群中安装 LogCollector,并配置相关环境。本文介绍通过 DaemonSet 方式安装 LogCollector 的操作步骤。

背景信息

通过 DaemonSet 方式在 Kubernetes 集群上安装 LogCollector 后,LogCollector 能够采集其他 Pod 内的容器文本日志或容器标准输出。在安装的过程中,主要完成以下步骤。

  1. 配置 ServiceAccount、ClusterRole、ClusterRoleBinding,完成 LogCollector 的认证和授权。
  2. 创建 LogCollector 的 ConfigMap。
  3. 创建 LogCollector DaemonSet。

Helm 安装方式

说明

已安装 Helm 3 客户端(3.7 之后版本)。具体操作,请参考Helm

1 下载 LogCollector Chart 包

登录待安装 LogCollector 的 Kubernetes 集群,然后根据集群所在地域,执行对应的下载命令,下载 LogCollector Chart 包。

helm pull oci://logcollector-cn-beijing.cr.volces.com/logcollector/logcollector --version 0.1.0

2 部署 LogCollector Chart 包

执行以下命令部署 LogCollector Chart 包。

helm install logcollector logcollector-0.1.0.tgz \
--namespace={namespace} \
--set region={region} \
--set endpoint={endpoint} \
--set secret_id={secret_id} \
--set secret_key={secret_key} \
--set label={label} \
--set image={image} \
--set logcollector_data={logcollector_data}

注意

  • 如果报错 Error: INSTALLATION FAILED: Unable to continue with install: ClusterRole "logcollector" in namespace "" exists and cannot be imported into the current release……,说明已经安装 Logcollector 同名的ClusterRole,则需要先执行 kubectl delete clusterrole logcollector 删除该 ClusterRole。
  • 如果报错 Error: INSTALLATION FAILED: Unable to continue with install: ClusterRoleBinding "logcollector" in namespace "" exists and cannot be imported into the current release……,说明已经安装 Logcollector 同名的ClusterRoleBinding,则需要先执行 kubectl delete clusterrolebinding logcollector 删除该 ClusterRoleBinding。

其中,regionendpointsecret_idsecret_keylabelimagelogcollector-data 为必选参数,详细说明如下。

参数

是否必选

示例

说明

region

必选

cn-beijing

日志项目所在的地域 ID。详细说明请参考服务地址

endpoint

必选

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

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

secret_id

必选

AK********

火山引擎账号或 IAM 用户的 Access Key ID。
您可以在火山引擎控制台密钥管理页面,获取 Access Key ID。

secret_key

必选

TUdZ********

火山引擎账号或 IAM 用户的 Secret Access Key。
您可以在火山引擎控制台密钥管理页面,获取 Secret Access Key。

label

必选

http_module

LogCollector 的 label 标识。

  • 如果需要将此 LogCollector 加入机器标识类型的机器组中,则必须设置 label 参数。
  • 支持配置多个 label 标识,多个 label 标识之间通过逗号(,)分隔。

namespace

必选

kube-system

LogCollector 命名空间。只支持指定一个,且确保该命名空间已存在。
如果命名空间不存在,将部署失败。

image

必选

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

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

logcollector-data

必选

/var/lib/logcollector-data

存储 LogCollector CheckPoint 状态的节点目录,用于确保 LogCollector Pod 重启之后 LogCollector 不会重复采集日志。

Shell 脚本安装方式

1 下载 LogCollector 安装包

登录用于安装 LogCollector 的 Kubernetes 集群,然后根据集群地域与网络类型,执行对应的下载命令,将 LogCollector 安装包下载到指定目录下。

私网下载地址

wget https://logcollector-cn-beijing.tos-cn-beijing.ivolces.com/logcollector.tgz; tar -xzf logcollector.tgz; chmod 755 ./logcollector/logcollector.sh

公网下载地址

wget https://logcollector-cn-beijing.tos-cn-beijing.volces.com/logcollector.tgz; tar -xzf logcollector.tgz; chmod 755 ./logcollector/logcollector.sh

2 安装 LogCollector

执行以下命令安装 LogCollector。

./logcollector/logcollector.sh install --region {region} --endpoint {endpoint} --secret_id {secret_id} --secret_key {secret_key} --label {label} --namespace {namespace} --image {image} --logcollector_data {logcollector_data}

其中,regionendpointsecret_idsecret_keylabellogcollector-data为必选参数,namepspaceimage为可选参数,详细说明如下。

参数

是否必选

示例

说明

region

必选

cn-beijing

日志项目所在的地域 ID。详细说明请参考服务地址

endpoint

必选

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

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

secret_id

必选

AK********

火山引擎账号或 IAM 用户的 Access Key ID。
您可以在火山引擎控制台密钥管理页面,获取 Access Key ID。

secret_key

必选

TUdZ********

火山引擎账号或 IAM 用户的 Secret Access Key。
您可以在火山引擎控制台密钥管理页面,获取 Secret Access Key。

label

必选

http_module

LogCollector 的 label 标识。

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

namespace

可选

kube-system

LogCollector 命名空间。
如果没有指定命名空间,将使用 kube-system 命名空间。如果命名空间不存在,将创建命名空间。

image

可选

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

LogCollector 镜像地址。如果没有指定镜像地址,将使用指定地域对应的最新版本镜像地址。最新版本镜像地址请参考 LogCollector 镜像地址

logcollector-data

必选

/var/lib/logcollector-data

存储 LogCollector CheckPoint 状态的节点目录,用于确保 LogCollector Pod 重启之后 LogCollector 不会重复采集日志。

手动安装方式

1 创建 Namespace

此步骤会创建一个 Namespace。

  1. 登录需要安装 LogCollector 的 Kubernetes 集群。

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

    vim logcollector_ns.yaml
    
  3. 编辑 YAML 文件,并在 YAML 文件中输入以下内容。
    根据实际情况,完成如下参数配置。

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

    参数说明如下:

    参数

    示例

    说明

    name

    kube-system

    命名空间名称。

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

    kubectl apply -f logcollector_ns.yaml
    

2 创建 ServiceAccount

为 LogCollector 创建一个 ServiceAccount,并配置基本的身份信息。

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

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

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: logcollector
      namespace: <namespace>
    

    参数

    示例

    说明

    namespace

    kube-system

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

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

    kubectl apply -f logcollector_sa.yaml
    

3 创建 ClusterRole

为 LogCollector 创建 ClusterRole。

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

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

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: logcollector
    rules:
      - apiGroups:
          - ""
        resources:
          - pods
          - nodes
          - namespaces
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - apps
        resources:
          - replicasets
          - deployments
          - daemonsets
          - statefulsets
        verbs:
          - watch
          - list
          - get
      - apiGroups:
          - batch
        resources:
          - jobs
          - cronjobs
        verbs:
          - watch
          - list
          - get
    
  3. 执行如下命令使 ClusterRole 配置生效。

    kubectl apply -f logcollector_cr.yaml
    

4 创建 ClusterRoleBinding

为 LogCollector 创建一个 ClusterRoleBinding。

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

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

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: logcollector
    subjects:
      - kind: ServiceAccount
        name: logcollector
        namespace: <namespace>
    roleRef:
      kind: ClusterRole
      name: logcollector
      apiGroup: rbac.authorization.k8s.io
    

    参数说明如下:

    参数

    示例

    说明

    namespace

    kube-system

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

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

    kubectl apply -f logcollector_crb.yaml
    

5 创建 ConfigMap

为 LogCollector 创建一个 ConfigMap。

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

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

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: logcollector-config
      namespace: <namespace>
    data:
      logcollector.yml: |
        daemonset_mode: true
    
        autodiscover:
          providers:
            - type: kubernetes
              node: ${NODE_NAME}
    
        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.volces.com

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

    secret_id

    AK********

    火山引擎账号或 IAM 用户的 Access Key ID。
    您可以在火山引擎控制台密钥管理页面,获取 Access Key ID。

    secret_key

    TUdZ********

    火山引擎账号或 IAM 用户的 Secret Access Key。
    您可以在火山引擎控制台密钥管理页面,获取 Secret Access Key。

    label

    http_module

    LogCollector 的 label 标识。

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

    kubectl apply -f logcollector_config.yaml
    

6 创建 Daemonset

为 LogCollector 创建 Daemonset,用于采集当前节点中的日志。

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

    vim logcollector_ds.yaml
    
  2. 在 YAML 文件中输入如下内容,并根据实际情况替换其中的参数。

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: logcollector
      namespace: <namespace>
      labels:
        k8s-app: logcollector
        app.kubernetes.io/instance: logcollector
    spec:
      selector:
        matchLabels:
          k8s-app: logcollector
      template:
        metadata:
          labels:
            k8s-app: logcollector
        spec:
          serviceAccountName: logcollector
          terminationGracePeriodSeconds: 65
          containers:
            - 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
              securityContext:
                runAsUser: 0
                # If using Red Hat OpenShift, uncomment this:
                # privileged: true
              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-host
                  mountPath: /logcollector_host
                  mountPropagation: HostToContainer
                  readOnly: true
                - name: logcollector-data
                  mountPath: /usr/local/container/logcollector/data
              env:
                - name: MAX_MEM
                  valueFrom:
                    resourceFieldRef:
                      containerName: logcollector
                      resource: limits.memory
                - name: MAX_PROCS
                  valueFrom:
                    resourceFieldRef:
                      containerName: logcollector
                      resource: limits.cpu
                - name: NODE_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
                - name: NODE_IP
                  valueFrom:
                    fieldRef:
                      fieldPath: status.hostIP                  
          volumes:
            - name: logcollector-config
              configMap:
                defaultMode: 420
                name: logcollector-config
            - name: logcollector-host
              hostPath:
                path: /
            - name: logcollector-data
              hostPath:
                path: <logcollector_data>
                type: DirectoryOrCreate
    

    参数说明如下:

    参数

    示例

    说明

    namespace

    kube-system

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

    image

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

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

    logcollector-data

    /var/lib/logcollector-data

    存储 LogCollector CheckPoint 状态的节点目录,保证 LogCollector Pod 重启之后 LogCollector 不会重复采集日志。

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

    kubectl apply -f logcollector_ds.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