一、部署在集群内的资源对象
| 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 侧,详情请参见 LogListener。
四、组件权限说明
注意:说明:
注意:权限场景章节中仅列举了组件核心功能涉及到的相关权限,完整权限列表请参考权限定义章节。
五、权限说明
·该组件权限是当前功能实现的最小权限依赖。
·只有开启了日志采集的标准集群会部署该组件,其他类型集群不会部署。
·需要在主机目录下读写 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/v1kind: ClusterRolemetadata: name: tke-log-agentrules: – 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"]
八、权限说明
该组件权限是当前功能实现的最小权限依赖。
九、权限场景
| 功能 | 涉及对象 | 涉及操作权限 |
| 把 log config 的规则内容同步到 CLS 侧 | logconfig | list/watch/patch/update |
十、权限定义
apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: cls-provisionerrules:- apiGroups: – cls.cloud.tencent.com resources: – logconfigs verbs: – list – watch – patch – update- apiGroups: – '*' resources: – events – configmaps verbs: – create – patch – update
十一、相关链接
·开启日志采集
·通过 YAML 配置日志采集
·使用 CRD 采集日志到 Kafka