这篇不涉及jenkins的内容,后边我再更新,这篇简单记录在k8里搞微服务和性能监控工具SkyWalking
微服务SpingCloud
代码下载
https://github.com/lizhenliang/simple-microservice/tree/dev3
下载dev3的分支,然后打开db的目录,建立一个数据库,修改
order-service product-service stock-service 这三个项目里面连接数据库的配置
安装maven打包项目
mvn clean package -Dmaven.test.skip=true
推到仓库
harbor创建项目
在harbor仓库建立一个ms的项目
创建secret
创建一个secret,可以拉取镜像
kubectl create secret docker-registry registry-pull-secret --docker-server=192.168.3.200 --docker-username=admin --docker-password=Harbor12345 -n ms
执行脚本,把项目都推到仓库里 把这个脚本放到k8s目录里
[root@k8s-harbor k8s]# cat image_build.sh
#!/bin/bash
docker_registry=192.168.3.200
service_list="eureka-service gateway-service order-service product-service stock-service portal-service"
service_list=${1:-${service_list}}
work_dir=$(dirname $PWD)
current_dir=$PWD
for service in $service_list; do
cd $work_dir/$service
# 业务程序需进入biz目录里构建
if ls |grep biz &>/dev/null; then
cd ${service}-biz
fi
service=${service%-*}
image_name=$docker_registry/ms/${service}:20220923
docker build -t ${image_name} .
docker push ${image_name}
done
编排微服务
然后微服务是先干eureka ,然后是 product,stock,order -> gateway -> portal这个顺序
然后就可以执行,需要注意的是
eureka 启动3份 构建一个集群,这个是注册中心 sts类型的
其他的都弄1个副本就行了
kubectl apply -f eureka.yaml
kubectl apply -f order.yaml
kubectl apply -f portal.yaml
kubectl apply -f product.yaml
kubectl apply -f gateway.yaml
最后一个是portal 在弄portal之前,先修改下前端页面连接网关地址(portal-service/src/main/resources/static/js/productList.js和orderList.js)
url 这里改成你自己的域名,否则會请求不到接口
kubectl apply -f portal.yaml
hosts解析
根据你的IP给域名做解析
192.168.3.204 eureka.pooh.online
192.168.3.205 gateway.pooh.online
192.168.3.205 portal.pooh.online
验证
这节目你會看到,所以服务都注册进来了
这样就可以打开portal.pooh.online 这就可以了
SkyWalking
这是个监控应用性能工具,主要还是给开发用的
安装
这回还是用docker 安装,这回用的计算是192.168.3.100
首先安装ES
用这个做数据库
docker run --name es -p 9200:9200 -e "discovery.type=single-node" -d elasticsearch:7.7.0
安装jdk
yum install java-11-openjdk
安装SkyWalking
wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-es7-8.7.0.tar.gz
这回我们用的是ES7,我查了下,这个版本能支持 ,然后还得修改下配置
修改配置
就改这里,改成es7和es7的地址
/home/skywalking/config/application.yml
storage:
selector: ${SW_STORAGE:elasticsearch7}
elasticsearch:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.3.100:9200}
启动
/home/skywalking/bin
sh start.sh
这样的话,这东西就打开了一个web ,不过这样还没完事
给服务加上探针,重新打包
他的目录里有个agent的目录,把这个目录拷贝到代码目录
[root@k8s-harbor product-service]# cd product-service-biz/
[root@k8s-harbor product-service-biz]# ls
agent Dockerfile pom.xml src target
[root@k8s-harbor product-service-biz]# pwd
修改Dockerfile,build,push,apply
还是这个套路 修改Dockerfile build镜像,在推到仓库,在应用资源文件
这里你可以参考https://github.com/lizhenliang/simple-microservice/tree/dev4-skywalking
这个分支,自己改改就可以了
就增加了一个
COPY agent /agent
还有个启动加探针,他可以跟探针连上, 改服务的名字和SW服务的IP,我这里以eureka为例,其他服务都给他加进去
我的仓库是192.168.3.200,SkyWalking是192.168.3.100
k8s是192.168.3.201(master),204,205(node)
java -jar -javaagent:/agent/skywalking-agent.jar=agent.service_name=ms-product,agent.instance_name=$(echo $HOSTNAME | awk -F- '{print $1"-"$NF}'),collector.backend_service=192.168.3.100:11800
docker build -t 192.168.3.200/ms/eureka:sw_20220924 .
docker push 192.168.3.200/ms/eureka:sw_20220924
在master上执行
kubectl apply -f eureka.yaml
验证
他这服务都加进去了
他这玩意儿的拓扑图
剩下的还有好多,自己慢慢看了。