1.SpringCloud的微服务电商框架
2.安装openjdk和maven 在k8s的master1节点操作:
yum install java-1.8.0-openjdk maven-3.0.5* -y
3.上传微服务源码包到k8s的master1节点 unzip microservic-test.zip cd microservic-test
4.修改源代码,更改数据库连接地址 在k8s的master1节点操作
1)修改库存数据库 cat /root/microservic-test/stock-service/stock-service-biz/src/main/resources/ application-fat.yml
jdbc:mysql://192.168.40.130:3306/tb_stock?characterEncoding=utf-8
#变成自己的数据库地址
2)修改产品数据库 cat /root/microservic-test/product-service/product-service-biz/src/main/resources/application-fat.yml
jdbc:mysql://192.168.40.130:3306/tb_product?characterEncoding=utf-8
#变成自己的数据库地址
3)修改订单数据库 cat /root/microservic-test/order-service/order-service-biz/src/main/resources/ application-fat.yml
url: jdbc:mysql://192.168.40.130:3306/tb_order?characterEncoding=utf-8
#变成自己的数据库地址
5.通过Maven编译、构建、打包源代码 在k8s的master1节点操作
修改源代码之后回到/root/microservic-test目录下执行如下命令:
mvn clean package -D maven.test.skip=true
看到如下说明编译打包已经成功了:
[INFO] simple-microservice ............................... SUCCESS [52.385s]
[INFO] basic-common ...................................... SUCCESS [0.001s]
[INFO] basic-common-core ................................. SUCCESS [6:11.156s]
[INFO] gateway-service ................................... SUCCESS [3:33.707s]
[INFO] eureka-service .................................... SUCCESS [12.075s]
[INFO] product-service ................................... SUCCESS [0.001s]
[INFO] product-service-api ............................... SUCCESS [0.271s]
[INFO] stock-service ..................................... SUCCESS [0.002s]
[INFO] stock-service-api ................................. SUCCESS [0.233s]
[INFO] product-service-biz ............................... SUCCESS [3.776s]
[INFO] stock-service-biz ................................. SUCCESS [0.332s]
[INFO] order-service ..................................... SUCCESS [0.000s]
[INFO] order-service-api ................................. SUCCESS [0.270s]
[INFO] order-service-biz ................................. SUCCESS [0.364s]
[INFO] basic-common-bom .................................. SUCCESS [0.000s]
[INFO] portal-service .................................... SUCCESS [0.738s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11:13.305s
[INFO] Finished at: Wed Jan 20 15:53:22 CST 2021
[INFO] Final Memory: 92M/710M
[INFO] ------------------------------------------------------------------------
6.在k8s中部署Eureka组件 修改k8s的master1和node1节点的docker的配置文件:
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com"],
"insecure-registries":["192.168.40.132","harbor"],
"exec-opts":["native.cgroupdriver=systemd"],
"log-driver":"json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver":"overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
注意:
daemon.json中新增加了如下一行内容:
"insecure-registries":["192.168.40.132","harbor"],
这样才可以使用harbor私有镜像仓库
重启docker使配置生效
systemctl daemon-reload && systemctl restart docker && systemctl status docker
在k8s的master1节点操作
创建拉取私有镜像仓库需要的secret
kubectl create ns ms && kubectl create secret docker-registry registry-pull-secret --docker-server=192.168.40.132 --docker-username=admin --docker-password=Harbor12345 -n ms
在harbor上创建一个项目microservice
1)构建镜像 cd /root/microservic-test/eureka-service docker build -t 192.168.40.132/microservice/eureka:v1 . docker login 192.168.40.132 账号密码: admin/Harbor12345 docker push 192.168.40.132/microservice/eureka:v1
2)部署服务 cd /root/microservic-test/k8s 修改eureka.yaml文件,把镜像变成image: 192.168.40.132/microservice/eureka:v1
3)更新yaml文件 kubectl apply -f eureka.yaml
4)查看pod状态 kubectl get pods -n ms
看到如下running说明pod运行正常:
NAME READY STATUS RESTARTS AGE
eureka-0 1/1 Running 0 7m4s
eureka-1 1/1 Running 0 5m39s
eureka-2 1/1 Running 1 6m7s
上面运行没问题之后,找到自己电脑的hosts文件,eureka.ctnrs.com
在浏览器访问eureka.ctnrs.com即可,可看到如下,说明eureka部署成功了:
注意: 要想访问域名eureka.ctnrs.com, 这个需要在自己电脑的hosts文件新增加如下内容,192.168.40.131是default-http和ingress-nginx-controller所在node节点的ip地址。 192.168.40.131 eureka.ctnrs.com
7.在k8s中部署网关Gateway服务 1)构建镜像 cd microservic-test/gateway-service/ docker build -t 192.168.40.132/microservice/gateway:v1 . docker push 192.168.40.132/microservice/gateway:v1
2)部署服务
cd /root/microservic-test/k8s
修改gateway.yaml文件,把镜像变成image: 192.168.40.132/microservice/gateway:v1
3)更新yaml文件
kubectl apply -f gateway.yaml
4)查看pod状态
kubectl get pods -n ms | grep gateway
5)看到如下running说明pod运行正常
gateway-c94f4d95c-2dqvw 1/1 Running 0 31s
gateway-c94f4d95c-l4jmq 1/1 Running 0 31s
6)配置hosts文件
gateway的域名是gateway.ctnrs.com,需要在电脑找到hosts文件,再增加一行如下:
192.168.40.131 gateway.ctnrs.com
在浏览器访问eureka.ctnrs.com可看到GATEWAY-SERVICE已经注册到eureka了:如上图
8.在k8s中部署前端portal服务 1)构建镜像 cd /root/microservic-test/portal-service docker build -t 192.168.40.132/microservice/portal:v1 . docker push 192.168.40.132/microservice/portal:v1
2)部署服务
cd /root/microservic-test/k8s
修改portal.yaml文件,把镜像变成image: 192.168.40.132/microservice/portal:v1
3)更新yaml文件
kubectl apply -f portal.yaml
4)查看pod状态
kubectl get pods -n ms | grep portal
看到如下running说明pod运行正常:
portal-5f59cb767c-fv67r 1/1 Running 1 5m26s
5)配置hosts文件
要在自己电脑找到hosts文件,再增加一行如下内容:
192.168.40.131 portal.ctnrs.com
6)查看portal是否注册到eureka中
在浏览器访问eureka.ctnrs.com可看到portal服务已经注册到eureka了
7)访问前端页面
在浏览器访问portal.ctnrs.com
可看到如下页面:
9.在k8s中部署订单order服务 1)构建镜像 cd /root/microservic-test/order-service/order-service-biz docker build -t 192.168.40.132/microservice/order:v1 . docker push 192.168.40.132/microservice/order:v1
2)部署服务
cd /root/microservic-test/k8s
修改order.yaml文件,把镜像变成image: 192.168.40.132/microservice/order:v1
3)更新yaml文件
kubectl apply -f order.yaml
4)查看pod状态
kubectl get pods -n ms | grep order
看到如下running说明pod运行正常:
order-75d9c4bbd7-f6lhx 1/1 Running 0 3m10s
10.在k8s中部署产品product服务 1)构建镜像 cd /root/microservic-test/product-service/product-service-biz docker build -t 192.168.40.132/microservice/product:v1 . docker push 192.168.40.132/microservice/product:v1
2)部署服务
cd /root/microservic-test/k8s
修改product.yaml文件,把镜像变成image: 192.168.40.132/microservice/product:v1
3)更新yaml文件
kubectl apply -f product.yaml
4)查看pod状态
kubectl get pods -n ms | grep product
看到如下running说明pod运行正常:
product-775f5f74d9-4nssp 1/1 Running 0 18s
11.在k8s中部署库存stock服务 1)构建镜像 cd /root/microservic-test/stock-service/stock-service-biz docker build -t 192.168.40.132/microservice/stock:v1 . docker push 192.168.40.132/microservice/stock:v1
2)部署服务
cd /root/microservic-test/k8s
修改stock.yaml文件,把镜像变成image: 192.168.40.132/microservice/stock:v1
3)更新yaml文件
kubectl apply -f stock.yaml
4)查看pod状态
kubectl get pods -n ms | grep stock
看到如下running说明pod运行正常:
stock-984756d8d-ss8tq 1/1 Running 0 26s
上面都部署成功之后,在浏览器访问eureka.ctnrs.com可看到gateway、portal、product、order、stock等服务都已经注册到eureka了,在浏览器访问portal.ctnrs.com登陆前端页面,可看到如下内容:如上图
点击查询商品服务,出现如下:
![输入图片说明](https://images.gitee.com/uploads/images/2021/0903/105436_14b99388_1894608.png "4444.png")
选择手机,点击购买,然后再点击查询订单服务,出现如下:
微服务的扩容和缩容 1.扩容 修改yaml文件里的replicas数量,如原来是2,可以修改成3,然后通过kubectl apply 重新更新yaml即可
2.缩容
修改yaml文件里的replicas数量,如原来是3,可以修改成2,然后通过kubectl apply 重新更新yaml即可
3.发布流程
开发提交代码到gitlab->触发自动构建(通过mvn打包代码)->把代码打包成镜像->把镜像上传到私有镜像仓库>把新的镜像更新到对应服务的yaml文件里->然后kubectl apply更新yaml文件->发布服务
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。