You need to enable JavaScript to run this app.
导航

安装 LogCollector CRD

最近更新时间2023.12.18 18:48:39

首次发布时间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。

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

    日志项目所在的地域(Region)。 日志服务地域及对应 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。

  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
      verbs:
      - create
      - update
      - get
    - apiGroups: [""]
      resources:
      - events
      verbs:
      - create
      - patch
      - update
    
  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 镜像地址

    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
    

LogCollector 镜像地址

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

地域

镜像地址

华北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