1. 目的
javaagent作为java的字节码增强技术,广泛应用于监控,热加载等工程场景。在普通虚机场景中,javaagent的安装只需要登录相应的服务器,修改启动脚本,加入 -javaagent:xxx.jar即可。
如果要在K8S进行javaagent的注入,显而易见需要修改docker image。显然,在K8S大规模集群中修改docker image是非常不合理的。本文将通过K8S的原生资源,尽可能的避免修改docker镜像,来完成K8S中探针的注入,同时适用于大规模集群。
2.节点和工具demo准备
资源
说明
10.1.11.238(服务器)
K8S的master节点
10.1.11.188(服务器)
nfs存储节点
apm-all-2.9.2-dev.jar
javaagent
这里准备了一套K8S集群,其他salve工作节点不在这里列出,同时准备一套分布式存储服务(nfs)。
3. 如何优雅的打探针?
打探针围绕2个中心进行:放置jar包和修改启动参数
如何优化的将这两步操作在K8S中完成?方式有很多:比如存储 、 commond 、 挂载启动脚本 、 修改环境变量(tomcat) 、修改镜像(迫不得已采用)。
思路:将javaagent通过分布式存储挂载到相应的pod,通过k8s env或者command或者configmap修改启动参数
4. 具体步骤
a. 挂载agent Jar包和配置文件,将其打入pod
创建pv
apiVersion: v1