精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SpringCloud微服務遷移到Kubernetes容器化完整流程

jf_ro2CN3Fa ? 來源:CSDN ? 2023-10-29 16:32 ? 次閱讀

熟悉Spring Cloud微服務項目

  • 源代碼編譯構建
  • 構建項目鏡像并推送到鏡像倉庫
    • 制作鏡像
    • 將鏡像推送到harbor倉庫
  • K8s服務編排
  • 部署基礎環境
  • 部署微服務程序
  • 部署微服務前端
  • 微服務對外發布
    • NorePort方式暴露
    • Ingress方式暴露

k8s容器部署流程

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

具體步驟:

  • 第一步:熟悉Spring Cloud微服務項目
  • 第二步:源代碼編譯構建
  • 第三步:構建項目鏡像并推送到鏡像倉庫
  • 第四步:K8s服務編排
  • 第五步:部署服務所需的基礎環境
  • 第六步:部署微服務程序
  • 第七步:部署微服務前端
  • 第八步:微服務對外發布

熟悉Spring Cloud微服務項目

微服務架構圖

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

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

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

源代碼編譯構建

拉取倉庫代碼

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

這兒構建時間久是因為第一次構建,需要下載maven依賴,之后構建就會很快了。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

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

構建項目鏡像并推送到鏡像倉庫

  • 基礎鏡像:centos,ubuntu
  • 中間件鏡像:jdk,nginx
  • 項目鏡像:基礎鏡像+中間件鏡像+項目代碼

制作鏡像

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

編寫gateway服務的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構建鏡像

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

查看構建好的鏡像

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

將鏡像推送到harbor倉庫

之前本地部署的鏡像倉庫Harbor: http://192.168.0.127:8084/,如果沒有可拿docker-hub注冊一個賬號。

登錄倉庫

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

推送鏡像到鏡像倉庫需要滿足鏡像倉庫的鏡像名稱,因此需要給構建好的鏡像打個tag。

給構建的鏡像打tag

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

推送鏡像倉庫

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

其他模塊構建和推送參考gateway模塊

K8s服務編排

制作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模塊

部署基礎環境

這一步暫時省略,后續補充…

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

部署微服務程序

準備namespace

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

部署服務

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

其他模塊部署服務參考gateway模塊

部署微服務前端

編寫DockerFile文件

FROMnginx

COPYdist/usr/share/nginx/html/

EXPOSE80

構建鏡像

dockerbuild-twms-web:v1-fDockerfile.

鏡像打tag

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

推送到鏡像倉庫

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

服務編排(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

部署服務

kubectlapply-fweb.yaml

微服務對外發布

通過整個微服務架構可知,只有gateway和前端需要暴露服務。

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

NorePort方式暴露

gateway對外暴露

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

前端對外暴露

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對外暴露

---
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

前端對外暴露

---
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

至此,所有微服務已經遷移到Kubernetes容器上了。

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

把我們上面手動做的這些,通過Jenkins等組件搭建成一個自動化部署的過程,就涉及到DevOps相關的知識了。接下來就會編寫這一塊的內容。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 自動化
    +關注

    關注

    28

    文章

    5385

    瀏覽量

    78611
  • 容器
    +關注

    關注

    0

    文章

    490

    瀏覽量

    21985
  • 微服務
    +關注

    關注

    0

    文章

    126

    瀏覽量

    7301

原文標題:SpringCloud 微服務遷移到 Kubernetes 容器化完整流程

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

    摘要: Helm 是啥? 微服務容器給復雜應用部署與管理帶來了極大的挑戰。Helm是目前Kubernetes服務編排領域的唯一開源子項目
    發表于 03-29 13:38

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

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

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

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

    解鎖高性能計算與區塊鏈應用,阿里云Kubernetes服務召喚神龍

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

    運維是如何看待微服務容器

    微服務在帶來良好的設計和架構理念的同時,也帶來了運維上的額外復雜性,尤其是在服務部署和服務監控上。那么,運維是如何看待微服務容器的呢?傳統
    發表于 09-30 17:24 ?0次下載
    運維是如何看待<b class='flag-5'>微服務</b>和<b class='flag-5'>容器</b>的

    微服務容器技術實踐

    基于微服務架構的技術實踐(點擊下載演講PPT) 普元信息主任架構師顧偉在演講中,分享了他們對微服務架構的認識,包括微服務演進過程、常見認知誤區等,并闡述了結合容器云技術,分享在
    發表于 10-10 10:23 ?1次下載
    <b class='flag-5'>微服務</b>與<b class='flag-5'>容器</b>技術實踐

    如何在 Intellij IDEA 更高效地將應用部署到容器服務 Kubernetes

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

    什么是微服務容器?微服務容器的作用是什么

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

    微服務容器之間的有何關系?

    現在一提到微服務,有很多人會想到容器技術(這里說到的容器技術是指docker)。那么微服務容器之間到底有什么關系呢,我來簡要和大家探討下。
    的頭像 發表于 02-01 01:58 ?6029次閱讀

    通過微服務原理、領域驅動設計概念等來成功實現微服務

    組織通過微服務基本準則、領域驅動的設計概念和編碼優秀實踐成功地使用微服務,可以充分利用Kubernetes/容器原生的優勢。
    的頭像 發表于 08-14 10:02 ?1838次閱讀

    分析探討微服務遷移如何影響數據庫管理和分解數據庫的步驟

    在從單體式架構遷移到微服務架構時,數據庫通常是事后想法。有些人認為遷移僅涉及應用邏輯的重組,而底層數據保持不變。但是,這種做法可能會導致單體式服務
    的頭像 發表于 10-12 14:43 ?2053次閱讀

    KUBERNETES的工作原理是什么

    Kubernetes 提供了一個框架,用于部署、管理、擴展和切換分布式容器,這些容器是隨依賴項和配置打包的微服務
    的頭像 發表于 06-10 13:19 ?1610次閱讀

    Kubernetes集群內服務通信機制介紹

    現在在 Kubernetes 集群中,我們擁有構成集群管理組件和一組工作機器(稱為節點)的控制平面。這些節點托管 Pod,這些 Pod 將后端微服務作為容器
    發表于 10-04 10:13 ?507次閱讀

    springcloud微服務架構

    Spring Cloud是一個開源的微服務架構框架,它提供了一系列工具和組件,用于構建和管理分布式系統中的微服務。它基于Spring框架,旨在通過簡化開發過程和降低系統復雜性來幫助開發人員構建彈性
    的頭像 發表于 11-23 09:24 ?925次閱讀

    docker微服務架構實戰

    隨著云計算和容器技術的快速發展,微服務架構在軟件開發領域中變得越來越流行。微服務架構將一個大型的軟件應用拆分成多個小型的、獨立部署的服務
    的頭像 發表于 11-23 09:26 ?511次閱讀