0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SpringCloud微服務(wù)遷移到Kubernetes容器化完整流程

jf_ro2CN3Fa ? 來(lái)源:CSDN ? 2023-10-29 16:32 ? 次閱讀

熟悉Spring Cloud微服務(wù)項(xiàng)目

  • 源代碼編譯構(gòu)建
  • 構(gòu)建項(xiàng)目鏡像并推送到鏡像倉(cāng)庫(kù)
    • 制作鏡像
    • 將鏡像推送到harbor倉(cāng)庫(kù)
  • K8s服務(wù)編排
  • 部署基礎(chǔ)環(huán)境
  • 部署微服務(wù)程序
  • 部署微服務(wù)前端
  • 微服務(wù)對(duì)外發(fā)布
    • NorePort方式暴露
    • Ingress方式暴露

k8s容器部署流程

b79ec68a-7633-11ee-939d-92fbcf53809c.png

具體步驟:

  • 第一步:熟悉Spring Cloud微服務(wù)項(xiàng)目
  • 第二步:源代碼編譯構(gòu)建
  • 第三步:構(gòu)建項(xiàng)目鏡像并推送到鏡像倉(cāng)庫(kù)
  • 第四步:K8s服務(wù)編排
  • 第五步:部署服務(wù)所需的基礎(chǔ)環(huán)境
  • 第六步:部署微服務(wù)程序
  • 第七步:部署微服務(wù)前端
  • 第八步:微服務(wù)對(duì)外發(fā)布

熟悉Spring Cloud微服務(wù)項(xiàng)目

微服務(wù)架構(gòu)圖

b7b275fe-7633-11ee-939d-92fbcf53809c.png

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

源代碼編譯構(gòu)建

拉取倉(cāng)庫(kù)代碼

gitclonehttp://192.168.0.126/saas-wms/linkinsense-wms-public.git
b7c581a8-7633-11ee-939d-92fbcf53809c.png

編譯代碼

mvncleanpackage-Dmaven.test.skip=true-Pdev
b7c97fa6-7633-11ee-939d-92fbcf53809c.png

這兒構(gòu)建時(shí)間久是因?yàn)榈谝淮螛?gòu)建,需要下載maven依賴,之后構(gòu)建就會(huì)很快了。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

構(gòu)建項(xiàng)目鏡像并推送到鏡像倉(cāng)庫(kù)

  • 基礎(chǔ)鏡像:centos,ubuntu
  • 中間件鏡像:jdk,nginx
  • 項(xiàng)目鏡像:基礎(chǔ)鏡像+中間件鏡像+項(xiàng)目代碼

制作鏡像

https://blog.csdn.net/qq_40722827/article/details/126337904

編寫gateway服務(wù)的DockerFile,制作鏡像

viDockerfile
FROMopenjdk:8-jre

RUNln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
RUNecho'Asia/Shanghai'>/etc/timezone

WORKDIR/wms-center/wms-gateway

ADD./target/wms-gateway-1.0.0.jar./

EXPOSE8901

CMDjava-jarwms-gateway-1.0.0.jar

編寫完成的DockerFile放置的文件位置

b7da2b58-7633-11ee-939d-92fbcf53809c.png

通過DockerFile構(gòu)建鏡像

dockerbuild-twms-gateway:v1-fwms-gateway/Dockerfile./wms-gateway/
b7ea94a2-7633-11ee-939d-92fbcf53809c.png

查看構(gòu)建好的鏡像

dockerimages
b8023cf6-7633-11ee-939d-92fbcf53809c.png

將鏡像推送到harbor倉(cāng)庫(kù)

之前本地部署的鏡像倉(cāng)庫(kù)Harbor: http://192.168.0.127:8084/,如果沒有可拿docker-hub注冊(cè)一個(gè)賬號(hào)。

登錄倉(cāng)庫(kù)

dockerlogin192.168.0.127:8084
b81c565e-7633-11ee-939d-92fbcf53809c.png

推送鏡像到鏡像倉(cāng)庫(kù)需要滿足鏡像倉(cāng)庫(kù)的鏡像名稱,因此需要給構(gòu)建好的鏡像打個(gè)tag。

給構(gòu)建的鏡像打tag

dockertagwms-gateway:v1192.168.0.127:8084/onlee/gateway:v1
b8326656-7633-11ee-939d-92fbcf53809c.png

推送鏡像倉(cāng)庫(kù)

dockerpush192.168.0.127:8084/onlee/gateway:v1
b84695b8-7633-11ee-939d-92fbcf53809c.pngb85fe0ae-7633-11ee-939d-92fbcf53809c.png

其他模塊構(gòu)建和推送參考gateway模塊

K8s服務(wù)編排

制作gateway的k8s yaml文件(gateway.yaml)

---
apiVersion:apps/v1
kind:Deployment
metadata:
name:gateway
namespace:wms-dev
spec:
replicas:1
selector:
matchLabels:
project:wms-dev
app:gateway
template:
metadata:
labels:
project:wms-dev
app:gateway
spec:
imagePullSecrets:
-name:registry-harbor
containers:
-name:gateway
image:192.168.0.127:8084/onlee/gateway:v1
imagePullPolicy:Always
ports:
-protocol:TCP
containerPort:8901
env:
-name:JAVA_OPTS
value:"-Xmx1g"
resources:
requests:
cpu:0.5
memory:256Mi
limits:
cpu:1
memory:1Gi
readinessProbe:
tcpSocket:
port:8901
initialDelaySeconds:60
periodSeconds:10
livenessProbe:
tcpSocket:
port:8901
initialDelaySeconds:60
periodSeconds:10

其他模塊編寫k8s yaml文件參考gateway模塊

部署基礎(chǔ)環(huán)境

這一步暫時(shí)省略,后續(xù)補(bǔ)充…

  • 在K8s中部署Nacos集群(注冊(cè)和配置中心
  • 在k8s中部署Seata分布式事務(wù)
  • linux部署mysql,redis,rabbitmq,minio,xxl-job

部署微服務(wù)程序

準(zhǔn)備namespace

kubectlcreatenamespacewms-dev
b873035a-7633-11ee-939d-92fbcf53809c.png

部署服務(wù)

kubectlapply-fgateway.yaml
b88437f6-7633-11ee-939d-92fbcf53809c.png

其他模塊部署服務(wù)參考gateway模塊

部署微服務(wù)前端

編寫DockerFile文件

FROMnginx

COPYdist/usr/share/nginx/html/

EXPOSE80

構(gòu)建鏡像

dockerbuild-twms-web:v1-fDockerfile.

鏡像打tag

dockertagwms-web:v1192.168.0.127:8084/onlee/wms-web:v1

推送到鏡像倉(cāng)庫(kù)

dockerpush192.168.0.127:8084/onlee/wms-web:v1

服務(wù)編排(web.yaml)

apiVersion:apps/v1
kind:Deployment
metadata:
labels:
app:wms-web
name:wms-web
namespace:wms-dev
spec:
progressDeadlineSeconds:600
replicas:1
selector:
matchLabels:
app:wms-web
strategy:
rollingUpdate:
maxSurge:50%
maxUnavailable:50%
type:RollingUpdate
template:
metadata:
labels:
app:wms-web
spec:
imagePullSecrets:
-name:registry-harbor
containers:
-image:192.168.0.127:8084/onlee/wms-web:v1
imagePullPolicy:Always
name:app
ports:
-containerPort:80
protocol:TCP
resources:
limits:
cpu:300m
memory:600Mi
terminationMessagePath:/dev/termination-log
terminationMessagePolicy:File
dnsPolicy:ClusterFirst
restartPolicy:Always
terminationGracePeriodSeconds:30

部署服務(wù)

kubectlapply-fweb.yaml

微服務(wù)對(duì)外發(fā)布

通過整個(gè)微服務(wù)架構(gòu)可知,只有g(shù)ateway和前端需要暴露服務(wù)。

b8a5f4a4-7633-11ee-939d-92fbcf53809c.png

NorePort方式暴露

gateway對(duì)外暴露

gateway-nortport.yaml

---
apiVersion:v1
kind:Service
metadata:
name:gateway
namespace:wms-dev
spec:
ports:
-port:8901
name:gateway
protocol:TCP
targetPort:8901
nodePort:32074
selector:
project:wms
app:gateway
type:NodePort

前端對(duì)外暴露

web-noreport.yaml

---
apiVersion:v1
kind:Service
metadata:
labels:
app:wms-web
name:wms-web
namespace:wms-dev
spec:
ports:
-name:http
port:80
protocol:TCP
targetPort:80
nodePort:32248
selector:
app:wms-web
sessionAffinity:None
type:NodePort

Ingress方式暴露

https://blog.csdn.net/qq_40722827/article/details/127929141

b8bee36a-7633-11ee-939d-92fbcf53809c.png

gateway對(duì)外暴露

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

前端對(duì)外暴露

---
apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:wms-web
namespace:wms-dev
annotations:
kubernetes.io/ingress.class:"nginx"
nginx.ingress.kubernetes.io/backend-protocol:"HTTP"
spec:
rules:
-host:dev.wms.com
http:
paths:
-path:/
pathType:Prefix
backend:
service:
name:wms-web
port:
number:80
---
apiVersion:v1
kind:Service
metadata:
labels:
app:wms-web
name:wms-web
namespace:wms-dev
spec:
ports:
-name:http
protocol:TCP
port:80
targetPort:80
type:ClusterIP
selector:
app:wms-web
sessionAffinity:None

至此,所有微服務(wù)已經(jīng)遷移到Kubernetes容器上了。

b8ce2df2-7633-11ee-939d-92fbcf53809c.png

把我們上面手動(dòng)做的這些,通過Jenkins等組件搭建成一個(gè)自動(dòng)化部署的過程,就涉及到DevOps相關(guān)的知識(shí)了。接下來(lái)就會(huì)編寫這一塊的內(nèi)容。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 自動(dòng)化
    +關(guān)注

    關(guān)注

    28

    文章

    5386

    瀏覽量

    78623
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    21986
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    126

    瀏覽量

    7303

原文標(biāo)題:SpringCloud 微服務(wù)遷移到 Kubernetes 容器化完整流程

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用Helm 在容器服務(wù)k8s集群一鍵部署wordpress

    摘要: Helm 是啥? 微服務(wù)容器給復(fù)雜應(yīng)用部署與管理帶來(lái)了極大的挑戰(zhàn)。Helm是目前Kubernetes服務(wù)編排領(lǐng)域的唯一開源子項(xiàng)目
    發(fā)表于 03-29 13:38

    容器開啟數(shù)據(jù)服務(wù)之旅系列(一):Kubernetes如何解自建PostgreSQL運(yùn)維之痛

    摘要: 通過阿里云Kubernetes容器服務(wù),開啟你的數(shù)據(jù)服務(wù)之旅 (一)云上運(yùn)維自建數(shù)據(jù)庫(kù)之痛,使用容器
    發(fā)表于 04-17 13:31

    容器開啟數(shù)據(jù)服務(wù)之旅系列(二):Kubernetes如何助力Spark大數(shù)據(jù)分析

    摘要: 容器開啟數(shù)據(jù)服務(wù)之旅系列(二):Kubernetes如何助力Spark大數(shù)據(jù)分析 (二):Kubernetes如何助力Spark大數(shù)據(jù)分析 概述 本文為大家介紹一種
    發(fā)表于 04-17 15:10

    解鎖高性能計(jì)算與區(qū)塊鏈應(yīng)用,阿里云Kubernetes服務(wù)召喚神龍

    on‘神龍’的三大優(yōu)勢(shì)神龍(X-Dragon)彈性裸金屬服務(wù)器的無(wú)任何虛擬化開銷。容器on‘神龍’ 具備如下三大優(yōu)勢(shì):資源零爭(zhēng)搶、利用率提升:在廣泛的容器場(chǎng)景中,使用
    發(fā)表于 06-13 15:52

    運(yùn)維是如何看待微服務(wù)容器

    微服務(wù)在帶來(lái)良好的設(shè)計(jì)和架構(gòu)理念的同時(shí),也帶來(lái)了運(yùn)維上的額外復(fù)雜性,尤其是在服務(wù)部署和服務(wù)監(jiān)控上。那么,運(yùn)維是如何看待微服務(wù)容器的呢?傳統(tǒng)
    發(fā)表于 09-30 17:24 ?0次下載
    運(yùn)維是如何看待<b class='flag-5'>微服務(wù)</b>和<b class='flag-5'>容器</b>的

    微服務(wù)容器技術(shù)實(shí)踐

    基于微服務(wù)架構(gòu)的技術(shù)實(shí)踐(點(diǎn)擊下載演講PPT) 普元信息主任架構(gòu)師顧偉在演講中,分享了他們對(duì)微服務(wù)架構(gòu)的認(rèn)識(shí),包括微服務(wù)演進(jìn)過程、常見認(rèn)知誤區(qū)等,并闡述了結(jié)合容器云技術(shù),分享在
    發(fā)表于 10-10 10:23 ?1次下載
    <b class='flag-5'>微服務(wù)</b>與<b class='flag-5'>容器</b>技術(shù)實(shí)踐

    如何在 Intellij IDEA 更高效地將應(yīng)用部署到容器服務(wù) Kubernetes

    ,支持企業(yè)級(jí) Kubernetes 容器應(yīng)用的全生命周期管理。容器服務(wù) Kubernetes
    發(fā)表于 12-28 16:06 ?383次閱讀
    如何在 Intellij IDEA 更高效地將應(yīng)用部署到<b class='flag-5'>容器</b><b class='flag-5'>服務(wù)</b> <b class='flag-5'>Kubernetes</b>

    什么是微服務(wù)容器?微服務(wù)容器的作用是什么

    微服務(wù)是將應(yīng)用程序拆分為多個(gè)服務(wù)的一種架構(gòu)類型,這些服務(wù)具備構(gòu)成整個(gè)應(yīng)用程序的細(xì)粒度功能。每個(gè)微服務(wù)將具備針對(duì)您的應(yīng)用程序的不同邏輯功能。與應(yīng)用程序的所有組件和功能都在單個(gè)實(shí)例中的單體
    的頭像 發(fā)表于 01-13 10:54 ?3.2w次閱讀
    什么是<b class='flag-5'>微服務(wù)</b>和<b class='flag-5'>容器</b>?<b class='flag-5'>微服務(wù)</b>和<b class='flag-5'>容器</b>的作用是什么

    微服務(wù)容器之間的有何關(guān)系?

    現(xiàn)在一提到微服務(wù),有很多人會(huì)想到容器技術(shù)(這里說(shuō)到的容器技術(shù)是指docker)。那么微服務(wù)容器之間到底有什么關(guān)系呢,我來(lái)簡(jiǎn)要和大家探討下。
    的頭像 發(fā)表于 02-01 01:58 ?6035次閱讀

    通過微服務(wù)原理、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)概念等來(lái)成功實(shí)現(xiàn)微服務(wù)

    組織通過微服務(wù)基本準(zhǔn)則、領(lǐng)域驅(qū)動(dòng)的設(shè)計(jì)概念和編碼優(yōu)秀實(shí)踐成功地使用微服務(wù),可以充分利用Kubernetes/容器原生的優(yōu)勢(shì)。
    的頭像 發(fā)表于 08-14 10:02 ?1841次閱讀

    分析探討微服務(wù)遷移如何影響數(shù)據(jù)庫(kù)管理和分解數(shù)據(jù)庫(kù)的步驟

    在從單體式架構(gòu)遷移到微服務(wù)架構(gòu)時(shí),數(shù)據(jù)庫(kù)通常是事后想法。有些人認(rèn)為遷移僅涉及應(yīng)用邏輯的重組,而底層數(shù)據(jù)保持不變。但是,這種做法可能會(huì)導(dǎo)致單體式服務(wù)
    的頭像 發(fā)表于 10-12 14:43 ?2056次閱讀

    KUBERNETES的工作原理是什么

    Kubernetes 提供了一個(gè)框架,用于部署、管理、擴(kuò)展和切換分布式容器,這些容器是隨依賴項(xiàng)和配置打包的微服務(wù)。
    的頭像 發(fā)表于 06-10 13:19 ?1611次閱讀

    Kubernetes集群內(nèi)服務(wù)通信機(jī)制介紹

    現(xiàn)在在 Kubernetes 集群中,我們擁有構(gòu)成集群管理組件和一組工作機(jī)器(稱為節(jié)點(diǎn))的控制平面。這些節(jié)點(diǎn)托管 Pod,這些 Pod 將后端微服務(wù)作為容器
    發(fā)表于 10-04 10:13 ?508次閱讀

    springcloud微服務(wù)架構(gòu)

    Spring Cloud是一個(gè)開源的微服務(wù)架構(gòu)框架,它提供了一系列工具和組件,用于構(gòu)建和管理分布式系統(tǒng)中的微服務(wù)。它基于Spring框架,旨在通過簡(jiǎn)化開發(fā)過程和降低系統(tǒng)復(fù)雜性來(lái)幫助開發(fā)人員構(gòu)建彈性
    的頭像 發(fā)表于 11-23 09:24 ?932次閱讀

    docker微服務(wù)架構(gòu)實(shí)戰(zhàn)

    隨著云計(jì)算和容器技術(shù)的快速發(fā)展,微服務(wù)架構(gòu)在軟件開發(fā)領(lǐng)域中變得越來(lái)越流行。微服務(wù)架構(gòu)將一個(gè)大型的軟件應(yīng)用拆分成多個(gè)小型的、獨(dú)立部署的服務(wù),
    的頭像 發(fā)表于 11-23 09:26 ?515次閱讀