k8s 使用skywalking-agent 部署java应用

张开发
2026/6/1 23:12:27 15 分钟阅读
k8s 使用skywalking-agent 部署java应用
目录一、前言二、安装docker1、卸载旧的docker2、安装docker三、安装docker-compose四、使用docker部署SkyWalking五、制作javaagent镜像六、应用里配置skywalking-agent七、验证一、前言使用skywalking对k8s集群的java应用监控通过docker-compose方式部署skywalking集群创建skywalking-agent镜像以sidecar的方式部署到k8s集群的java应用中。注意 需要注意的是skywalking和skywalking-agent的版本兼容性若是skywalking和agent的版本不兼容会无法通过agent成功获取java指标不能成功上报给skywalking后端二、安装dockercentos 系统安装docker参考官网https://docs.docker.com/engine/install/centos/1、卸载旧的docker根据实际情况来决定是要卸载当前已运行的docker卸载docker的方法为## 卸载docker命令 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine2、安装docker## 安装 docker sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin## docker 开机自启动 sudo systemctl start docker sudo systemctl enable docker三、安装docker-composecurl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod ax /usr/local/bin/docker-compose四、使用docker部署SkyWalking1、 SkyWalking访问地址 http://ip:80802、 使用docker-compose安装SkyWalking的编排内容见docker-compose.yaml, 尤其要注意oap服务的环境变量指定使用的elasticsearch版本是SW_STORAGE: elasticsearch7若SW_STORAGE: elasticsearch则表示使用的是 elasticsearch 6版本。## cat docker-compose.yaml ## docker-compose up -d version: 3.3 services: elasticsearch: image: elasticsearch:7.4.2 container_name: elasticsearch restart: always ports: - 9200:9200 environment: discovery.type: single-node TZ: Asia/Shanghai # volumes: # - ./elasticsearch/logs:/usr/share/elasticsearch/logs # - ./elasticsearch/data:/usr/share/elasticsearch/data oap: image: apache/skywalking-oap-server:8.7.0-es7 container_name: skywalking-oap depends_on: - elasticsearch links: - elasticsearch restart: always ports: - 11800:11800 - 12800:12800 environment: SW_STORAGE: elasticsearch7 # 指定ES SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200 TZ: Asia/Shanghai ui: image: apache/skywalking-ui:8.7.0 container_name: sykwolking-ui depends_on: - oap links: - oap restart: always ports: - 8080:8080 environment: SW_OAP_ADDRESS: http://oap:12800 TZ: Asia/Shanghai3、启动SkyWalking# 进入到docker-compose.yaml 当前目录执行以下命令来启动 docker-compose up -d五、制作javaagent镜像## 参考博客https://blog.csdn.net/dyangel2013/article/details/119183022软件下载地址https://archive.apache.org/dist/skywalking/## cat Dcokerfile ## docker build -t 172.18.6.97/test/skywalking-agent:v1 . --no-cache FROM docker.io/library/busybox:latest AS base LABEL creatorfanqietudou,date2022-11-02 # 使用 ADD 下载 java-agent,你也可以使用其他下载命令或者下载到本地再 使用 COPY或者ADD 指令添加到 镜像里 ADD https://archive.apache.org/dist/skywalking/java-agent/8.8.0/apache-skywalking-java-agent-8.8.0.tgz /tmp/ RUN mkdir -p /opt \ tar -xzf /tmp/apache-skywalking-java-agent-8.8.0.tgz -C /opt/ \ rm -rf /tmp/* #ADD skywalking-agent.tar.gz /opt/ RUN mkdir -p /javaagent ## java-agent 使用 方法 ## java -javaagent:/opt/skywalking-agent/skywalking-agent.jar -jar yourApp.jar ## -javaagent:/opt/skywalking-agent/skywalking-agent.jaragent.service_nameyourAppName,collector.backend_service127.0.0.1:11800 ## -javaagent:/opt/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_nameyourAppName -Dskywalking.collector.backend_service127.0.0.1:11800 # # docker push 172.18.6.97/test/skywalking-agent:v1六、应用配置skywalking-agent我这里以k8s部署的应用配置skywalking-agent为例且以rocketmq-dashboard应用作为jar应用例子可以按照实际情况将rocketmq-dashboard 替换成您的java应用来部署rocketmq-dashboard部署可以参考博客https://blog.csdn.net/weixin_44770684/article/details/127520224?spm1001.2014.3001.5501## cat javaagent.yaml --- apiVersion: apps/v1 kind: Deployment metadata: annotations: labels: app: agent name: agent spec: replicas: 1 selector: matchLabels: app: agent template: metadata: labels: app: agent spec: affinity: {} volumes: - hostPath: path: /etc/localtime name: localtime - emptyDir: {} name: jar containers: - env: - name: appname valueFrom: fieldRef: fieldPath: metadata.labels[app] - name: JAVA_OPT value: -Drocketmq.namesrv.addrrocketmq-namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannelfalse - name: SKY value: -Xms512m -Xmx512m -javaagent:/javaagent/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_namek8s::$(appname) -Dskywalking.collector.backend_service172.18.6.97:11800 - name: JAVA_OPTS value: $(JAVA_OPT) $(SKY) image: 172.18.6.97/test/rocketmq-dashboard:v1 imagePullPolicy: IfNotPresent name: ui ports: - containerPort: 9876 name: ui protocol: TCP volumeMounts: - mountPath: /etc/localtime name: localtime readOnly: true - mountPath: /javaagent name: jar initContainers: - command: - cp - -r - /opt/skywalking-agent - /javaagent image: 172.18.6.97/test/skywalking-agent:v1 imagePullPolicy: IfNotPresent name: java volumeMounts: - mountPath: /etc/localtime name: localtime readOnly: true - mountPath: /javaagent name: jar ---说明要着重注意jar应用和agent的共享存储部分jar应用和agent的共享存储是为实现将skywalking-agent应用共享给jar应用以便jar应用可以在启动时候加载 skywalking-agent.jar七、验证jar应用成功运行后可以登录skywalking 浏览页面查看上报的数据。skywalking的访问地址http://ip:8080

更多文章