本文介绍如何在Kubernetes集群上安装Logtail组件。
背景信息
采集Kubernetes集群中的容器日志时,需先安装Logtail组件。- 创建alibaba-log-configuration ConfigMap,该ConfigMap中包含日志服务配置信息,例如Project等。
- (可选)创建AliyunLogConfig CRD资源。
- (可选)部署alibaba-log-controller Deployment,用于监听AliyunLogConfig CRD资源的变更、创建Logtail采集配置。
- 部署logtail-ds Daemonset,用于采集节点的日志。
阿里云Kubernetes集群
您可以为已有的Kubernetes集群安装Logtail组件,也可以在创建Kubernetes集群时选中使用日志服务,安装Logtail组件。
为已有的Kubernetes集群安装Logtail组件
- 此操作仅适用于专有版Kubernetes和托管版Kubernetes。
如果您要采集ASK集群中的容器文本日志和标准输出,请参见通过阿里云日志服务采集应用日志。
- 当您的阿里云Kubernetes集群与日志服务属于不同的阿里云账号时,安装Logtail组件后,您还需要用户标识。具体操作,请参见设置阿里云账号为用户标识。
- 登录容器服务管理控制台。
- 在左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群。
- 在左侧导航栏中,选择 。
- 在日志与监控页签中,找到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组件
- 登录容器服务管理控制台。
- 在左侧导航栏中,单击集群。
- 在集群列表页面中,单击创建集群。
- 在组件配置配置项页中,选中使用日志服务。说明 本操作仅介绍开启日志服务的关键步骤。关于创建集群的具体操作,请参见创建Kubernetes托管版集群。
当选中使用日志服务后,会出现创建项目(Project)的提示。关于日志服务管理日志的组织结构,请参见项目(Project)。有以下两种创建Project方式。
- 使用已有Project
您可以选择一个已有的Project来管理采集到的容器日志。
- 创建新Project
日志服务自动创建一个名为
k8s-log-{ClusterID}
的Project来管理采集到的容器日志。其中ClusterID
为您新建的Kubernetes集群的唯一标识。
安装完成后,在该Project下自动创建名为k8s-group-${your_k8s_cluster_id}
的机器组和名为config-operation-log
的Logstore。重要 请勿删除名为config-operation-log
的Logstore。 - 使用已有Project
自建Kubernetes集群
- 登录日志服务控制台。
- 创建一个以
k8s-log-custom-
开头的Project。例如k8s-log-custom-sd89ehdq。具体操作,请参见创建Project。 - 登录您的Kubernetes集群。
- 执行如下命令安装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
错误,可忽略。
安装完成后,在该Project下自动创建名为
k8s-group-${your_k8s_cluster_id}
的机器组和名为config-operation-log
的Logstore。重要- 请勿删除名为
config-operation-log
的Logstore。 - 在自建Kubernetes集群上安装时,默认为Logtail授予
privileged
权限,主要为避免删除其他Pod时可能出现的container text file busy
错误。更多信息,请参见Bug 1468249、Bug 1441737和 issue 34538。
常见问题
- 如何查看镜像版本?您可以通过镜像仓库查看。
- 如何升级Logtail组件?
您可以通过自动或手动方式升级Logtail组件。具体操作,请参见升级Logtail组件(Kubernetes集群)。
- 多个Kubernetes集群如何共用一个日志服务Project?
- 阿里云Kubernetes集群
如果您希望将多个Kubernetes集群中的容器日志采集到同一个日志服务Project中,您可以在创建Kubernetes集群时选择相同的Project。
- 自建Kubernetes集群
如果您希望将多个Kubernetes集群中的容器日志采集到同一个日志服务Project中,您可以在安装其他集群日志服务组件时,将安装参数中的{your-project-suffix}与您第一次安装集群日志服务组件时设置为一样。
说明 此方式不支持跨地域的Kubernetes多集群共享。 - 阿里云Kubernetes集群
- 如何查看Logtail日志?
Logtail日志存储在Logtail容器中的/usr/local/ilogtail/目录中,文件名为ilogtail.LOG和logtail_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的运行日志? 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?
- 停止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
- 启动Logtail。
其中
logtail-ds-gb92k -n
表示容器名,kube-system
表示命名空间,请根据实际情况替换。kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild start
返回如下结果表示启动成功。ilogtail is running
- 停止Logtail。
- 如何采集控制平面组件日志?
- 如果是阿里云托管版ACK集群,您可以在容器服务管理控制台中开启控制平面组件日志的采集。具体操作,请参见收集ACK Pro版集群控制平面组件日志。
- 如果是自建Kubernetes集群或者阿里云专有版ACK集群,您可以参见通过DaemonSet-控制台方式采集容器标准输出完成采集。
后续步骤
创建Logtail采集配置,采集容器日志。- DaemonSet方式
- 如果您需要通过CRD方式采集日志,请参见通过DaemonSet-CRD方式采集容器日志。
- 如果您需要通过控制台方式采集容器标准输出,请参见通过DaemonSet-控制台方式采集容器标准输出。
- 如果您需要通过控制台方式采集容器文本日志,请参见通过日志服务采集Kubernetes容器日志。
- Sidecar方式
- 如果您需要通过CRD方式采集日志,请参见通过Sidecar-CRD方式采集容器文本日志。
- 如果您需要通过控制台方式采集日志,请参见通过Sidecar-控制台方式采集容器文本日志。