收集系统插件日志

系统插件(Addon)使用Kubernetes资源(DaemonSet、Deployment等)实现集群的存储、网络等功能,这些资源部署于kube-system命名空间之下。本文介绍如何配置收集存储、网络、弹性伸缩等主要系统插件的日志功能。

前提条件

安装日志采集组件

  • 日志组件为Logtail组件时,确保日志应用alibaba-log-controller版本不低于0.2.0.0-76648ee-aliyun。logcontroller

    如果alibaba-log-controller版本低,可直接升级Logtail组件。关于如何升级组件,请参见组件

  • LoongCollector组件,无版本限制。

步骤一:创建系统插件的日志配置文件

日志采集配置针对ACK进行了自定义资源CRD扩展,您可以直接部署AliyunLogConfigCRD配置,Log Controller会自动创建日志服务相关采集配置和报表资源。关于如何创建自定义资源,请参见管理自定义资源

根据以下示例创建存储、Terway网络、Flannel网络及弹性伸缩的AliyunLogConfig配置文件。

  • 存储CSI插件的日志配置示例:

    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      #您的配置名称在K8s集群中必须是唯一的。
      name: k8s-csi-log
      namespace: kube-system
    spec:
      #用于上传日志的logstore名称。
      logstore: k8s-csi-log
      #logtail配置详细信息。
      logtailConfig:
        #Docker标准输出的输入类型为“plugin”。
        inputType: plugin
        #logtail配置名称,应与[metadata.name]相同。
        configName: k8s-csi-log
        inputDetail:
          plugin:
            inputs:
              -
                #输入类型。
                type: service_docker_stdout
                detail:
                  #收集stdoutstderr。
                  Stdout: true
                  Stderr: true
                  K8sNamespaceRegex: "^kube-system$"
                  K8sPodRegex: "^csi.*$"
  • Terway网络插件的日志配置示例:

    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      #您的配置名称在K8s集群中必须是唯一的。
      name: k8s-terway-log
      namespace: kube-system
    spec:
      #用于上传日志的logstore名称。
      logstore: k8s-terway-log
      #logtail配置详细信息。
      logtailConfig:
      #Docker标准输出的输入类型为“plugin”。
        inputType: plugin
        #logtail配置名称,应与[metadata.name]相同。
        configName: k8s-terway-log
        inputDetail:
          plugin:
            inputs:
              -
                #输入类型。
                type: service_docker_stdout
                detail:
                  #收集stdoutstderr。
                  Stdout: true
                  Stderr: true
                  K8sNamespaceRegex: "^kube-system$"
                  K8sPodRegex: "^terway-eniip.*$"
  • Flannel网络插件的日志配置示例:

    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      #您的配置名称在K8s集群中必须是唯一的。
      name: k8s-flannel-log
      namespace: kube-system
    spec:
      #用于上传日志的logstore名称。
      logstore: k8s-flannel-log
      #logtail配置详细信息。
      logtailConfig:
        #Docker标准输出的输入类型为“plugin”。
        inputType: plugin
        #logtail配置名称,应与[metadata.name]相同。
        configName: k8s-flannel-log
        inputDetail:
          plugin:
            inputs:
              -
                #输入类型。
                type: service_docker_stdout
                detail:
                  #收集stdoutstderr。
                  Stdout: true
                  Stderr: true
                  K8sNamespaceRegex: "^kube-system$"
                  K8sPodRegex: "^kube-flannel-ds.*$"
  • 弹性伸缩插件的日志配置示例:

    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      #您的配置名称在K8s集群中必须是唯一的。
      name: k8s-cluster-autoscaler-log
      namespace: kube-system
    spec:
      #用于上传日志的logstore名称。
      logstore: k8s-cluster-autoscaler-log
      #logtail配置详细信息。
      logtailConfig:
        #Docker标准输出的输入类型为“plugin”。
        inputType: plugin
        #logtail配置名称,应与[metadata.name]相同。
        configName: k8s-cluster-autoscaler-log
        inputDetail:
          plugin:
            inputs:
              -
                #输入类型。
                type: service_docker_stdout
                detail:
                  #收集stdoutstderr。
                  Stdout: true
                  Stderr: true
                  K8sNamespaceRegex: "^kube-system$"
                  K8sPodRegex: "^cluster-autoscaler.*$"

步骤二:查看日志

关于如何查看日志,请参见采集ACK集群容器日志