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

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

背景信息

通过 LogCollector CRD 方式创建采集配置时,在 Kubernetes 集群中安装 LogCollector 后,还需安装 LogCollector CRD。LogCollector CRD 安装过程中,主要完成以下步骤:

  1. 安装 LogCollectorRule CRD。
  2. 安装 LogCollector Controller。
    1. 配置 ServiceAccount、ClusterRole 和 ClusterRoleBinding,完成 LogCollector Controller 的认证和授权。
    2. 创建 LogCollector Controller 的 ConfigMap。
    3. 创建 LogCollector Controller Deployment。

前提条件

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

Helm 安装方式

说明

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

1 下载 LogCollector Controller Chart 包

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

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

2 部署 LogCollector Controller Chart 包

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

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

其中,regionendpointsecret_idsecret_keyimage为必选参数,详细说明如下。

参数

是否必选

示例

说明

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。

namespace

必选

kube-system

LogCollector Controller 命名空间。
命名空间必须已存在,如果命名空间不存在,将部署失败。

image

必选

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

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

注意

  • 如果报错 Error: INSTALLATION FAILED: Unable to continue with install: CustomResourceDefinition "collectrules.logging.vke.volcengine.com" in namespaceexists and cannot be imported into the current release……,说明已经安装了与 collectrules.logging.vke.volcengine.com 同名的 CustomResourceDefinition,即需要执行 kubectl delete crd collectrules.logging.vke.volcengine.com 命令删除 CustomResourceDefinition。
  • 如果报错 Error: INSTALLATION FAILED: Unable to continue with install: ClusterRole "logcollector-controller" in namespaceexists and cannot be imported into the current release……,说明已经安装了与 logcollector-controller 同名的 ClusterRole,即需要执行 kubectl delete clusterrole logcollector-controller 命令先删除 ClusterRole。
  • 如果报错 Error: INSTALLATION FAILED: Unable to continue with install: ClusterRoleBinding "logcollector-controller" in namespaceexists and cannot be imported into the current release……,说明已经安装了与 logcollector-controller 同名的 ClusterRoleBinding,即需要执行 kubectl delete clusterrolebinding logcollector-controller 命令先删除 ClusterRoleBinding。

脚本安装方式

1 下载 LogCollector 安装包

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

私网下载地址

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

公网下载地址

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

2 安装 LogCollector Controller

执行以下命令安装 LogCollector Controller。

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

其中,regionendpointsecret_idsecret_key 为必选参数,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。

namespace

可选

kube-system

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

image

可选

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

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

手动安装方式

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

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 配置生效。

    kubectl apply -f crd.yaml
    

2 安装 LogCollector Controller

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

2.1 创建 Namespace

为 LogCollector Controller 创建一个 Namespace。

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

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

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

    参数说明如下:

    参数

    示例

    说明

    namespace

    kube-system

    命名空间名称。

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

    kubectl apply -f logcollector_controller_ns.yaml
    

2.2 创建 ServiceAccount

为 LogCollector Controller 创建一个 ServiceAccount。

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

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

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

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

    参数

    示例

    说明

    namespace

    kube-system

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

  4. 执行以下命令,使 ServiceAccount 配置生效。

    kubectl apply -f logcollector_controller_sa.yaml
    

2.3 创建 ClusterRole

为 LogCollector Controller 创建 ClusterRole。

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

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

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

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: logcollector-controller
    rules:
      - apiGroups:
          - logging.vke.volcengine.com
        resources:
          - collectrules
          - collectrules/status
          - collectrules/finalizers
        verbs:
          - get
          - list
          - watch
          - create
          - update
          - patch
          - delete
          - deletecollection
      - apiGroups:
          - ""
        resources:
          - configmaps
          - secrets
          - events
        verbs:
          - watch
          - list
          - get
      - 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. 执行以下命令,使 ClusterRole 配置生效。

    kubectl apply -f logcollector_controller_cr.yaml
    

2.4 创建 ClusterRoleBinding

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

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

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

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

    参数

    示例

    说明

    namespace

    kube-system

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

  4. 执行以下命令,使 ClusterRoleBinding 配置生效。

    kubectl apply -f logcollector_controller_crb.yaml
    

2.5 创建 ConfigMap

创建一个 LogCollector Controller 的 ConfigMap。

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

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

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

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: logcollector-controller-config
      namespace: <namespace>
    data:
      region: "<region>"
      endpoint: "<endpoint>"
      secret_id: "<secret_id>"
      secret_key: "<secret_key>"
    

    参数

    示例

    说明

    namespace

    kube-system

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

    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. 执行以下命令,使 ConfigMap 配置生效。

    kubectl apply -f logcollector_controller_config.yaml
    

2.6 创建 Deployment

为 LogCollector Controller 创建一个 Deployment。

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

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

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: logcollector-controller
      namespace: <namespace>
      labels:
        k8s-app: logcollector-controller
        app.kubernetes.io/instance: logcollector-controller
    spec:
      selector:
        matchLabels:
          k8s-app: logcollector-controller
      replicas: 1
      template:
        metadata:
          labels:
            k8s-app: logcollector-controller
        spec:
          serviceAccountName: logcollector-controller
          containers:
            - name: logcollector-controller
              image: <image>
              imagePullPolicy: Always
              resources:
                limits:
                  cpu: 4000m
                  memory: 4000Mi
                requests:
                  cpu: 100m
                  memory: 100Mi
              env:
                - name: "TLS_REGION"
                  valueFrom:
                    configMapKeyRef:
                      name: logcollector-controller-config
                      key: region
                - name: "TLS_HOST"
                  valueFrom:
                    configMapKeyRef:
                      name: logcollector-controller-config
                      key: endpoint
                - name: "VOLC_ACCESSKEY"
                  valueFrom:
                    configMapKeyRef:
                      name: logcollector-controller-config
                      key: secret_id
                - name: "VOLC_SECRETKEY"
                  valueFrom:
                    configMapKeyRef:
                      name: logcollector-controller-config
                      key: secret_key
    

    参数

    示例

    说明

    namespace

    kube-system

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

    image

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

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

  4. 执行以下命令,使 Deployment 配置生效。

    kubectl apply -f logcollector_controller_ds.yaml
    

LogCollector Controller 镜像地址

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

地域

镜像地址

华北2(北京)

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

华东2(上海)

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

华南1(广州)

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

柔佛(亚太东南)

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