收集系统插件日志

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

前提条件

  • 已安装日志组件logtail-ds。

    在创建集群时,ACK默认选中日志组件logtail-ds。如果您未安装日志组件logtail-ds,关于如何手动安装的操作,请参见通过日志服务采集Kubernetes容器日志

  • 确保日志应用alibaba-log-controller版本不低于0.2.0.0-76648ee-aliyun。logcontroller

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

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

日志采集配置针对ACK进行了自定义资源CRD扩展,您可以直接部署AliyunLogConfig的CRD配置,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:
                  #收集stdout和stderr。
                  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:
                  #收集stdout和stderr。
                  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:
                  #收集stdout和stderr。
                  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:
                  #收集stdout和stderr。
                  Stdout: true
                  Stderr: true
                  K8sNamespaceRegex: "^kube-system$"
                  K8sPodRegex: "^cluster-autoscaler.*$"

步骤二:查看日志

关于如何查看日志,请参见步骤四:查看日志