Spring Cloud微服务迁移到Kubernetes容器化
创始人
2024-03-15 20:43:59
0

文章目录

  • 相关文章
  • k8s容器部署流程
    • 熟悉Spring Cloud微服务项目
    • 源代码编译构建
    • 构建项目镜像并推送到镜像仓库
      • 制作镜像
      • 将镜像推送到harbor仓库
    • K8s服务编排
    • 部署基础环境
      • 在K8s中部署Nacos集群(注册和配置中心)
      • 在k8s中部署Seata分布式事务
      • 在linux部署mysql,redis,rabbitmq,minio,xxl-job
    • 部署微服务程序
    • 部署微服务前端
    • 微服务对外发布
      • NorePort方式暴露
      • Ingress方式暴露

相关文章

  • kubernetes集群基于kubeadm部署以及常见问题解决
  • kubernetes集群配置默认存储类(nfs)
  • Docker工作中常用知识总结
  • Ubuntu本地安装MySQL8.0以及常见问题设置方法
  • kubernetes集群安装Ingress-nginx
  • 持续补充中…

k8s容器部署流程

在这里插入图片描述

具体步骤:

  • 第一步:熟悉Spring Cloud微服务项目
  • 第二步:源代码编译构建
  • 第三步:构建项目镜像并推送到镜像仓库
  • 第四步:K8s服务编排
  • 第五步:部署服务所需的基础环境
  • 第六步:部署微服务程序
  • 第七步:部署微服务前端
  • 第八步:微服务对外发布

熟悉Spring Cloud微服务项目

微服务架构图

在这里插入图片描述

源代码编译构建

拉取仓库代码

git clone http://192.168.0.126/saas-wms/linkinsense-wms-public.git

在这里插入图片描述
编译代码

mvn clean package -Dmaven.test.skip=true -Pdev

在这里插入图片描述

  • 这儿构建时间久是因为第一次构建,需要下载maven依赖,之后构建就会很快了。

构建项目镜像并推送到镜像仓库

  1. 基础镜像:centos,ubuntu
  2. 中间件镜像:jdk,nginx
  3. 项目镜像:基础镜像+中间件镜像+项目代码

制作镜像

  • Docker工作中常用知识总结

编写gateway服务的DockerFile,制作镜像

vi Dockerfile
FROM openjdk:8-jreRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezoneWORKDIR /wms-center/wms-gatewayADD ./target/wms-gateway-1.0.0.jar ./EXPOSE 8901CMD java -jar wms-gateway-1.0.0.jar
  • 编写完成的DockerFile放置的文件位置

在这里插入图片描述

  • 通过DockerFile构建镜像
docker build -t wms-gateway:v1 -f wms-gateway/Dockerfile ./wms-gateway/

在这里插入图片描述

  • 查看构建好的镜像
docker images

在这里插入图片描述

将镜像推送到harbor仓库

  • 之前本地部署的镜像仓库Harbor: http://192.168.0.127:8084/,如果没有可拿docker-hub注册一个账号。

  • 登录仓库

docker login 192.168.0.127:8084

在这里插入图片描述

  • 推送镜像到镜像仓库需要满足镜像仓库的镜像名称,因此需要给构建好的镜像打个tag。
  • 给构建的镜像打tag
docker tag wms-gateway:v1  192.168.0.127:8084/onlee/gateway:v1

在这里插入图片描述

  • 推送镜像仓库
docker push 192.168.0.127:8084/onlee/gateway:v1

在这里插入图片描述
在这里插入图片描述

  • 其他模块构建和推送参考gateway模块

K8s服务编排

  • 制作gateway的k8s yaml文件(gateway.yaml)
---
apiVersion: apps/v1
kind: Deployment 
metadata:name: gatewaynamespace: wms-dev
spec:replicas: 1selector:matchLabels:project: wms-devapp: gatewaytemplate:metadata:labels:project: wms-devapp: gatewayspec:imagePullSecrets:- name: registry-harborcontainers:- name: gatewayimage: 192.168.0.127:8084/onlee/gateway:v1imagePullPolicy: Alwaysports:- protocol: TCPcontainerPort: 8901env:- name: JAVA_OPTSvalue: "-Xmx1g"resources:requests:cpu: 0.5memory: 256Milimits:cpu: 1memory: 1GireadinessProbe:tcpSocket:port: 8901initialDelaySeconds: 60periodSeconds: 10livenessProbe:tcpSocket:port: 8901initialDelaySeconds: 60periodSeconds: 10
  • 其他模块编写k8s yaml文件参考gateway模块

部署基础环境

  • 这一步暂时省略,后续补充…

在K8s中部署Nacos集群(注册和配置中心)

在k8s中部署Seata分布式事务

在linux部署mysql,redis,rabbitmq,minio,xxl-job

  • Ubuntu本地安装MySQL8.0以及常见问题设置方法

部署微服务程序

  • 准备namespace
kubectl create namespace wms-dev

在这里插入图片描述

  • 部署服务
kubectl apply -f gateway.yaml

在这里插入图片描述

  • 其他模块部署服务参考gateway模块

部署微服务前端

  • 编写DockerFile文件
FROM nginxCOPY dist /usr/share/nginx/html/EXPOSE 80
  • 构建镜像
docker build -t wms-web:v1 -f  Dockerfile .
  • 镜像打tag
docker tag  wms-web:v1 192.168.0.127:8084/onlee/wms-web:v1
  • 推送到镜像仓库
docker push  192.168.0.127:8084/onlee/wms-web:v1 
  • 服务编排(web.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: wms-webname: wms-webnamespace: wms-dev
spec:progressDeadlineSeconds: 600replicas: 1selector:matchLabels:app: wms-webstrategy:rollingUpdate:maxSurge: 50%maxUnavailable: 50%type: RollingUpdatetemplate:metadata:labels:app: wms-webspec:imagePullSecrets:- name: registry-harborcontainers:- image: 192.168.0.127:8084/onlee/wms-web:v1imagePullPolicy: Alwaysname: appports:- containerPort: 80protocol: TCPresources:limits:cpu: 300mmemory: 600MiterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: AlwaysterminationGracePeriodSeconds: 30
  • 部署服务
kubectl apply -f web.yaml

微服务对外发布

通过整个微服务架构可知,只有gateway和前端需要暴露服务。

在这里插入图片描述

NorePort方式暴露

gateway对外暴露

  • gateway-nortport.yaml
---
apiVersion: v1
kind: Service
metadata:name: gatewaynamespace: wms-dev
spec:ports:- port: 8901name: gatewayprotocol: TCPtargetPort: 8901nodePort: 32074selector:project: wmsapp: gatewaytype: NodePort

前端对外暴露

  • web-noreport.yaml
---
apiVersion: v1
kind: Service
metadata:labels:app: wms-webname: wms-webnamespace: wms-dev
spec:ports:- name: httpport: 80protocol: TCPtargetPort: 80nodePort: 32248selector:app: wms-websessionAffinity: Nonetype: NodePort

Ingress方式暴露

  • kubernetes集群安装Ingress-nginx

在这里插入图片描述

gateway对外暴露

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: gateway namespace: wms-devannotations:kubernetes.io/ingress.class: "nginx"nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
spec:rules:- host: gateway.wms.com http:paths:- path: /pathType: Prefixbackend:service: name: gatewayport: number: 8901
---
apiVersion: v1
kind: Service
metadata:name: gatewaynamespace: wms-dev
spec:ports:- port: 8901 name: gatewayselector:project: wms-devapp: gateway

前端对外暴露

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: wms-webnamespace: wms-devannotations:kubernetes.io/ingress.class: "nginx"nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
spec:rules:- host: dev.wms.com http:paths:- path: /pathType: Prefixbackend:service: name: wms-webport: number: 80
---
apiVersion: v1
kind: Service
metadata:labels:app: wms-webname: wms-webnamespace: wms-dev
spec:ports:- name: httpprotocol: TCPport: 80targetPort: 80type: ClusterIPselector:app: wms-websessionAffinity: None
  • 至此,所有微服务已经迁移到Kubernetes容器上了。

在这里插入图片描述

  • 把我们上面手动做的这些,通过Jenkins等组件搭建成一个自动化部署的过程,就涉及到DevOps相关的知识了。接下来就会编写这一块的内容。
  • 以上内容还有一些不够完善的地方,后续也会不断完善的。

你知道的越多,你不知道的越多。

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...