skywalking 实现收集kubernetes环境dubbo微服务链路跟踪案例
将zookeeper和dubbo部署在k8s容器,并使用skywalking收集
部署zookeeper
创建自定义namespace
并验证实现创建好的zookeeper
root@master1:~# kubectl create ns test root@master1:~/dockerfile/skywalking/java_agent/dubbo-provider# kubectl get pods NAME READY STATUS RESTARTS AGE zookeeper1-654c4f44c-rs5bc 1/1 Running 0 11m zookeeper2-645fdbd686-q995t 1/1 Running 0 11m zookeeper3-b879d8d8f-f2cgk 1/1 Running 0 11m
构建dubbo容器
1、构建dubbo-provider
修改dubbo-provider的配置文件指定连接k8s的test ns下的zookeeper集群
root@master1:~/dockerfile/skywalking/java_agent/dubbo-provider# vim config.properties #dubbo.registry=zookeeper://zookeeper1.myserver.svc.cluster.local:2181?backup=zookeeper2.myserver.svc.cluster.local:2181,zookeeper3.myserver.svc.cluster.loca l:2181 dubbo.registry=zookeeper://zookeeper1.test.svc.cluster.local:2181?backup=zookeeper2.test.svc.cluster.local:2181,zookeeper3.test.svc.cluster.local:2181 dubbo.port=20880
创建启动脚本
root@master1:~/dockerfile/skywalking/dubbo-provider# cat run.sh #!/bin/bash cd /usr/local/dubbo/provider/ java -javaagent:/usr/local/skywalking-agent/skywalking-agent.jar -jar dubbo-server.jar
配置skywalking java agent
编辑skywalking java agent的配置文件
root@master1:~/dockerfile/skywalking/java_agent/dubbo-provider/skywalking-agent/config# vim agent.config # The agent namespace agent.namespace=${SW_AGENT_NAMESPACE:kubernetes} #自定义namespace # The service name in UI agent.service_name=${SW_AGENT_NAME:dubbo-provider} #指定agent名称 # Backend service addresses. collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.100.90:11800} #指定外部的skywalking server地址
打包skywalking java agent
root@master1:~/dockerfile/skywalking/java_agent# tar zcf skywalking-agent.tar.gz skywalking-agent
编辑Dockerfile
root@master1:~/dockerfile/skywalking/java_agent/dubbo-provider# cat Dockerfile #Dubbo provider FROM harbor.cncf.net/baseimages/jdk:1.8.191 RUN apt install file netcat-traditional -y RUN mkdir -p /usr/local/dubbo/provider ADD dubbo-server.jar /usr/local/dubbo/provider ADD skywalking-agent.tar.gz /usr/local/ ADD run.sh /usr/local/dubbo/provider/ RUN chmod a+x /usr/local/dubbo/provider/run.sh CMD ["/usr/local/dubbo/provider/run.sh"]
创建打包image命令
root@master1:~/dockerfile/skywalking/dubbo-client# cat build.sh #!/bin/bash TAG=$1 nerdctl build -t harbor.cncf.net/project/dubbo-skywalking-provider:${TAG} . nerdctl push harbor.cncf.net/project/dubbo-skywalking-provider:${TAG}
2、构建dubbo-consumer
编辑配置dubbo-consumer的配置文件连接k8s test ns 下的zookeeper
root@master1:~/dockerfile/skywalking/dubbo-client# vim config.properties #dubbo.registry=zookeeper://zookeeper1.myserver.svc.cluster.local:2181?backup=zookeeper2.myserver.svc.cluster.local:2181,zookeeper3.myserver.svc.cluster.loca l:2181 dubbo.registry=zookeeper://zookeeper1.test.svc.cluster.local:2181?backup=zookeeper2.test.svc.cluster.local:2181,zookeeper3.test.svc.cluster.local:2181
创建启动脚本
root@master1:~/dockerfile/skywalking/dubbo-client# cat run.sh #!/bin/bash cd /usr/local/dubbo/client/ java -javaagent:/usr/local/skywalking-agent/skywalking-agent.jar -jar dubbo-client.jar
配置skywalking java agent
编辑skywalking java agent的配置文件
root@master1:~/dockerfile/skywalking/dubbo-client# vim skywalking-agent/config/agent.config # The agent namespace agent.namespace=${SW_AGENT_NAMESPACE:kubernetes} #自定义namespace # The service name in UI agent.service_name=${SW_AGENT_NAME:dubbo-client} #指定agent名称 # Backend service addresses. collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.100.90:11800} #指定外部的skywalking server地址
打包skywalking java agent
root@master1:~/dockerfile/skywalking/dubbo-client# tar zcf skywalking-agent.tar.gz skywalking-agent/
编辑Dockerfile
root@master1:~/dockerfile/skywalking/dubbo-client# cat Dockerfile #Dubbo provider FROM harbor.cncf.net/baseimages/jdk:1.8.191 RUN apt install file netcat-traditional -y RUN mkdir -p /usr/local/dubbo/client ADD dubbo-client.jar /usr/local/dubbo/client ADD skywalking-agent.tar.gz /usr/local/ ADD run.sh /usr/local/dubbo/client/ RUN chmod a+x /usr/local/dubbo/client/run.sh CMD ["/usr/local/dubbo/client/run.sh"]
创建打包image命令
root@master1:~/dockerfile/skywalking/dubbo-client# cat build.sh #!/bin/bash TAG=$1 nerdctl build -t harbor.cncf.net/project/dubbo-skywalking-client:${TAG} . nerdctl push harbor.cncf.net/project/dubbo-skywalking-client:${TAG}
3、构建dubbo-admin管理界面容器
创建tomcat容器启动脚本
root@deploy:/dockerfile/project/dubbo/dubbo-admin# vim run_tomcat.sh #!/bin/bash /usr/local/tomcat/bin/catalina.sh start tail -f /usr/local/tomcat/logs/catalina.out
修改dubbo-admin配置文件
修改zookeeper pod服务地址,root和guest用户密码
root@deploy:/dockerfile/project/dubbo/dubbo-admin# unzip dubboadmin.war root@deploy:/dockerfile/project/dubbo/dubbo-admin# vim dubboadmin/WEB-INF/dubbo.properties dubbo.registry.address=zookeeper://zookeeper1.test.svc.cluster.local:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest
创建dubbo-admin Dockerfile
root@deploy:/dockerfile/project/dubbo/dubbo-admin# cat Dockerfile FROM harbor.cncf.net/web/tomcat:8.5.79 RUN apt install unzip -y ADD run_tomcat.sh /usr/local/tomcat/bin/run_tomcat.sh ADD dubboadmin /usr/local/tomcat/webapps/dubboadmin EXPOSE 8080 8443 CMD ["/usr/local/tomcat/bin/run_tomcat.sh"]
创建镜像构建脚本
root@master1:~/dockerfile/skywalking/dubbo-admin# cat build.sh #!/bin/bash TAG=$1 nerdctl build -t harbor.cncf.net/project/dubboadmin:${TAG} . nerdctl push harbor.cncf.net/project/dubboadmin:${TAG}
k8s创建资源
1、创建dubbo-provider
创建deployment和service
root@master1:~/yaml/skywalking-agent/dubbo-provider# cat provider.yaml kind: Deployment apiVersion: apps/v1 metadata: labels: app: dubbo-provider name: dubbo-provider-deployment namespace: test spec: replicas: 3 selector: matchLabels: app: dubbo-provider template: metadata: labels: app: dubbo-provider spec: containers: - name: dubbo-provider-container image: harbor.cncf.net/project/dubbo-skywalking-provider:1.3 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 protocol: TCP name: http --- kind: Service apiVersion: v1 metadata: labels: app: dubbo-provider name: dubbo-provider-spec namespace: test spec: type: NodePort ports: - name: http port: 8080 protocol: TCP targetPort: 8080 nodePort: 38800 selector: app: dubbo-provider
创建验证
查看provider容器日志
root@master1:~/yaml/skywalking-agent/dubbo-client# kubectl logs -f dubbo-provider-deployment-7496c6fb7b-9z27p
zookeeper客户端验证
登录skywalking界面验证
2、创建dubbo-client
创建deployment和service
root@master1:~/yaml/skywalking-agent/dubbo-client# cat consumer.yaml kind: Deployment apiVersion: apps/v1 metadata: labels: app: dubbo-consumer name: dubbo-consumer-deployment namespace: test spec: replicas: 1 selector: matchLabels: app: dubbo-consumer template: metadata: labels: app: dubbo-consumer spec: imagePullSecrets: containers: - name: dubbo-consumer-container image: harbor.cncf.net/project/dubbo-skywalking-client:1.0 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 protocol: TCP name: http --- kind: Service apiVersion: v1 metadata: labels: app: dubbo-consumer name: dubbo-consumer-server namespace: test spec: type: NodePort ports: - name: http port: 80 protocol: TCP targetPort: 8080 nodePort: 30001 selector: app: dubbo-consumer
验证创建
查看client容器运行日志
root@master1:~/yaml/skywalking-agent/dubbo-client# kubectl logs -f dubbo-consumer-deployment-766748d47-2sgln
登录zookeeper客户端验证
登录consumer测试页面,访问k8s nodeport请求测试——http://k8s_node_IP:30001/hello?name=k8s
登录skywalking界面验证
3、创建dubbo-admin资源
创建dubbo-admin k8s yaml资源文件
kind: Deployment apiVersion: apps/v1 metadata: labels: app: dubboadmin name: dubboadmin-deployment namespace: test spec: replicas: 1 selector: matchLabels: app: dubboadmin template: metadata: labels: app: dubboadmin spec: containers: - name: dubboadmin-container image: harbor.cncf.net/project/dubboadmin:1.0.5 imagePullPolicy: Always ports: - containerPort: 8080 protocol: TCP name: http --- kind: Service apiVersion: v1 metadata: labels: app: dubboadmin name: dubboadmin-service namespace: test spec: type: NodePort ports: - name: http port: 80 protocol: TCP targetPort: 8080 nodePort: 30080 selector: app: dubboadmin
验证创建dubboadmin svc和pods:
浏览器访问:k8s任意节点http://ip:30080/dubboadmin
用户名密码输入:root/root
进入首页
查看provider
本文来自博客园,作者:PunchLinux,转载请注明原文链接:https://www.cnblogs.com/punchlinux/p/17198488.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示