tke-log-agent 说明

最近更新时间:2024-01-30 16:01:11

我的收藏

简介

组件介绍

tke-log-agent 是 Kubernetes 集群日志采集组件,用户可非侵入式采集容器标准输出日志、容器内日志以及节点日志。

部署在集群内的资源对象

kubernetes对象名称
类型
资源量
Namespace
tke-log-agent
Daemonset
0.21C126M
kube-system
cls-provisioner
Deployment
0.1C64M
kube-system
logconfigs.cls.cloud.tencent.com
CustomResourceDefinition
-
-
cls-provisioner
ClusterRole
-
-
cls-provisioner
ClusterRoleBinding
-
-
cls-provisioner
ServiceAccount
-
kube-system
tke-log-agent
ClusterRole
-
-
tke-log-agent
ClusterRoleBinding
-
-
tke-log-agent
ServiceAccount
-
kube-system

使用场景

独立集群开启审计日志采集时,默认安装 tke-log-agent 并采集 apiserver 审计日志。
通过采集规则采集容器标准输出日志、容器内日志、节点日志。

组件原理

1. cls-provisioner 监听到用户创建了采集规则后,根据采集规则的配置信息,生成 CLS 侧采集配置同步到 CLS 侧服务端。
2. tke-log-agent 根据采集规则,映射日志目录到统一目录下。
3. loglistener 同步 CLS 服务端采集配置,并根据采集配置采集日志上报到 CLS 侧。

组件权限说明

说明:
权限场景章节中仅列举了组件核心功能涉及到的相关权限,完整权限列表请参考权限定义章节。

log-agent 权限

权限说明

该组件权限是当前功能实现的最小权限依赖。
只有开启了日志采集的标准集群会部署该组件,其他类型集群不会部署。
需要在主机目录下读写 metadata 文件,所以需要开启特权级容器。

权限场景

功能
涉及对象
涉及操作权限
监听日志采集规则的变动
logconfig/logconfigpro
watch/patch/get
获取节点的 runtime 类型
node
list/watch/get
采集标准输出日志/容器内日志时需要采集特定 namespace 下的 pod 日志
namespace/pod
list/watch/get
采集容器内日志采集时需要获取容器日志的实际存储路径
PV/PVC
list/watch/get
SC
get
采集 workload 相关日志
工作负载
list/watch/get

权限定义

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: tke-log-agent
rules:
- apiGroups: ["cls.cloud.tencent.com"]
resources: ["logconfigs","logconfigpros"]
verbs: ["list", "watch", "patch","get"]
- apiGroups: [""]
resources: ["pods", "namespaces", "nodes", "persistentvolumeclaims","configmaps","persistentvolumes"]
verbs: ["list", "watch", "get"]
- apiGroups: ["apps"]
resources: ["daemonsets","replicasets","deployments","statefulsets"]
verbs: ["list", "watch", "get"]
- apiGroups: ["batch"]
resources: ["jobs","cronjobs"]
verbs: ["list", "watch", "get"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get"]

cls-provisioner 权限

权限说明

该组件权限是当前功能实现的最小权限依赖。

权限场景

功能
涉及对象
涉及操作权限
把 log config 的规则内容同步到 CLS 侧
logconfig
list/watch/patch/update

权限定义

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cls-provisioner
rules:
- apiGroups:
- cls.cloud.tencent.com
resources:
- logconfigs
verbs:
- list
- watch
- patch
- update
- apiGroups:
- '*'
resources:
- events
- configmaps
verbs:
- create
- patch
- update

相关链接