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

手把手教你k8s部署springboot服務(wù)

 更新時(shí)間:2023年07月09日 09:01:01   作者:黑白搬磚工  
本文主要介紹了手把手教你k8s部署springboot服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1.前言

在看到此文章之前,想必你已經(jīng)知道如何啟動(dòng)一個(gè)spring boot應(yīng)用,知道如何通過(guò)docker運(yùn)行你的spring boot服務(wù)。

你可能會(huì)有這樣得疑問(wèn),已經(jīng)了解如上部署方式,是否還有必須去了解如何通過(guò)k8s部署spring boot應(yīng)用?

如果你有這樣的疑問(wèn),那么請(qǐng)繼續(xù)往下看。

2.創(chuàng)建SpringBoot應(yīng)用

在介紹k8s部署spring boot應(yīng)用之前,我們需要?jiǎng)?chuàng)建一個(gè)spring boot應(yīng)用。

2.1 編寫(xiě)pom.xml

<?xml version="1.0" encoding="UTF-8"?>
?
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 ? ? ? ? xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 ? ?<parent>
 ? ? ? ?<artifactId>boot-example-advance</artifactId>
 ? ? ? ?<groupId>com.boot.example</groupId>
 ? ? ? ?<version>1.0-SNAPSHOT</version>
 ? ?</parent>
?
 ? ?<modelVersion>4.0.0</modelVersion>
 ? ?<artifactId>boot-example-docker</artifactId>
 ? ?<version>1.0-SNAPSHOT</version>
?
 ? ?<name>boot-example-docker</name>
 ? ?<url>http://www.example.com</url>
?
 ? ?<dependencies>
 ? ? ? ?<dependency>
 ? ? ? ? ? ?<groupId>org.springframework.boot</groupId>
 ? ? ? ? ? ?<artifactId>spring-boot-starter-web</artifactId>
 ? ? ? ?</dependency>
 ? ?</dependencies>
?
 ? ?<build>
 ? ? ? ?<plugins>
 ? ? ? ? ? ?<plugin>
 ? ? ? ? ? ? ? ?<groupId>org.springframework.boot</groupId>
 ? ? ? ? ? ? ? ?<artifactId>spring-boot-maven-plugin</artifactId>
 ? ? ? ? ? ? ? ?<executions>
 ? ? ? ? ? ? ? ? ? ?<execution>
 ? ? ? ? ? ? ? ? ? ? ? ?<goals>
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?<goal>repackage</goal>
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?<goal>build-info</goal>
 ? ? ? ? ? ? ? ? ? ? ? ?</goals>
 ? ? ? ? ? ? ? ? ? ?</execution>
 ? ? ? ? ? ? ? ?</executions>
 ? ? ? ? ? ?</plugin>
 ? ? ? ?</plugins>
 ? ?</build>
</project>

2.2 編寫(xiě)程序

@SpringBootApplication
@RestController
public class DockerApplication {
?
?
 ? ?@GetMapping("/")
 ? ?public String home() {
 ? ? ? ?try {
 ? ? ? ? ? ?return "Hello Docker World:" + InetAddress.getLocalHost().getHostAddress();
 ? ? ?  } catch (UnknownHostException e) {
 ? ? ? ? ? ?return "Hello Docker World";
 ? ? ?  }
 ?  }
?
 ? ?public static void main(String[] args) {
 ? ? ? ?SpringApplication.run(DockerApplication.class, args);
 ?  }
}

2.3 應(yīng)用打包

通過(guò)mvn clean package -X命令對(duì)該應(yīng)用進(jìn)行打包,執(zhí)行完命令后可以看到target目錄下生成了一個(gè)xxx.jar的包

3.構(gòu)建鏡像

有了應(yīng)用包,需要編寫(xiě)Dockerfile文件將應(yīng)用包構(gòu)建成一個(gè)鏡像

3.1 編寫(xiě)Dockerfile

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

3.2 構(gòu)建鏡像

有了jar包和Dockerfile文件就可以使用docker build -t a601942905/app .命令來(lái)構(gòu)建鏡像

3.2.1 查看鏡像是否構(gòu)建成功

構(gòu)建完鏡像后則可以通過(guò)docker images命令來(lái)查看是否存在剛才構(gòu)建的鏡像,存在則說(shuō)明鏡像構(gòu)建成功

3.2.2 驗(yàn)證鏡像的正確性

如果本地存在構(gòu)建的鏡像,可以通過(guò)docker run --name myapp -p 8080:8080 -d a601942905/app命令將鏡像啟動(dòng)成容器

使用docker ps命令查看容器是否正常啟動(dòng),如果正常啟動(dòng),可以通過(guò)curl localhost:8080訪問(wèn)服務(wù)接口, 正常響應(yīng),則說(shuō)明鏡像可以正常使用

3.3 推送鏡像

為了讓k8s能夠拉取到鏡像,需要將構(gòu)建好的本地鏡像通過(guò)docker push a601942905/app命令推送到遠(yuǎn)程倉(cāng)庫(kù)

4.k8s

有了鏡像,就可以使用k8s來(lái)部署服務(wù)

4.1 創(chuàng)建deployment

kubectl create deployment myapp --image=a601942905/app

4.2 創(chuàng)建service

kubectl expose deployment myapp --type=NodePort --port=8080

4.3 訪問(wèn)服務(wù)

在瀏覽器中輸入ip + 端口即可訪問(wèn)對(duì)應(yīng)的服務(wù)

4.4 服務(wù)擴(kuò)容

kubectl scale --replicas=5 deployment/myapp

擴(kuò)容之后可以看到同時(shí)存在5個(gè)myapp pod服務(wù),這在實(shí)際場(chǎng)景中是非常有用的。當(dāng)我們的服務(wù)壓力過(guò)大、負(fù)載過(guò)高時(shí),就可以通過(guò)該方式實(shí)現(xiàn)服務(wù)擴(kuò)容,使得服務(wù)可以提供更高的并發(fā)能力,渡過(guò)高峰期。

4.5 服務(wù)縮容

kubectl scale --replicas=3 deployment/myapp

過(guò)了業(yè)務(wù)高峰期,之前擴(kuò)容的服務(wù)就會(huì)存在冗余,造成資源浪費(fèi)。可以通過(guò)如上方式實(shí)現(xiàn)服務(wù)縮容,從而達(dá)到服務(wù)降本的目的

4.6 服務(wù)自愈

服務(wù)在運(yùn)行的過(guò)程中,由于某些原因會(huì)導(dǎo)致pod故障,從而造成對(duì)外提供服務(wù)的數(shù)量減少。在業(yè)務(wù)高峰時(shí)期,這種故障的產(chǎn)生可能會(huì)拖垮整個(gè)服務(wù),從而導(dǎo)致無(wú)法對(duì)外提供服務(wù)。使用k8s完全不用擔(dān)心這種故障的發(fā)生,當(dāng)pod服務(wù)故障后,k8s會(huì)重新啟動(dòng)一個(gè)新pod服務(wù)

4.7 服務(wù)滾動(dòng)更新

kubectl set image deploy/myapp app=a601942905/app:latest

服務(wù)發(fā)布后,如果發(fā)布服務(wù)的配置存在問(wèn)題,導(dǎo)致服務(wù)無(wú)法啟動(dòng),此時(shí)整個(gè)應(yīng)用都無(wú)法對(duì)外提供服務(wù)。滾動(dòng)更新會(huì)先啟動(dòng)一個(gè)新服務(wù),當(dāng)新服務(wù)啟動(dòng)后再關(guān)掉一個(gè)舊服務(wù),這樣即便服務(wù)由于配置問(wèn)題無(wú)法啟動(dòng),也不會(huì)影響線上服務(wù),從而提高服務(wù)的slo

4.8 版本回退

kubectl rollout undo deploy/myapp

服務(wù)發(fā)版不可以避免的一個(gè)問(wèn)題:本地、測(cè)試環(huán)境測(cè)的好好的,一到線上就報(bào)錯(cuò)。遇到這種情況,我們的第一反應(yīng)就是版本回退,從而讓服務(wù)恢復(fù)到正常狀態(tài)

5.總結(jié)

看到這里,想必你已經(jīng)知道為什么要了解k8s來(lái)部署服務(wù)。因?yàn)?code>k8s可以輕松實(shí)現(xiàn)服務(wù)擴(kuò)容、服務(wù)縮容、服務(wù)自愈、服務(wù)滾動(dòng)更新服務(wù)版本回退

到此這篇關(guān)于手把手教你k8s部署springboot服務(wù)的文章就介紹到這了,更多相關(guān)k8s部署springboot服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • RabbitMQ 3.9.7 鏡像模式集群與Springboot 2.5.5 整合

    RabbitMQ 3.9.7 鏡像模式集群與Springboot 2.5.5 整合

    今天我們來(lái)聊聊 RabbitMQ 3.9.7 鏡像模式集群與Springboot 2.5.5 整合,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-10-10
  • java垃圾回收原理之GC算法基礎(chǔ)

    java垃圾回收原理之GC算法基礎(chǔ)

    本章簡(jiǎn)要介紹GC的基本原理和相關(guān)技術(shù), 下一章節(jié)再詳細(xì)講解GC算法的具體實(shí)現(xiàn)。各種垃圾收集器的實(shí)現(xiàn)細(xì)節(jié)雖然并不相同,但總體而言,垃圾收集器都專(zhuān)注于兩件事情:查找所有存活對(duì)象,拋棄其他的部分,即死對(duì)象,不再使用的對(duì)象
    2022-01-01
  • SpringBoot整合RabbitMQ實(shí)現(xiàn)通配符模式

    SpringBoot整合RabbitMQ實(shí)現(xiàn)通配符模式

    本文主要介紹了SpringBoot整合RabbitMQ實(shí)現(xiàn)通配符模式,包括依賴(lài)添加、配置、隊(duì)列與交換機(jī)聲明及綁定,生產(chǎn)者發(fā)送消息,兩個(gè)消費(fèi)者分別接收并處理,驗(yàn)證消息正確分發(fā)至不同隊(duì)列,感興趣的可以了解一下
    2025-06-06
  • spring boot如何基于JWT實(shí)現(xiàn)單點(diǎn)登錄詳解

    spring boot如何基于JWT實(shí)現(xiàn)單點(diǎn)登錄詳解

    這篇文章主要介紹了spring boot如何基于JWT實(shí)現(xiàn)單點(diǎn)登錄詳解,用戶(hù)只需登錄一次就能夠在這兩個(gè)系統(tǒng)中進(jìn)行操作。很明顯這就是單點(diǎn)登錄(Single Sign-On)達(dá)到的效果,需要的朋友可以參考下
    2019-06-06
  • springboot配置kafka批量消費(fèi),并發(fā)消費(fèi)方式

    springboot配置kafka批量消費(fèi),并發(fā)消費(fèi)方式

    文章介紹了如何在Spring Boot中配置Kafka進(jìn)行批量消費(fèi),并發(fā)消費(fèi),需要注意的是,并發(fā)量必須小于等于分區(qū)數(shù),否則會(huì)導(dǎo)致線程空閑,文章還總結(jié)了創(chuàng)建Kafka分區(qū)的命令,并鼓勵(lì)讀者分享經(jīng)驗(yàn)
    2024-12-12
  • Java開(kāi)發(fā)必備的三大修飾符

    Java開(kāi)發(fā)必備的三大修飾符

    JAVA的三個(gè)修飾:static,final,abstract,在JAVA語(yǔ)言里無(wú)處不在,但是它們都能修飾什么組件,修飾組件的含義又有什么限制,總是混淆.所以來(lái)總結(jié)一下,需要的朋友可以參考下
    2021-06-06
  • Springboot網(wǎng)站第三方登錄 微信登錄

    Springboot網(wǎng)站第三方登錄 微信登錄

    這篇文章主要為大家詳細(xì)介紹了Springboot網(wǎng)站第三方登錄 ,微信登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 解決Springboot-application.properties中文亂碼問(wèn)題

    解決Springboot-application.properties中文亂碼問(wèn)題

    這篇文章主要介紹了解決Springboot-application.properties中文亂碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中hasNextInt()的使用場(chǎng)景和注意事項(xiàng)

    Java中hasNextInt()的使用場(chǎng)景和注意事項(xiàng)

    hasNextInt()方法是判斷控制臺(tái)接收是否為整型數(shù)字,而不是接收數(shù)據(jù),這篇文章主要介紹了Java中hasNextInt()的使用場(chǎng)景和注意事項(xiàng)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-05-05
  • Java后臺(tái)定時(shí)器導(dǎo)致系統(tǒng)崩潰的原因和解決方法

    Java后臺(tái)定時(shí)器導(dǎo)致系統(tǒng)崩潰的原因和解決方法

    這篇文章主要介紹了Java后臺(tái)定時(shí)器導(dǎo)致系統(tǒng)崩潰的原因和解決方法,主要涵蓋了常見(jiàn)定時(shí)器類(lèi)型、系統(tǒng)崩潰的常見(jiàn)根因、真場(chǎng)景總結(jié)以及具體案例,需要的朋友可以參考下
    2025-11-11

最新評(píng)論

蓬安县| 虹口区| 英超| 永寿县| 昌乐县| 六枝特区| 阜宁县| 西和县| 南川市| 荔波县| 布尔津县| 云霄县| 桃源县| 霍林郭勒市| 马龙县| 天气| 海门市| 景东| 甘洛县| 房产| 峡江县| 宜宾市| 乌恰县| 郎溪县| 平江县| 孝昌县| 阿克陶县| 忻州市| 沿河| 大余县| 芮城县| 汕尾市| 屯留县| 临武县| 新邵县| 汝城县| 长丰县| 精河县| 石泉县| 子洲县| 新巴尔虎右旗|