欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

手把手教你k8s部署springboot服務

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

1.前言

在看到此文章之前,想必你已經知道如何啟動一個spring boot應用,知道如何通過docker運行你的spring boot服務。

你可能會有這樣得疑問,已經了解如上部署方式,是否還有必須去了解如何通過k8s部署spring boot應用?

如果你有這樣的疑問,那么請繼續(xù)往下看。

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

在介紹k8s部署spring boot應用之前,我們需要創(chuàng)建一個spring boot應用。

2.1 編寫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 編寫程序

@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 應用打包

通過mvn clean package -X命令對該應用進行打包,執(zhí)行完命令后可以看到target目錄下生成了一個xxx.jar的包

3.構建鏡像

有了應用包,需要編寫Dockerfile文件將應用包構建成一個鏡像

3.1 編寫Dockerfile

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

3.2 構建鏡像

有了jar包和Dockerfile文件就可以使用docker build -t a601942905/app .命令來構建鏡像

3.2.1 查看鏡像是否構建成功

構建完鏡像后則可以通過docker images命令來查看是否存在剛才構建的鏡像,存在則說明鏡像構建成功

3.2.2 驗證鏡像的正確性

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

使用docker ps命令查看容器是否正常啟動,如果正常啟動,可以通過curl localhost:8080訪問服務接口, 正常響應,則說明鏡像可以正常使用

3.3 推送鏡像

為了讓k8s能夠拉取到鏡像,需要將構建好的本地鏡像通過docker push a601942905/app命令推送到遠程倉庫

4.k8s

有了鏡像,就可以使用k8s來部署服務

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 訪問服務

在瀏覽器中輸入ip + 端口即可訪問對應的服務

4.4 服務擴容

kubectl scale --replicas=5 deployment/myapp

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

4.5 服務縮容

kubectl scale --replicas=3 deployment/myapp

過了業(yè)務高峰期,之前擴容的服務就會存在冗余,造成資源浪費??梢酝ㄟ^如上方式實現服務縮容,從而達到服務降本的目的

4.6 服務自愈

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

4.7 服務滾動更新

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

服務發(fā)布后,如果發(fā)布服務的配置存在問題,導致服務無法啟動,此時整個應用都無法對外提供服務。滾動更新會先啟動一個新服務,當新服務啟動后再關掉一個舊服務,這樣即便服務由于配置問題無法啟動,也不會影響線上服務,從而提高服務的slo

4.8 版本回退

kubectl rollout undo deploy/myapp

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

5.總結

看到這里,想必你已經知道為什么要了解k8s來部署服務。因為k8s可以輕松實現服務擴容服務縮容、服務自愈、服務滾動更新服務版本回退

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

相關文章

  • Redis六大數據類型使用方法詳解

    Redis六大數據類型使用方法詳解

    這篇文章主要介紹了Redis六大數據類型使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • Java基礎教程之final關鍵字淺析

    Java基礎教程之final關鍵字淺析

    這篇文章主要給大家介紹了關于Java基礎教程之final關鍵字的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • 淺談基于SpringBoot實現一個簡單的權限控制注解

    淺談基于SpringBoot實現一個簡單的權限控制注解

    這篇文章主要介紹了基于SpringBoot實現一個簡單的權限控制注解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Mybatis查詢返回兩個或多個參數問題

    Mybatis查詢返回兩個或多個參數問題

    這篇文章主要介紹了Mybatis查詢返回兩個或多個參數問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 一文徹底弄懂Java中MultipartFile接口和File類

    一文徹底弄懂Java中MultipartFile接口和File類

    MultipartFile是一個接口,我們可以理解為是Spring?給我們綁定的一個在使用文件上傳等時簡便實現的口子,這篇文章主要給大家介紹了關于如何通過一文徹底弄懂Java中MultipartFile接口和File類的相關資料,需要的朋友可以參考下
    2023-11-11
  • Java多線程正確使用倒計時協調器CountDownLatch方法詳解

    Java多線程正確使用倒計時協調器CountDownLatch方法詳解

    這篇文章主要為大家介紹了Java多線程倒計時協調器CountDownLatch的正確使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • SpringBoot項目的配置文件中設置server.port不生效問題

    SpringBoot項目的配置文件中設置server.port不生效問題

    這篇文章主要介紹了SpringBoot項目的配置文件中設置server.port不生效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 關于@RequestParam注解的使用(簡單易懂)

    關于@RequestParam注解的使用(簡單易懂)

    這篇文章主要介紹了關于@RequestParam注解的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 基于Java編寫一個限流工具類RateLimiter

    基于Java編寫一個限流工具類RateLimiter

    這篇文章主要為大家詳細介紹了如何基于Java編寫一個限流工具類RateLimiter,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • Java Socket通信介紹及可能遇到的問題解決

    Java Socket通信介紹及可能遇到的問題解決

    最近在學習Java中的Socket通信,所以下面這篇文章主要給大家介紹了關于Java Socket通信介紹及可能遇到問題的解決方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2017-10-10

最新評論