日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

十分鐘教你在 K8s 中部署一個(gè)前后端應(yīng)用

來源: 責(zé)編: 時(shí)間:2024-01-15 09:21:37 231觀看
導(dǎo)讀大家好,我是蝸牛哥,好多開發(fā)人員,尤其是沒接觸過 k8s 的人員對(duì)如何在k8s中部署一個(gè) 前后端應(yīng)用很模糊,不知如何下手,所以本篇講一下如何快速在 k8s 部署一個(gè)前后端應(yīng)用,讓大家對(duì)k8s有個(gè)快速認(rèn)識(shí)前置依賴k8s集群,如果沒有安裝

大家好,我是蝸牛哥,好多開發(fā)人員,尤其是沒接觸過 k8s 的人員對(duì)如何在k8s中部署一個(gè) 前后端應(yīng)用很模糊,不知如何下手,所以本篇講一下如何快速在 k8s 部署一個(gè)前后端應(yīng)用,讓大家對(duì)k8s有個(gè)快速認(rèn)識(shí)tgE28資訊網(wǎng)——每日最新資訊28at.com

前置依賴

  • k8s集群,如果沒有安裝,請(qǐng)參考k8s安裝手冊(cè)
  • kubectl ,客戶端部署需要依賴

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

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

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

代碼地址:https://github.com/dongweizhao/backendtgE28資訊網(wǎng)——每日最新資訊28at.com

Java應(yīng)用打包

調(diào)用sh package.sh會(huì)執(zhí)行mvn的package命令,進(jìn)行打包tgE28資訊網(wǎng)——每日最新資訊28at.com

編寫Dockerfile

從target目錄復(fù)制可執(zhí)行jartgE28資訊網(wǎng)——每日最新資訊28at.com

FROM openjdk:8-jreCOPY target/backend-0.0.1-SNAPSHOT.jar /app.jarENTRYPOINT java -jar ${JAVA_OPTS} /app.jar

鏡像打包推送

執(zhí)行sh push.sh 推送至dockerhub倉(cāng)庫(kù),鏡像地址:dweizhao/backend:latesttgE28資訊網(wǎng)——每日最新資訊28at.com

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

代碼地址:https://github.com/dongweizhao/frontendtgE28資訊網(wǎng)——每日最新資訊28at.com

前端項(xiàng)目結(jié)構(gòu)如下tgE28資訊網(wǎng)——每日最新資訊28at.com

采用百度低代碼平臺(tái)amis進(jìn)行開發(fā)采用百度低代碼平臺(tái)amis進(jìn)行開發(fā)tgE28資訊網(wǎng)——每日最新資訊28at.com

編寫Dockerfile

拷貝前端工程dist目錄至/frontend,并進(jìn)行目錄授權(quán)tgE28資訊網(wǎng)——每日最新資訊28at.com

from nginxcopy ./dist /frontendrun chown nginx.nginx /frontend -Rcopy 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:latesttgE28資訊網(wǎng)——每日最新資訊28at.com

k8s yaml文件配置

以下是我們部署的服務(wù)在k8s 中路由示意圖tgE28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片tgE28資訊網(wǎng)——每日最新資訊28at.com

后端服務(wù)配置

backend-dp.yaml

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

apiVersion: apps/v1kind: Deploymentmetadata:  name:  backendspec:  selector:    matchLabels:      app:  backend  replicas: 1  template:    metadata:      labels:        # service 會(huì)根據(jù)此標(biāo)簽來查找此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)槭峭ㄟ^Ingress在集群內(nèi)訪問,通過 app:backend標(biāo)簽,來查找對(duì)應(yīng)pod,所以 pod 的label必須包含app:backendtgE28資訊網(wǎng)——每日最新資訊28at.com

apiVersion: v1kind: Servicemetadata:  name: backendspec:  type: ClusterIP  ports:    - name: backend-http      port: 8080      targetPort: 8080      protocol: TCP  selector:    # 根據(jù)標(biāo)簽查找 pod    app: backend

前端服務(wù)配置

frontend-dp.yaml

前端鏡像是一個(gè) nginxtgE28資訊網(wǎng)——每日最新資訊28at.com

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

frontend-svc.yaml

apiVersion: v1kind: Servicemetadata:  name: frontendspec:  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)求至ServicetgE28資訊網(wǎng)——每日最新資訊28at.com

注意:k8s不同的版本,對(duì)應(yīng)的Ingress apiVerson有點(diǎn)細(xì)微差別,所以要找到對(duì)應(yīng)k8s版本的Ingress,我們的k8s版本為v1.25.13tgE28資訊網(wǎng)——每日最新資訊28at.com

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

k8s部署

部署使用kubectl進(jìn)行部署,如果沒有請(qǐng)先安裝,安裝完成以后,把以上yaml文件保存至本地tgE28資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建命名空間

kubectl create namespace k8sdemo

部署

部署系統(tǒng)至k8sdemo空間下tgE28資訊網(wǎng)——每日最新資訊28at.com

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

圖片圖片tgE28資訊網(wǎng)——每日最新資訊28at.com

查看系統(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

圖片圖片tgE28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片tgE28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片tgE28資訊網(wǎng)——每日最新資訊28at.com

host 解析

在 hosts 文件中,對(duì)k8sdemo.com域名映射,映射到k8s 的任意node節(jié)點(diǎn)上即可,假設(shè)IP為172.18.2.53,配置如下tgE28資訊網(wǎng)——每日最新資訊28at.com

172.18.2.53 k8sdemo.com

測(cè)試

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

圖片圖片tgE28資訊網(wǎng)——每日最新資訊28at.com

總結(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訪問,否則導(dǎo)致請(qǐng)求異常,同時(shí)應(yīng)用有些文件如果需要持久化,還需要配置存儲(chǔ)卷等操作tgE28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-60974-0.html十分鐘教你在 K8s 中部署一個(gè)前后端應(yīng)用

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Python計(jì)算質(zhì)數(shù)的多種方法

下一篇: 為什么各大物聯(lián)網(wǎng)云廠商都使用MQTT協(xié)議?

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 宁夏| 梅州市| 大理市| 乐清市| 江源县| 乌苏市| 江油市| 鲁甸县| 新沂市| 连云港市| 龙山县| 赤壁市| 临邑县| 襄城县| 苍梧县| 仁化县| 西乌珠穆沁旗| 大田县| 长沙市| 儋州市| 亳州市| 大新县| 洪泽县| 乡宁县| 兴业县| 湘潭县| 宁安市| 涿州市| 抚州市| 鄂托克旗| 东方市| 巴林左旗| 盘锦市| 酒泉市| 东方市| 建昌县| 静海县| 大田县| 平定县| 开原市| 安达市|