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