自建 K8s 集群安装 LogListener

最近更新时间:2025-08-05 17:00:11

我的收藏
本文将介绍如何在自建 Kubernetes 集群上进行安装、配置、升级、卸载与排障 LogListener 组件。

前提条件

已创建 Kubernetes 1.10及以上版本集群。
已安装 kubectl,并且 kubectl 可正常访问集群。
已配置自建 K8s 采集所需的云 API 权限,详情请参见 使用自建 K8s 上传数据 文档。
已获取日志主题所在地域(region)。详细 CLS 地域列表请参见 可用地域 文档。
已获取访问 CLS 侧鉴权所需的 API 密钥 ID(secretid)以及 API 密钥 Key(secretkey),可前往 API 密钥管理 查看。

操作步骤

安装 LogListener

依赖:
标准的 Kubernetes 集群,不支持 microk8s 或者 k3s 等非标准部署的 Kubernetes 集群。
需要 Helm 版本为3.1以上版本。
Linux 环境,不支持 macOS。
1. 安装 Helm。 安装详情可参见 安装 Helm
2. 安装 LogListener。
通过以下命令,将会以 daemonset 的方式在每个 Kubernetes 的非 Master 节点运行一个采集器。 若需将采集器运行在 Master 节点中,请参见 Master 节点部署 LogListener
wget https://mirrors.tencent.com/install/cls/k8s/addon-charts/tencentcloud-cls-k8s.sh
# 仅支持Linux 环境, 不支持 MacOS!
chmod +x tencentcloud-cls-k8s.sh
./tencentcloud-cls-k8s.sh install --region ap-guangzhou --secretid xxx --secretkey xxx
参数说明
参数名
是否必填
类型描述
secretid
云 API 密钥 的一部分,SecretId 用于标识 API 调用者身份。请确保云API密钥关联的账号具有相应的 自建 K8s 日志采集上传权限
secretkey
云 API 密钥 的一部分,SecretKey 是用于加密签名字符串和服务器端验证签名字符串的密钥。请确保云 API 密钥关联的账号具有相应的 自建 K8s 日志采集上传权限
region
目标 CLS 服务地域,地域详情请参见 可用地域,例如:ap-guangzhou
network
表示 LogListener 通过哪种方式访问服务域名,取值:intra 内网访问(默认),internet 外网访问
内网访问:适用于集群所在服务器为腾讯云服务器,且服务器所在地域与目标访问 CLS 地域一致
外网访问:适用于集群所在服务器为非腾讯云服务器,或服务器所在地域与目标访问 CLS 地域不一致
docker_root
集群 Docker 的根目录,默认是/var/lib/docker,如果集群不是这个默认目录,需要指定具体的 Docker 的根目录
cluster_id
K8s 集群安装 LogListener 后将自动在 CLS 创建一个相应的机器组,您可通过配置 cluster_id 来指定该机器组的名称,如果不指定,在安装期间会生成一个默认 ID(最好指定一个 cluster_id,默认生成的 ID 的可读性较差)
注意:
指定的 cluster_id 不可以与已有机器组名称相同。
local_region
K8s 集群所在地域, 默认赋值与 region 参数一致,若 K8s 集群所在地域与 region 不一致, 可自定义修改
api_network
云 API 使用内网还是外网,取值:intra 内网访问,internet 外网访问(默认)。仅在专线接入场景下需关注
api_region
云 API 的地域。仅在专线接入场景下需关注, 默认赋值与 region 参数一致
namespace
指定安装日志采集组件的 namespace。若不指定,默认为 kube-system(一般不需要特别指定)
label
支持自定义日志采集组件所在 Pod 的 Pod Label。
例如:假设希望为日志采集组件所在 Pod 配置 service=a, app=b 的 Pod Label,此处参数定义为 --label label.service=a,label.app=b
on_master
是否在 Master 节点部署。若不指定默认为 false,即不在 Master 节点部署采集组件
示例:广州外网部署
./tencentcloud-cls-k8s.sh install --region ap-guangzhou --secretid xxx --secretkey xxx --network internet
3. 验证安装。
3.1 查看安装 Helm 包。安装成功后,查看 Helm 安装 tencent-cloud-cls-log。
helm list -n kube-system
3.2 查看组件。使用以下命令查看组件是否都启动正常,正常情况下,会启动一个 cls-provisioner 的 pod,并在每台宿主机上各启动一个 tke-log-agent 的采集 pod。
kubectl get pods -o wide -n kube-system | grep tke-log-agent
kubectl get pods -o wide -n kube-system | grep cls-provisioner

配置日志采集

完成 LogListener 安装后, 您即可通过以下两种方式中的任意一种为集群中的日志配置采集。
控制台交互式配置自建 K8s 日志采集,详情请参见 使用控制台配置自建 K8s 集群日志采集
通过编写 CRD YAML 文件配置 K8s 日志采集,详情请参见 使用 CRD 配置自建 K8s 集群日志采集

其他操作

配置 LogListener

若要修改 LogListener 的配置(例如最大内存占用), 可参见以下步骤修改:
1. 执行以下 kubectl 命令修改 tke-log-agent 环境变量。
kubectl edit ds tke-log-agent -n kube-system
2. 通过新增环境变量定义 LogListener 配置。



3. 参数说明:
变量名
变量描述
MAX_CONNECTION
最大连接数,默认10
CHECKPOINT_WINDOW_SIZE
单个文件的 checkpoint 环长度,默认1024
MAX_FILE_BREAKPOINTS
位点文件大小,N*2k,N 默认8k
MAX_SENDRATE
最大发送速率,Bytes/s,默认不限制
MAX_FILE
最大监控文件数量,默认15000
MAX_DIR
最大监控目录数量,默认5000
MAX_HTTPS_CONNECTION
Https 最大连接数,默认100
CONCURRENCY_TASKS
LogListener 任务池,默认256 。该配置仅在 LogListener v3.0.0及以上版本支持
说明:
LogListener v3.0.0及以上版本为白名单供应,若有需要请 提交工单 申请使用。
PROCESS_TASKS_EVERY_LOOP
单次循环处理任务数,默认4
CPU_USAGE_THRES
LogListener 最大 CPU 利用率,默认与 LogListener 容器的 CPU Limit 保持一致
MAX_MEM
最大内存占用上限,默认与 LogListener 容器的内存 Limit 保持一致。单位:Bytes
MAX_SEND_RETRY_TIME
日志上传请求失败并重试时,最大超时时间(s), 默认为10800

升级 LogListener

执行以下命令升级
./tencentcloud-cls-k8s.sh upgrade --<options>
参数说明:
参数
参数说明
upgrade_metrics
升级的时候是否安装 metric 采集组件,默认为 true,升级安装
namespace
日志采集组件安装的 namespace,默认安装在 kube-system,一般不需要特殊指定

查看/更新 LogListener 密钥

自建 Kubernetes 安装部署 LogListener 后,会将用户指定的 secretid 和 secretkey 保存在 Kubernetes 集群的 configmap 中。
您可通过执行以下命令查看密钥:
kubectl get configmap -n kube-system cls-credential
若要修改密钥,直接编辑修改 configmap 中的密钥和过期时间即可,组件会自动更新密钥。

卸载 LogListener

使用下面命令可以卸载已经安装的 tencent-cloud-cls-log helm 包, 其中 -n 为 LogListener 所在的命名空间,通常为kube-system
helm uninstall tencent-cloud-cls-log -n kube-system
注意:
如果想要完全删除 tencent-cloud-cls-log 包,需执行以下命令删除相关 secret 配置,其中 -n 为 LogListener 所在的命名空间,通常为kube-system
kubectl delete secret -n kube-system cls-k8s

Master 节点部署 LogListener

默认情况下,采集器会以 daemonset 的方式在 Kubernetes 的每个非 Master 节点上,若需要在 Master 节点上运行采集器,需参见以下步骤,调整 tke-log-agent 的 daemonset 声明文件。
1. 执行以下 kubectl 命令修改 tke-log-agent 声明文件。
kubectl edit ds tke-log-agent -n kube-system
2. 删除以下图中的配置项:affinity、tolerations。




排障 LogListener