亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot應用快速部署到K8S的詳細教程

 更新時間:2020年12月16日 08:41:02   作者:zq2599  
這篇文章主要介紹了SpringBoot應用快速部署到K8S的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos

內容:

所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

背景

對于生產環(huán)境,我們一般會用CI&&CD工具完成整個構建和部署,因此本文不適合生產環(huán)境;對于學習和開發(fā)環(huán)境,我們頻繁修改代碼,又想快速見到效果,本文就是針對這種場景的;

內容簡介

  1. 如果您正在開發(fā)SpringBoot應用,并且應用部署在K8S環(huán)境,可以參考本文將應用快速部署到K8S環(huán)境;
  2. 文中SpringBoot的版本是2.3.0.RELEASE,從該版本起,SpringBoot官方推薦了一種新的docker鏡像構建方案,如果您是之前的版本,請自行修改文中構建鏡像的部分;

環(huán)境信息

本次實戰(zhàn)有兩個環(huán)境:開發(fā)和運行環(huán)境,其中開發(fā)環(huán)境信息如下:

  • 操作系統:Ubuntu 20.04 LTS 桌面版(同樣驗證過的還有:MacBook pro 13寸,macOS Catalina 10.15.4)
  • CPU :2.30GHz × 4,內存:32G,硬盤:1T NVMe
  • JDK:1.8.0_231
  • MAVEN:3.6.3
  • SpringBoot:2.3.0.RELEASE
  • Docker:19.03.10
  • 開發(fā)工具:IDEA 2020.1.1 (Ultimate Edition)

運行環(huán)境信息如下:

  • 操作系統:CentOS Linux release 7.8.2003
  • Kubernetes:1.15

另外,請在開發(fā)環(huán)境安裝sshpass;

SpringBoot工程源碼

本次實戰(zhàn)用到了一個普通的SpringBoot工程,源碼可在GitHub下載到,地址和鏈接信息如下表所示(https://github.com/zq2599/blog_demos): 名稱 鏈接 備注項目主頁https://github.com/zq2599/blog_demos該項目在GitHub上的主頁git倉庫地址(https)https://github.com/zq2599/blog_demos.git該項目源碼的倉庫地址,https協議git倉庫地址(ssh)git@github.com:zq2599/blog_demos.git該項目源碼的倉庫地址,ssh協議

這個git項目中有多個文件夾,本章的應用在probedemo文件夾下,如下圖紅框所示:

必要的內容

整個工程是普通SpringBoot工程,除了常見的pom.xml和源碼,還多了以下三個文件:

  • Dockerfile文件用來構建docker鏡像,如果您的SpringBoot版本為2.3.0.RELEASE或者更高,建議使用SpringBoot官方推薦的鏡像構建方式,此Dockerfile可以用來參考;
  • 和probedemo.yaml文件和您的具體項目有關,請自行修改,確??梢杂脕聿渴餯eployment和service;
  • auto_deploy.sh是可以快速部署的關鍵,接下來詳細說明;

auto_deploy.sh詳述

auto_deploy.sh的作用如下:

  • 調用maven命令編輯構建工程;
  • 將構建好的jar文件制作成docker鏡像;
  • 將docker鏡像導出為tar文件;
  • 將tar文件上傳到K8S服務器;
  • 將probedemo.yaml文件發(fā)送到K8S服務器;
  • 通過sshpass遠程執(zhí)行命令,將docker鏡像導入K8S服務器的本地docker倉庫;
  • 通過sshpass遠程執(zhí)行命令,部署deployment和service;
  • auto_deploy.sh的完整內容如下:
#!/bin/bash

# 判斷是否安裝了sshpass
if ! [ -x "$(command -v sshpass)" ]; then
 echo '請安裝sshpass后再使用此腳本!'
 exit 1
fi

# 鏡像名
IMAGE_NAME='bolingcavalry/probedemo'

# TAG名
TAG_NAME='0.0.1'

# 配置了deployment和service的yaml文件名
DEPLOY_SERVICE_YAML='probedemo.yaml'

# K8S環(huán)境的IP地址
K8S_IP_ADDRESS='192.168.50.135'

# K8S環(huán)境的SSH賬號
K8S_SSH_ACCOUNT='root'

# 8S環(huán)境的SSH密碼
K8S_SSH_PSWD='888888'

# K8S上存放tar和yaml文件的位置
K8S_FILE_PATH='~/deploy_temp'

# 當前名目錄
CURRENT_DIR=`pwd`

echo '開始自動構建和部署,當前目錄是:'${CURRENT_DIR}

# 執(zhí)行maven命令構建項目
mvn clean package -U -DskipTests

echo "構建鏡像文件:"${IMAGE_NAME}/${TAG_NAME}
docker build -t ${IMAGE_NAME}/${TAG_NAME} .

echo "將鏡像導出為tar文件:"${IMAGE_NAME}/${TAG_NAME}
docker save ${IMAGE_NAME}/${TAG_NAME} > ${CURRENT_DIR}/image.tar

echo "在K8S服務器創(chuàng)建存放文件的目錄:"${K8S_FILE_PATH}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "mkdir -p ${K8S_FILE_PATH}"

echo "將yaml文件發(fā)送到K8S服務器:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} scp ${CURRENT_DIR}/${DEPLOY_SERVICE_YAML} ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS}:${K8S_FILE_PATH}/

echo "將鏡像tar文件發(fā)送到K8S服務器:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} scp ${CURRENT_DIR}/image.tar ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS}:${K8S_FILE_PATH}/

echo "如果K8S環(huán)境之前已經部署過,就先清理:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "kubectl delete -f ${K8S_FILE_PATH}/${DEPLOY_SERVICE_YAML}"

echo "等待10秒"
sleep 10

echo "清理之前加載到本地倉庫的鏡像:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "docker rmi ${IMAGE_NAME}/${TAG_NAME}"

echo "從tar文件加載鏡像:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "docker load < ${K8S_FILE_PATH}/image.tar"

echo "部署:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "kubectl apply -f ${K8S_FILE_PATH}/${DEPLOY_SERVICE_YAML}"

echo "刪除tar文件:"${CURRENT_DIR}/image.tar
rm -rf ${CURRENT_DIR}/image.tar

echo "刪鏡像:"${IMAGE_NAME}/${TAG_NAME}
docker rmi ${IMAGE_NAME}/${TAG_NAME}

實驗

  • 請按照自己的實際情況,修改auto_deploy.sh中變量的值,例如K8S環(huán)境地址、賬號密碼等;
  • 開發(fā)階段,修改java代碼完成;
  • 執(zhí)行腳本auto_deploy.sh;
  • 控制臺提示如下:

部署已經完成,可以驗證功能了;

注意事項

本次實戰(zhàn)更新鏡像的方法是本地導出為tar,再傳到K8S環(huán)境去導入,當K8S環(huán)境有多臺機器時就不適合這樣作了,建議使用私有鏡像倉庫,將鏡像push到倉庫,然后K8S中鏡像倉庫pull鏡像;

至此,SpringBoot應用快速部署到K8S的實戰(zhàn)就完成了,這是我開發(fā)過程中常用的遠程部署手段,希望能給您提供一些參考;

你不孤單,欣宸原創(chuàng)一路相伴

Java系列

Spring系列

Docker系列

kubernetes系列

數據庫+中間件系列

DevOps系列

到此這篇關于SpringBoot應用快速部署到K8S的詳細教程的文章就介紹到這了,更多相關SpringBoot部署到K8S內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實現簡單的酒店管理系統

    Java實現簡單的酒店管理系統

    這篇文章主要為大家詳細介紹了java實現酒店管理系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Java讀取文本文件的各種方法

    Java讀取文本文件的各種方法

    這篇文章主要介紹了Java讀取文本文件的各種方法,在 Java 中有多種方法可以讀取純文本文件,例如你可以使用FileReader、BufferedReader或Scanner來讀取文本文件,感興趣的小伙伴和小編一起進入文章了解更多內容吧,希望能幫助到大家
    2021-11-11
  • Java跳出多重嵌套循環(huán)過程解析

    Java跳出多重嵌套循環(huán)過程解析

    這篇文章主要介紹了Java跳出多重嵌套循環(huán)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java實現小型圖書館管理系統

    Java實現小型圖書館管理系統

    這篇文章主要為大家詳細介紹了Java實現小型圖書館管理系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Java實現發(fā)送短信驗證碼+redis限制發(fā)送的次數功能

    Java實現發(fā)送短信驗證碼+redis限制發(fā)送的次數功能

    這篇文章主要介紹了Java實現發(fā)送短信驗證碼+redis限制發(fā)送的次數,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Spring?Data?JPA系列QueryByExampleExecutor使用詳解

    Spring?Data?JPA系列QueryByExampleExecutor使用詳解

    這篇文章主要為大家介紹了Spring?Data?JPA系列QueryByExampleExecutor使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • SpringMVC如何用Post方式重定向

    SpringMVC如何用Post方式重定向

    這篇文章主要介紹了SpringMVC如何用Post方式重定向,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 解讀CompletableFuture的底層原理

    解讀CompletableFuture的底層原理

    本文探討了Java8中CompletableFuture的原理和應用,詳解其異步編程能力、工作機制及實際使用方法,CompletableFuture通過鏈式調用和狀態(tài)管理優(yōu)化異步任務,提高Java應用的效率和性能
    2024-09-09
  • 快速了解Spring Boot

    快速了解Spring Boot

    這篇文章主要介紹了快速了解Spring Boot,介紹了其環(huán)境準備,URL中的變量以及模板渲染等內容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • SpringMVC中使用@PathVariable綁定路由中的數組的方法

    SpringMVC中使用@PathVariable綁定路由中的數組的方法

    這篇文章主要介紹了SpringMVC中使用@PathVariable綁定路由中的數組的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07

最新評論