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

 

posted @   PunchLinux  阅读(200)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
  1. 1 Get Lucky Daft Punnk
  2. 2 烦恼歌 张学友
  3. 3 Way Back Home Conor Maynard
  4. 4 Put A Little Love In Your Heart Jackie DeShannon
  5. 5 菊次郎的夏天 久石譲
  6. 6 一丝不挂 陈奕迅
  7. 7 日落大道 梁博
  8. 8 Rage your dream m.o.v.e
  9. 9 Don't Be So Shy Imany
  10. 10 芒种 腾格尔
Rage your dream - m.o.v.e
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Not available

点击右上角即可分享
微信分享提示