You need to enable JavaScript to run this app.
导航
安装 LogCollector CRD
最近更新时间:2024.07.16 16:07:13首次发布时间:2023.10.13 14:01:11

通过 DaemonSet 或 Sidecar 方式采集日志时,均可以通过 LogCollector CRD 方式创建采集配置。本文档介绍在 Kubernetes 集群中安装 LogCollector CRD 的操作步骤。

背景信息

选择通过 LogCollector CRD 方式创建采集配置时,需在 Kubernetes 集群中安装 LogCollector 后,再安装 LogCollector CRD。其中,手动安装分为以下步骤:

  1. 安装 LogCollectorRule CRD。
    在 Kubernetes 集群中创建一个 YAML 文件,然后应用该 YAML 文件。
  2. 安装 LogCollector Controller。
    创建 LogCollector Controller 的 ConfigMap,配置 ServiceAccount、ClusterRole、ClusterRoleBinding,并创建 Deployment。

前提条件

已在 Kubernetes 集群中安装 LogCollector。详细操作步骤请参考安装 LogCollector(DaemonSet 方式)安装 LogCollector(Sidecar 方式)

自动安装

1 下载 LogCollector CRD 安装包

  1. 登录待安装 LogCollector CRD 的 Kubernetes 集群。
  2. 根据地域与网络类型,执行对应的下载命令,将 LogCollector CRD 安装包下载到指定目录下。
    • 私网下载地址

      wget https://logcollector-cn-guangzhou.tos-cn-guangzhou.ivolces.com/logcollector-crd.tgz; tar xvf logcollector-crd.tgz; chmod 744 ./logcollector-crd/logcollector-crd-install.sh
            ```
    • 公网下载地址

      wget https://logcollector-cn-guangzhou.tos-cn-guangzhou.volces.com/logcollector-crd.tgz; tar xvf logcollector-crd.tgz; chmod 744 ./logcollector-crd/logcollector-crd-install.sh
            ```

2 修改配置文件

  1. 打开配置文件logcollector-crd/values.yaml

  2. 根据实际情况替换其中的参数。

    # =================TLS Common Config=================
    # TLS's endpoint: https://www.volcengine.com/docs/6470/73641, eg https://tls-cn-beijing.volces.com
    endpoint: https://tls-cn-beijing.volces.com
    # TLS's region-ID: cn-beijing, cn-shanghai, cn-guangzhou
    region: cn-beijing
    
    # =================TLS Authority Config=================
    # https://www.volcengine.com/docs/6291/65568
    # Access Key ID
    secret_id: XXXXXXXXXXBcFk4C8sbmXQ8i65XXXXXXXXXX
    #Secret Access Key
    secret_key: XXXXXXXXXX4tX5SHyXv6tZXXXXXXXXXX
    
    # =================LogCollector Controller Config=================
    # logcollector-controller's image address, see https://www.volcengine.com/docs/6470/109796
    # if you don't make sure, you can comment or delete this. This shell will find it by region.
    logcollector-controller-image: logcollector-cn-beijing.cr.volces.com/logcollector-controller/logcollector-controller:latest
    

    参数说明如下:

    参数

    示例

    说明

    endpoint

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

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

    region

    cn-beijing

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

    secret_id

    AK********

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

    secret_key

    TUdZ********

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

    logcollector-controller-image

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

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

3 安装 LogCollector CRD

执行如下命令,安装 LogCollector CRD。

cd logcollector-crd
bash logcollector-crd-install.sh;

手动安装

1 创建 LogCollectorRule CRD

LogCollectorRule CRD 是火山引擎日志服务定义的一种 Kubernetes 资源,用于创建 LogCollector 采集配置。

  1. 登录待安装 LogCollector CRD 的 Kubernetes 集群。

  2. 创建一个 YAML 文件,用于定义 LogCollectorRule CRD。 本文档以 crd.yaml 为例。

    vim crd.yaml
    
  3. 编辑 YAML 文件,在 YAML 文件中输入以下内容。

    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      name: collectrules.logging.vke.volcengine.com
    spec:
      group: logging.vke.volcengine.com
      names:
        kind: CollectRule 
        listKind: CollectRuleList
        plural: collectrules
        singular: collectrule
        shortNames:
        - cr
      scope: Cluster
      versions:
        - name: v1alpha1
          served: true
          storage: true
          subresources:
            status: { }
          schema:
            openAPIV3Schema:
              type: object
              properties:
                spec:
                  x-kubernetes-preserve-unknown-fields: true
                status:
                  x-kubernetes-preserve-unknown-fields: true
      conversion:
        strategy: None
    
  4. 执行以下命令,使 crd.yaml 文件配置生效。 其中,crd.yaml 为文件名,请根据实际情况替换。

    kubectl apply -f crd.yaml
    

2 安装 LogCollector Controller

LogCollector Controller 是一种 Kubernetes 控制器,用于监控和维护 Kubernetes 集群中的 LogCollectorRule CR 状态。当 LogCollector Controller 监控到 LogCollectorRule CR 的创建、更新或销毁时,会在日志服务控制台创建、更新或销毁对应的采集配置。

2.1 创建 ConfigMap

此步骤会创建一个 LogCollector Controller 的 ConfigMap,并在其中添加日志服务的配置信息。

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

  2. 创建一个 YAML 文件,本文档以 config.yaml 为例。

    vim config.yaml
    
  3. 编辑 YAML 文件,并在 YAML 文件中输入以下内容。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: logcollector-controller-configuration
      namespace: kube-system
    data:
      region: cn-beijing
      endpoint: https://tls-cn-beijing.ivolces.com
      secret_id: AK********
      secret_key: TUdZ********
    

    参数

    是否必选

    示例

    说明

    region

    必选

    cn-beijing

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

    endpoint

    必选

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

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

    secret_id

    必选

    AK********

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

    secret_key

    必选

    TUdZ********

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

  4. 执行以下命令,使 config.yaml 文件配置生效。
    其中,config.yaml 为文件名,请根据实际情况替换。

    kubectl apply -f config.yaml
    

2.2 创建 ServiceAccount

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

  1. 登录待安装 LogCollector Controller 的 Kubernetes 集群。

  2. 创建一个 YAML 文件,本文档以 service_account.yaml 为例进行演示。

    vim service_account.yaml
    
  3. 编辑 YAML 文件,并在 YAML 文件中输入以下内容。

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: logcollector-controller
      namespace: kube-system
      labels:
        k8s-app: logcollector-controller
    
  4. 执行以下命令,使 service_account.yaml 文件配置生效。
    其中,service_account.yaml 为文件名,请根据实际情况替换。

    kubectl apply -f service_account.yaml
    

2.3 创建 ClusterRole

为 LogCollector Controller 创建 ClusterRole。

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

  2. 创建一个 YAML 文件。 本文档以 cluster_role.yaml 为例进行演示。

    vim cluster_role.yaml
    
  3. 编辑 YAML 文件,并在 YAML 文件中输入以下内容。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: logcollector-controller
      labels:
        k8s-app: logcollector-controller
    rules:
      - apiGroups: ["logging.vke.volcengine.com"]
        resources:
          - collectrules
        verbs:
          - create
          - delete
          - get
          - list
          - patch
          - update
          - watch
      - apiGroups: ["logging.vke.volcengine.com"]
        resources:
          - collectrules/status
        verbs:
          - get
          - patch
          - update
      - apiGroups: ["logging.vke.volcengine.com"]
        resources:
          - collectrules/finalizers
        verbs:
          - update
      - apiGroups: [""]
        resources:
          - configmaps
          - secrets
        verbs:
          - create
          - update
          - get
          - list
          - watch
      - apiGroups: [""]
        resources:
          - events
        verbs:
          - create
          - patch
          - update
      - 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
    
  4. 执行以下命令,使 cluster_role.yaml 文件配置生效。
    其中,cluster_role.yaml 为文件名,请根据实际情况替换。

    kubectl apply -f cluster_role.yaml
    

2.4 创建 ClusterRoleBinding

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

  2. 创建一个 YAML 文件。 本文档以 cluster_role_binding.yaml 为例进行演示。

    vim cluster_role_binding.yaml
    
  3. 编辑 YAML 文件,并在 YAML 文件中输入以下内容。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: logcollector-controller
    subjects:
    - kind: ServiceAccount
      name: logcollector-controller
      namespace: kube-system
    roleRef:
      kind: ClusterRole
      name: logcollector-controller
      apiGroup: rbac.authorization.k8s.io
    
  4. 执行以下命令,使 cluster_role_binding.yaml 文件配置生效。
    其中,cluster_role_binding.yaml 为文件名,请根据实际情况替换。

    kubectl apply -f cluster_role_binding.yaml
    

2.5 创建 Deployment

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

  2. 创建一个 YAML 文件。本文档以 deploy.yaml 为例进行演示。

    vim deploy.yaml
    
  3. 编辑 YAML 文件,并在 YAML 文件中输入以下内容。

    说明

    • image 字段应指定为当前地域下 LogCollector Controller 镜像地址。各个地域的镜像地址列表请参考 LogCollector Controller 镜像地址
    • 如果您要通过 Pod 环境变量方式创建采集配置,来采集容器文本日志或容器标准输出,则您必须在 LogCollector Controller Pod 中添加环境变量 ENABLE_POD_ENV。示例如下:
      - name: "ENABLE_POD_ENV"
        value: "true"
      
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: logcollector-controller
      namespace: kube-system
      labels:
        k8s-app: logcollector-controller
        kubernetes.io/cluster-service: "true"
    spec:
      selector:
        matchLabels:
          k8s-app: logcollector-controller
      replicas: 1
      template:
        metadata:
          labels:
            k8s-app: logcollector-controller
            name: logcollector-controller
        spec:
          serviceAccountName: logcollector-controller
          containers:
          - name: logcollector-controller
            # 请按照业务所在的region修改对应的镜像地址,各个地域的镜像地址列表请参考下表。
            image: logcollector-cn-beijing.cr.volces.com/logcollector-controller/logcollector-controller:latest
            resources:
              limits:
                cpu: 400m
                memory: 400Mi
              requests:
                cpu: 100m
                memory: 100Mi
            env:
              - name: "TLS_REGION"
                valueFrom:
                  configMapKeyRef:
                    name: logcollector-controller-configuration
                    key: region
              - name: "TLS_HOST"
                valueFrom:
                  configMapKeyRef:
                    name: logcollector-controller-configuration
                    key: endpoint
              - name: "VOLC_ACCESSKEY"
                valueFrom:
                  configMapKeyRef:
                    name: logcollector-controller-configuration
                    key: secret_id
              - name: "VOLC_SECRETKEY"
                valueFrom:
                  configMapKeyRef:
                    name: logcollector-controller-configuration
                    key: secret_key
    
  4. 执行以下命令,使 deploy.yaml 文件配置生效。
    其中,deploy.yaml 为文件名,请根据实际情况替换。

    kubectl apply -f deploy.yaml
    

LogCollector Controller 镜像地址

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

地域

镜像地址

华北2(北京)

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

华东2(上海)

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

华南1(广州)

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