最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

k8s部署springboot實(shí)現(xiàn)前后端分離項(xiàng)目

 更新時(shí)間:2024年01月24日 15:18:34   作者:Java斌  
本文主要介紹了k8s部署springboot實(shí)現(xiàn)前后端分離項(xiàng)目,主要包括配置文件、鏡像構(gòu)建和容器編排等方面,具有一定的參考價(jià)值,感興趣的可以了解一下

前置依賴

  • k8s集群,如果沒(méi)有安裝,請(qǐng)先安裝

  • kubectl ,客戶端部署需要依賴

應(yīng)用鏡像構(gòu)建

應(yīng)用鏡像構(gòu)建不用自己去執(zhí)行,相關(guān)鏡像已經(jīng)推送到docker hub 倉(cāng)庫(kù),如果要了解過(guò)程和細(xì)節(jié),可以看一下,否則直接跳到k8syaml文件配置章節(jié)

Java應(yīng)用鏡像構(gòu)建

代碼地址:https://github.com/dongweizhao/backend

Java應(yīng)用打包

調(diào)用sh package.sh會(huì)執(zhí)行mvn的package命令,進(jìn)行打包

編寫Dockerfile

從target目錄復(fù)制可執(zhí)行jar

FROM openjdk:8-jre
COPY target/backend-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT java -jar ${JAVA_OPTS} /app.jar

鏡像打包推送

執(zhí)行sh push.sh 推送至dockerhub倉(cāng)庫(kù),鏡像地址:dweizhao/backend:latest

前端應(yīng)用鏡像構(gòu)建

代碼地址:https://github.com/dongweizhao/frontend

前端項(xiàng)目結(jié)構(gòu)如下

圖片

采用百度低代碼平臺(tái)amis進(jìn)行開(kāi)發(fā)

編寫Dockerfile

拷貝前端工程dist目錄至/frontend,并進(jìn)行目錄授權(quán)

from nginx
copy ./dist /frontend
run chown nginx.nginx /frontend -R
copy nginx.conf /etc/nginx/conf.d/default.conf

編寫nginx.conf文件

server{
    listen 80;
    server_name localhost;
     root  /frontend;
     index index.html index.htm;

     location /login {
             try_files $uri $uri/ /login.html;
     }
}

推送鏡像

執(zhí)行sh push.sh推送dockerhub倉(cāng)庫(kù),鏡像地址:dweizhao/frontend:latest

k8s yaml文件配置

以下是我們部署的服務(wù)在k8s 中路由示意圖

圖片

后端服務(wù)配置

backend-dp.yaml

由于我們服務(wù)是無(wú)狀態(tài)服務(wù),使用Deployment進(jìn)行部署,Deployment擁有更加靈活強(qiáng)大的升級(jí)、回滾功能,并且支持滾動(dòng)更新

apiVersion: apps/v1
kind: Deployment
metadata:
  name:  backend
spec:
  selector:
    matchLabels:
      app:  backend
  replicas: 1
  template:
    metadata:
      labels:
        # service 會(huì)根據(jù)此標(biāo)簽來(lái)查找此pod
        app:  backend
        version: latest
    spec:
      containers:
        - name: backend
          image: "dweizhao/backend:latest"
          imagePullPolicy: Always

backend-svc.yaml

Service相當(dāng)于Spring cloud中Ribbon的作用,提供了服務(wù)發(fā)現(xiàn)和負(fù)載均衡的功能,而不用關(guān)心具體服務(wù)實(shí)例有多少個(gè),在 k8s的服務(wù)實(shí)例就是Pod,這里我們使用ClusterIP類型,因?yàn)槭峭ㄟ^(guò)Ingress在集群內(nèi)訪問(wèn),通過(guò) app:backend標(biāo)簽,來(lái)查找對(duì)應(yīng)pod,所以 pod 的label必須包含app:backend

apiVersion: v1
kind: Service
metadata:
  name: backend
spec:
  type: ClusterIP
  ports:
    - name: backend-http
      port: 8080
      targetPort: 8080
      protocol: TCP
  selector:
    # 根據(jù)標(biāo)簽查找 pod
    app: backend

前端服務(wù)配置

frontend-dp.yaml

前端鏡像是一個(gè) nginx

apiVersion: apps/v1
kind: Deployment
metadata:
  name:  frontend
spec:
  selector:
    matchLabels:
      app:  frontend
  replicas: 1
  template:
    metadata:
      labels:
        # service 會(huì)根據(jù)此標(biāo)簽來(lái)查找此pod
        app:  frontend
        version: latest
    spec:
      containers:
        - name: frontend
          image: "dweizhao/frontend:latest"
          imagePullPolicy: Always

frontend-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: frontend
spec:
  type: ClusterIP
  ports:
    - name: frontend-http
      port: 80
      targetPort: 80
      protocol: TCP
  selector:
    # 根據(jù)標(biāo)簽查找 pod
    app: frontend

Ingress配置

Ingress相當(dāng)于nginx的作用,匹配url轉(zhuǎn)發(fā)請(qǐng)求至Service

注意:k8s不同的版本,對(duì)應(yīng)的Ingress apiVerson有點(diǎn)細(xì)微差別,所以要找到對(duì)應(yīng)k8s版本的Ingress,我們的k8s版本為v1.25.13

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
spec:
  ingressClassName: nginx
  rules:
    - host: k8sdemo.com
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: frontend
              port:
                number: 80
        #backend開(kāi)頭的 url,轉(zhuǎn)發(fā)到后端服務(wù) ,否則都轉(zhuǎn)發(fā)到前端服務(wù)              
        - path: /backend
          pathType: Prefix
          backend:
            service:
              name: backend
              port:
                number: 8080

k8s部署

部署使用kubectl進(jìn)行部署,如果沒(méi)有請(qǐng)先安裝,安裝完成以后,把以上yaml文件保存至本地

創(chuàng)建命名空間

kubectl create namespace k8sdemo

部署

部署系統(tǒng)至k8sdemo空間下

kubectl create namespace k8sdemo && kubectl apply -f backend-dp.yaml -f backend-svc.yaml -f frontend-dp.yaml -f frontend-svc.yaml -f ingress.yaml -n k8sdemo

圖片

查看系統(tǒng)狀態(tài)

#查看pod 啟動(dòng)狀態(tài)
kubectl get pods -n k8sdemo
# 查看服務(wù)狀態(tài)
kubectl get svc -n k8sdemo
# 查看Ingress狀態(tài)
kubectl get ingress -n k8sdemo

圖片

圖片

圖片

host 解析

在 hosts 文件中,對(duì)k8sdemo.com域名映射,映射到k8s 的任意node節(jié)點(diǎn)上即可,假設(shè)IP為172.18.2.53,配置如下

172.18.2.53 k8sdemo.com

測(cè)試

在瀏覽器訪問(wèn)k8sdemo.com,如果出現(xiàn)以下結(jié)果則部署成功,可以看到正確請(qǐng)求到數(shù)據(jù),這個(gè)數(shù)據(jù)為backend提供

圖片

總結(jié)

以上我們只是簡(jiǎn)單演示了下,如何在 k8s 中快速部署一個(gè)前后端應(yīng)用,讓你對(duì)在 k8s 操作有一個(gè)快速認(rèn)識(shí),但是此應(yīng)用如果要在生產(chǎn)使用還要在做些配置,比如探針配置,因?yàn)楹蠖朔?wù)的啟動(dòng),可能是個(gè)假啟動(dòng),必須要配置探針探活之后,才能讓 service訪問(wèn),否則導(dǎo)致請(qǐng)求異常,同時(shí)應(yīng)用有些文件如果需要持久化,還需要配置存儲(chǔ)卷等操作

到此這篇關(guān)于速用k8s部署springboot前后端分離項(xiàng)目的文章就介紹到這了,更多相關(guān)k8s部署springboot內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java?zip文件解壓后無(wú)法刪除原zip文件問(wèn)題

    java?zip文件解壓后無(wú)法刪除原zip文件問(wèn)題

    這篇文章主要介紹了java?zip文件解壓后無(wú)法刪除原zip文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java8 Map中新增的方法使用總結(jié)

    Java8 Map中新增的方法使用總結(jié)

    這篇文章主要介紹了Java8 Map中新增的方法使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Java線程通信及線程虛假喚醒知識(shí)總結(jié)

    Java線程通信及線程虛假喚醒知識(shí)總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Java線程的相關(guān)知識(shí),文章圍繞著Java線程通信及線程虛假喚醒的知識(shí)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java定時(shí)任務(wù)schedule和scheduleAtFixedRate的異同

    Java定時(shí)任務(wù)schedule和scheduleAtFixedRate的異同

    本文主要介紹了Java定時(shí)任務(wù)schedule和scheduleAtFixedRate的異同,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Dubbo?retries?超時(shí)重試機(jī)制的問(wèn)題原因分析及解決方案

    Dubbo?retries?超時(shí)重試機(jī)制的問(wèn)題原因分析及解決方案

    這篇文章主要介紹了Dubbo?retries?超時(shí)重試機(jī)制的問(wèn)題,解決方案是通過(guò)修改dubbo服務(wù)提供方,將timeout超時(shí)設(shè)為20000ms或者設(shè)置retries=“0”,禁用超時(shí)重試機(jī)制,感興趣的朋友跟隨小編一起看看吧
    2022-04-04
  • mysql數(shù)據(jù)庫(kù)忘記密碼時(shí)如何修改

    mysql數(shù)據(jù)庫(kù)忘記密碼時(shí)如何修改

    本文主要介紹了mysql數(shù)據(jù)庫(kù)忘記密碼時(shí)如何修改的步驟方法,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • 在Java中按值調(diào)用和按引用調(diào)用

    在Java中按值調(diào)用和按引用調(diào)用

    這篇文章主要介紹了Java中的按值調(diào)用和按引用調(diào)用,一種是按值調(diào)用,另一種是按引用調(diào)用,這兩種方式通常根據(jù)作為輸入或參數(shù)傳遞給它們的值的類型來(lái)區(qū)分,下文相關(guān)的更多詳細(xì)資料感興趣的小伙伴可以參考一下
    2022-04-04
  • springboot+knife4j+nacos實(shí)踐

    springboot+knife4j+nacos實(shí)踐

    這篇文章主要介紹了springboot+knife4j+nacos實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Spring+MyBatis多數(shù)據(jù)源配置實(shí)現(xiàn)示例

    Spring+MyBatis多數(shù)據(jù)源配置實(shí)現(xiàn)示例

    本篇文章主要介紹了Spring+MyBatis多數(shù)據(jù)源配置實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • java模擬http的Get/Post請(qǐng)求,并設(shè)置ip與port代理的方法

    java模擬http的Get/Post請(qǐng)求,并設(shè)置ip與port代理的方法

    下面小編就為大家?guī)?lái)一篇java模擬http的Get/Post請(qǐng)求,并設(shè)置ip與port代理的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02

最新評(píng)論

二连浩特市| 舞阳县| 郴州市| 武城县| 海阳市| 海淀区| 汨罗市| 长垣县| 沁源县| 连江县| 武安市| 商河县| 自治县| 紫金县| 尚志市| 泾源县| 宁蒗| 黎川县| 岐山县| 土默特左旗| 凤阳县| 德钦县| 元谋县| 同江市| 平陆县| 探索| 嘉善县| 浦北县| 平凉市| 象州县| 延寿县| 纳雍县| 五华县| 鄂州市| 乌兰察布市| 玉田县| 葵青区| 三亚市| 阿拉尔市| 华蓥市| 莱芜市|