本文将介绍如何在自建 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 | 是 | |
secretkey | 是 | |
region | 是 | 例子: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 | 否 | 例子: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及以上版本支持。 |
PROCESS_TASKS_EVERY_LOOP | 单次循环处理任务数,默认4 |
CPU_USAGE_THRES | LogListener 最大 CPU 利用率,默认与 LogListener 容器的 CPU Limit 保持一致 |
MAX_MEM | 最大内存占用上限,默认与 LogListener 容器的内存 Limit 保持一致。 单位: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以下的版本
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