Skip to main content
平台通过api监控k8s 监控方式:python+zabbix_sender 原理:python的request库,请求k8s的api地址,对数据处理。

第一步:获取k8s的api地址

查看K8S的api地址的命令如下(最好在K8s集群的master上执行这条命令,因为如果在node节点上执行该命令有可能会获取旧的api地址) 9.3. 基于k8s apiserver方式监控 操作截图 1

第二步:创建具备get、list权限的服务账号并生成tokon

注意:此过程k8s1.24版本之前和k8s1.24版本之后的命会不同。!! 查看k8s版本命令
9.3. 基于k8s apiserver方式监控 操作截图 2 k8s-1.24前的版本(可在公司环境192.168.2.40测试,root/91LWp@sssw0rd) 登录k8s的master节点创建执行下面命令

1.创建只读服务用户monitor的并获取token

创建一个服务账号monitor,指定Kube-system命名空间
9.3. 基于k8s apiserver方式监控 操作截图 3 创建一个可以调用所有资源get,list操作的的集群角色monitor-role
9.3. 基于k8s apiserver方式监控 操作截图 4 给服务账号monitor绑定一个monitor-role的角色
9.3. 基于k8s apiserver方式监控 操作截图 5 获取服务账号monitor的token。获取的token只能执行get和list,无法调用接口使用post或者其他请求,会比较安全
9.3. 基于k8s apiserver方式监控 操作截图 6 k8s-1.24后的版本(客户环境测试过1.24之后版本,1.24版本默认先用1.24版本之前的授权的命令) 登录k8s的master节点创建执行下面命令

1.创建只读服务用户monitor的并获取token

创建一个服务账号monitor,指定Kube-system命名空间
9.3. 基于k8s apiserver方式监控 操作截图 7 创建一个可以调用所有资源get,list操作的的集群角色monitor-role
9.3. 基于k8s apiserver方式监控 操作截图 8 给服务账号monitor绑定一个monitor-role的角色
9.3. 基于k8s apiserver方式监控 操作截图 9 k8s的1.24版本以后无法自动生成token,需要用户指定用户创建!!(k8s1.24之前和之后的版本就是额外多了这步操作,否则下面的命令,无法查看授权 登录k8s的master服务器上传附件中的create_monitor_token.yaml到服务器目录,且执行下面命令
注意:create_monitor_token.yaml里面的命名空间和账号必须与上面创建的服务账号一致,无法会执行报错!! 9.3. 基于k8s apiserver方式监控 操作截图 10 获取服务账号monitor的token。获取的token只能执行get和list,无法调用接口使用post或者其他请求,会比较安全
9.3. 基于k8s apiserver方式监控 操作截图 11 第三步:监控k8s 导入k8s模版到监控平台。 填写token,zabbix_api的地址,和server的ip三个宏变量 9.3. 基于k8s apiserver方式监控 操作截图 12 上传get_k8s_new.py脚本到外部采集目录。修改sender路径即可。 9.3. 基于k8s apiserver方式监控 操作截图 13

四、调试说明

脚本上传到外部检查目录后。python3 get_k8s_new.py可查看调用方法 9.3. 基于k8s apiserver方式监控 操作截图 14 如要查看脚本的执行详情,可执行最后面加debug 9.3. 基于k8s apiserver方式监控 操作截图 15 加debug参数,可查看接口地址,接口数据,和sender命令 9.3. 基于k8s apiserver方式监控 操作截图 16