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

配置 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 利用率,默认不限制
MAX_MEM
最大内存占用上限,默认不限制。 单位:Bytes

配置日志采集

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

升级 LogListener

Kubernetes 版本是1.13以上的版本
wget http://mirrors.tencent.com/install/cls/k8s/upgrade/upgrade.sh
chmod +x upgrade.sh
./upgrade.sh
Kubernetes 版本是1.13以下的版本
wget http://mirrors.tencent.com/install/cls/k8s/upgrade/upgrade-1.13.sh
chmod +x upgrade-1.13.sh
./upgrade-1.13.sh

查看/更新 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