k8s上运行我们的springboot服务之——skywalking监控我们的springboot

本文介绍了如何在K8s环境下利用Skywalking进行SpringBoot服务的链路追踪。首先,文章讲解了安装Elasticsearch7和Skywalking的步骤,并展示了如何将Skywalking配置为开机启动。接着,详细阐述了如何打包Skywalking的agent到Docker镜像中,并在K8s中通过initContainers将agent注入到SpringBoot应用。最后,提供了修改后的YAML文件配置,以及通过虚拟域名访问服务的方法,并附上了SpringBoot项目的pom配置和代码参考链接。
摘要由CSDN通过智能技术生成

整体思路

在k8s中运行的springboot项目通过skywalking来作为链路追踪中间件。springboot 项目启动时结合skywalking提供的agent来实现链路追踪,没有任何代码入侵
skywalking和elasticsearch直接安装在物理机环境没有部署到k8s环境
springboot是打包成docker镜像后才通过yaml在k8s运行的,使用skywalking agent是其实就是将agent包拷贝到每一个springboot镜像,通过java -jar 命令启动springboot就完成链路追踪查看
我们直接把skywalking的agent打包成镜像,通过yaml deployment发布springboot项目时通过initContainers等完成agent拷贝

安装elasticsearch7

安装skywalking

下载配置skywalking

$tar -zxvf apache-skywalking-apm-es7-8.1.0.tar.gz

web访问端口 8080->38080 (本机8080已被其它服务占用)
$vi /home/spark/skywalking/apache-skywalking-apm-bin-es7/webapp/webapp.yml

server:
  port: 38080

$/home/spark/skywalking/apache-skywalking-apm-bin-es7/config/application.yml

storage:
  selector: ${SW_STORAGE:elasticsearch7}

  elasticsearch7:
    nameSpace: ${
   SW_NAMESPACE:"my-application"} #通过访问192.168.10.58:9200 即可获得就是cluster_name的值

clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.10.58:9200}

启动skywalking

$/usr/local/src/apache-skywalking-apm-bin-es7/bin/startup.sh

加到开机启动

#cat “/usr/local/src/apache-skywalking-apm-bin-es7/bin/startup.sh” >> /etc/rc.d/rc.local
#chmod +x /etc/rc.d/rc.local

通过浏览器访问:

192.168.10.59:38080

打包agent的镜像

#cd /home/spark/skywalking/apache-skywalking-apm-bin-es7
#vi Dockerfile

FROM busybox:latest
ENV LANG=C.UTF-8
RUN set -eux && mkdir -p /opt/skywalking/agent/
ADD agent/ /opt/skywalking/agent/
WORKDIR /

#docker build -t=“frame/skywalking-agent:v1” .

若报路径找不到,可新建路径复制对应文件到报错路径即可
登录harbor
#docker login 192.168.10.59:8080
打包tag
#docker tag frame/skywalking-agent:v1 192.168.10.59:8080/frame/skywalking-agent:v1
推送到私服
#docker push 192.168.10.59:8080/frame/skywalking-agent:v1

服务启动yaml

原yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: demo-istio
    service: demo-istio
  name: demo-istio
  namespace: default
spec:
  ports:
  - name: demo-istio
    port: 8070
  selector:
    app: demo-istio
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: demo-istio
    version: v1
  name: demo-istio-v1
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-istio
      version: v1
  template:
    metadata:
      annotations:
        prometheus.io/scrape: false
        prometheus.io/path: /actuator/prometheus
        prometheus.io/port: 8070
      labels:
        app: demo-istio
        version: v1
    spec:
      containers:
      - env:
        - name: LIMITS_MEMORY
          valueFrom:
            resourceFieldRef:
              divisor: 1Mi
              resource: limits.memory
        - name: JAVA_OPTS
          value: -Xmx$(LIMITS_MEMORY)m -XshowSettings:vm -Duser.timezone=Asia/Shanghai
        image: 192.168.10.59:8080/frame/demo-frame-istio:1.0.RELEASE
        imagePullPolicy: Always
        name: demo-istio
        ports:
        - containerPort: 8070
        resources:
          limits:
            cpu: 2048m
            memory: 2048Mi
          requests:
            cpu: 1024m
            memory: 1024Mi
      hostAliases:
      - hostnames:
        - www.zipkin.com
        ip: 192.168.10.80
      imagePullSecrets:
      - name: regsecret

新yaml

使用skywalking需对deployment做如下修改
和普通yaml主要区别在于deployment中:
新增了initContainers
在containers新增了volumeMounts
spec中新增了volumes:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值