本文介绍如何在Kubernetes集群上安装Logtail组件。

背景信息

采集Kubernetes集群中的容器日志时,需先安装Logtail组件。
在安装Logtail组件过程中,系统自动完成以下操作:
  1. 创建alibaba-log-configuration ConfigMap,该ConfigMap中包含日志服务配置信息,例如Project等。
  2. (可选)创建AliyunLogConfig CRD资源。
  3. (可选)部署alibaba-log-controller Deployment,用于监听AliyunLogConfig CRD资源的变更、创建Logtail采集配置。
  4. 部署logtail-ds Daemonset,用于采集节点的日志。

阿里云Kubernetes集群

您可以为已有的Kubernetes集群安装Logtail组件,也可以在创建Kubernetes集群时选中使用日志服务,安装Logtail组件。

为已有的Kubernetes集群安装Logtail组件

重要
  1. 登录容器服务管理控制台
  2. 在左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群。
  4. 在左侧导航栏中,选择运维管理 > 组件管理
  5. 日志与监控页签中,找到logtail-ds,然后单击安装
    安装完成后,日志服务会自动生成名为k8s-log -${your_k8s_cluster_id}的Project,并在该Project下生成名为k8s-group-${your_k8s_cluster_id}的机器组和名为config-operation-log的Logstore。
    重要 请勿删除名为config-operation-log的Logstore。

创建Kubernetes集群时安装Logtail组件

  1. 登录容器服务管理控制台
  2. 在左侧导航栏中,单击集群
  3. 集群列表页面中,单击创建集群
  4. 组件配置配置项页中,选中使用日志服务
    说明 本操作仅介绍开启日志服务的关键步骤。关于创建集群的具体操作,请参见创建Kubernetes托管版集群

    当选中使用日志服务后,会出现创建项目(Project)的提示。关于日志服务管理日志的组织结构,请参见项目(Project)。有以下两种创建Project方式。

    • 使用已有Project

      您可以选择一个已有的Project来管理采集到的容器日志。

      安装logtail组件
    • 创建新Project

      日志服务自动创建一个名为k8s-log-{ClusterID}的Project来管理采集到的容器日志。其中ClusterID为您新建的Kubernetes集群的唯一标识。

      安装logtail组件
    安装完成后,在该Project下自动创建名为k8s-group-${your_k8s_cluster_id}的机器组和名为config-operation-log的Logstore。
    重要 请勿删除名为config-operation-log的Logstore。

自建Kubernetes集群

  1. 登录日志服务控制台
  2. 创建一个以k8s-log-custom-开头的Project。
    例如k8s-log-custom-sd89ehdq。具体操作,请参见创建Project
  3. 登录您的Kubernetes集群。
  4. 执行如下命令安装Logtail及其他依赖组件。
    重要
    • 请确保用于执行脚本的机器中,已安装kubectl命令。
    • 目前,alibaba-log-controller组件只支持Kubernetes 1.6及以上版本。
    • 如果您不需要CRD功能,可以删除alibaba-cloud-log/templates/alicloud-log-config.yaml文件,然后重新执行下述命令。如果提示./alicloud-log-k8s-custom-install.sh: line 111: /root/alibaba-cloud-log/templates/alicloud-log-crd.yaml: No such file or directory错误,可忽略。
    1. 下载安装脚本。
      wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/alicloud-log-k8s-custom-install.sh
    2. 修改权限。
      chmod 744 ./alicloud-log-k8s-custom-install.sh
    3. 安装Logtail及其他依赖组件。
      sh ./alicloud-log-k8s-custom-install.sh your-project-suffix region-id aliuid access-key-id access-key-secret

      命令中各参数说明如下所示,请根据实际情况替换。

      参数说明
      your-project-suffix配置为您在步骤2中创建的Project的名称中的自定义部分。例如Project名称为k8s-log-custom-sd89ehdq,则此处填写sd89ehdq
      region-id您的Project所在的地域ID。例如华东1(杭州)的地域ID为cn-hangzhou。更多信息,请参见开服地域
      aliuid您的阿里云账号(主账号)ID。如何获取,请参见获取日志服务所在的阿里云账号(主账号)ID
      access-key-id您的阿里云账号的AccessKey ID。推荐使用RAM用户的AccessKey,并授予RAM用户AliyunLogFullAccess权限。相关操作,请参见创建RAM用户及授权
      access-key-secret您的阿里云账号的AccessKey Secret。推荐使用RAM用户的AccessKey并授予RAM用户AliyunLogFullAccess权限。相关操作,请参见创建RAM用户及授权

    安装完成后,在该Project下自动创建名为k8s-group-${your_k8s_cluster_id}的机器组和名为config-operation-log的Logstore。

    重要
    • 请勿删除名为config-operation-log的Logstore。
    • 在自建Kubernetes集群上安装时,默认为Logtail授予privileged权限,主要为避免删除其他Pod时可能出现的container text file busy错误。更多信息,请参见Bug 1468249Bug 1441737issue 34538

常见问题

  • 如何查看镜像版本?
  • 如何升级Logtail组件?

    您可以通过自动或手动方式升级Logtail组件。具体操作,请参见升级Logtail组件(Kubernetes集群)

  • 多个Kubernetes集群如何共用一个日志服务Project?
    • 阿里云Kubernetes集群

      如果您希望将多个Kubernetes集群中的容器日志采集到同一个日志服务Project中,您可以在创建Kubernetes集群时选择相同的Project。

    • 自建Kubernetes集群

      如果您希望将多个Kubernetes集群中的容器日志采集到同一个日志服务Project中,您可以在安装其他集群日志服务组件时,将安装参数中的{your-project-suffix}与您第一次安装集群日志服务组件时设置为一样。

    说明 此方式不支持跨地域的Kubernetes多集群共享。
  • 如何查看Logtail日志?

    Logtail日志存储在Logtail容器中的/usr/local/ilogtail/目录中,文件名为ilogtail.LOGlogtail_plugin.LOG

    Logtail容器中的标准输出并不具备参考意义,请忽略以下标准输出内容。

    start umount useless mount points, /shm$|/merged$|/mqueue$
    umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
    umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
    umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
    ......
    xargs: umount: exited with status 255; aborting
    umount done
    start logtail
    ilogtail is running
    logtail status:
    ilogtail is running
  • 如何查看Kubernetes集群中日志服务相关组件的状态?
    执行如下命令进行查看。
    kubectl get deploy alibaba-log-controller -n kube-system
    kubectl get ds logtail-ds -n kube-system
  • alibaba-log-controller启动失败,该怎么处理?
    请确认您是否按照以下方式进行安装。
    • 在Kubernetes集群的Master节点中执行安装命令。
    • 安装命令参数中输入的是您的集群ID。

    如果由于以上问题安装失败,请使用kubectl delete -f deploy命令删除已生成的安装模板并重新执行安装命令。

  • 如何查看Kubernetes集群中Logtail DaemonSet状态?
    执行kubectl get ds -n kube-system命令查看Logtail DaemonSet状态。
    说明 Logtail容器所在的命名空间,默认为kube-system。
  • 如何查看Logtail的版本号、IP地址、启动时间以及状态等信息?
    • 查看Logtail状态等信息。
      kubectl get po -n kube-system | grep logtail

      返回结果如下:

      NAME            READY     STATUS    RESTARTS   AGE
      logtail-ds-gb92k   1/1       Running   0          2h
      logtail-ds-wm7lw   1/1       Running   0          4d
    • 查看Logtail的版本号、IP地址等信息。
      kubectl exec logtail-ds-gb92k -n kube-system cat /usr/local/ilogtail/app_info.json

      返回结果如下:

      {
         "UUID" : "",
         "hostname" : "logtail-ds-gb92k",
         "instance_id" : "0EBB2B0E-0A3B-11E8-B0CE-0A58AC140402_172.20.4.2_1517810940",
         "ip" : "192.0.2.0",
         "logtail_version" : "0.16.2",
         "os" : "Linux; 3.10.0-693.2.2.el7.x86_64; #1 SMP Tue Sep 12 22:26:13 UTC 2017; x86_64",
         "update_time" : "2021-02-05 06:09:01"
      }
  • 如何查看Logtail的运行日志?
    Logtail运行日志保存在/usr/local/ilogtail/目录下,文件名为ilogtail.LOG,轮转文件会压缩存储为ilogtail.LOG.x.gz。例如执行如下命令查看日志。
    kubectl exec logtail-ds-gb92k -n kube-system tail /usr/local/ilogtail/ilogtail.LOG
    返回结果如下:
    [2018-02-05 06:09:02.168693] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:104] logtail plugin Resume:start
    [2018-02-05 06:09:02.168807] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:106] logtail plugin Resume:success
    [2018-02-05 06:09:02.168822] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:369] start add existed check point events, size:0
    [2018-02-05 06:09:02.168827] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:511] add existed check point events, size:0 cache size:0 event size:0 success count:0
  • 如何重启某个Pod中的Logtail?
    1. 停止Logtail。

      其中logtail-ds-gb92k -n表示容器名,kube-system表示命名空间,请根据实际情况替换。

      kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild stop
      返回如下结果表示停止成功。
      kill process Name: ilogtail pid: 7
      kill process Name: ilogtail pid: 9
      stop success
    2. 启动Logtail。

      其中logtail-ds-gb92k -n表示容器名,kube-system表示命名空间,请根据实际情况替换。

      kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild start
      返回如下结果表示启动成功。
      ilogtail is running 
  • 如何采集控制平面组件日志?

后续步骤

创建Logtail采集配置,采集容器日志。