Kubernetes中SpirngBoot应用接入SkyWalking-agent探针实现追踪

主要思路是将配置好的agent打成镜像,通过k8s的初始化容器initContainers将agent目录挂载到所运行的pod中去,在pod中的容器就能访问到agent目录,从而实现接入探针,收集数据。

1、在skywalking的agent目录的同级目录下编写dockerfile用于把agent探针打包成镜像,可以单独建一个目录来放agent和dockerfile,看起来比较清晰。Dockerfile内容如下:

FROM busybox:latest
COPY ./agent/ /skywalking/agent/

这里是以busybox为基础镜像将agent打包成镜像。没有busybox的可以先docker pull busybox拉取基础镜像。
运行dockerfile,将agent打成镜像:

docker build -t reg.harbor.com/skw/skywalking-agent:6.4.0 .

将镜像push到你的镜像仓库(dockerhub、harbor等)中供k8s拉取:

docker push reg.harbor.com/skw/skywalking-agent:6.4.0

2、修改SpringBoot程序dockerfile和kubernetes的yml文件。

修改每个应用的dockerfile的endtypoint。(不要把路径搞混)

ENTRYPOINT [“java”, “-javaagent:/opt/agent/skywalking-agent.jar”, “-jar”, “/usr/app/demoApplication.jar”]

这里-javaagent的路径要和kubernetes的yml文件挂载的路径一定要搞清楚。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: demo-app-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: demo-app
    spec:
      initContainers:
        - name: skywalking-agent
          image: reg.harbor.com/skw/skywalking-agent:latest
          command: ['cp','-rf','/skywalking/agent','/tmp']
          volumeMounts:
            - mountPath: /tmp
              name: skw-agent-volume
      containers:
        - name: demo-app
          image: reg.harbor.com/demos/demo-app:test
          ports:
            - containerPort: 8001
          env:
            - name: TZ
              value: Asia/Shanghai
          volumeMounts:
            - mountPath: /opt
              name: skw-agent-volume
      imagePullSecrets:
        - name: demo-app-secret
      volumes:
        - name: skw-agent-volume
          emptyDir: {}

上面的k8s的deployment的配置中挂载了一个name为skw-agent-volume的volumes空目录,悉k8s的都知道pod内的容器都能共享这个volumes目录。
这里定义了一个name为skywalking-agent的初始化容器initContainers,他的任务就是拉取agent镜像,把该镜像内/skywalking/agent目录拷贝到/tmp内,/tmp目录内就有了agent。
通过volumeMountsskw-agent-volume挂载到初始化容器的的/tmp目录下。demo-app容器把skw-agent-volume挂载到/opt目录下。
这时skw-agent-volume目录中就共享了/opt目录和/tmp目录中的所有内容。
上面修改的dockerfile的执行参数-javaagent:/opt/agent/skywalking-agent.jar,在demo-app容器内,就能访问到/opt/agent/skywalking-agent.jar拿到探针。
执行:

kubectl apply -f demo-app-deployment.yml

正常执行的话,打开skywalking的UI就能看到有数据了。
向服务发一次请求,在拓扑图里能看到应用的拓扑图。
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值