Kubernetes学习记录之SpringCloud微服务与APM(SkyWalking)

这篇不涉及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

验证

他这服务都加进去了
在这里插入图片描述

他这玩意儿的拓扑图
在这里插入图片描述
剩下的还有好多,自己慢慢看了。


版权声明:本文为hans99812345原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。