静态token访问kubelet的cadvisor接口
目录
概述
在推广 Kubernetes v1.30.4 版本的部署,由于监控团队计划使用的 agent 读取 kubelet 的 metrics/cadvisor 接口获取容器指标,当前遇到几个问题如下:
- kubelet不允许开放http端口访问(安全问题)
- agent在内网使用systemd部署二进制,无法分配serviceaccount
- 所有集群的smart-agent希望统一方式访问kubelet
- 不允许在Node上放置serviceaccount的证书
鉴于以上原因,以及 smart-agent 在公有云会使用 DaemonSet 部署,访问方式希望保持统一,因此计划通过 token-auth-file 配置静态 token 提供给监控 agent 使用。
操作
kube-apiserver 启动参数增加 –token-auth-file=/etc/kubernetes/pki/static-token-file.csv。
文件内容可以参考如下:
|
|
部署 smart-agent 之前需要把 clusterrole 和 clusterrolebinding 配置好。
|
|
最后可以通过下面的方式测试,smart-agent 可以使用这个统一的 token 访问所有集群的 cadvisor 指标:
|
|
其他
其他还有几个技术点需要考虑:
- kubelet保证绑定127.0.0.1
- 经过测试serviceaccount和静态token可以同时配置使用
总结
如果从安全的角度来看,用同一个静态 token 肯定是不建议的,但每个公司都有不少这种脱裤子放屁的操作,并且从技术上看,又并不是不可以的,那就唯有调研一下这个方案了,欢迎大家针对这个方案讨论一下。