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

K8S(Docker)如何優(yōu)雅的關(guān)閉SpringBoot微服務(wù)

 更新時間:2025年01月26日 09:08:39   作者:Roc.Chang  
這篇文章主要介紹了K8S(Docker)如何優(yōu)雅的關(guān)閉SpringBoot微服務(wù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

K8S(Docker)優(yōu)雅的關(guān)閉SpringBoot微服務(wù)

最近在折騰 K8S,當(dāng)刪掉一個 Pod 之后(一個 Pod 上部署了一個微服務(wù)實(shí)例),Eureka Server 竟然沒有將該服務(wù)實(shí)例標(biāo)記成 DOWN,正常來說,當(dāng)一個 Eureka Client 關(guān)閉的時候會發(fā)送一個請求給 Eureka ServerEureka Server 會馬上的將服務(wù)標(biāo)記為 DOWN 狀態(tài),具體可以看本地開發(fā)日志。

o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
com.netflix.discovery.DiscoveryClient    : Shutting down DiscoveryClient ...
com.netflix.discovery.DiscoveryClient    : Unregistering ...
com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ZUUL-SERVICE/192.168.8.14:zuul-service:5555 - deregister  status: 200
com.netflix.discovery.DiscoveryClient    : Completed shut down of DiscoveryClient

其實(shí)解決起來并沒有很高大上,關(guān)鍵問題是就是 Docker 語法的區(qū)別,因為 Docker 容器在 stop 的時候,只有 pid 為 1 的進(jìn)程才能接收到終止信號,而 DockerCMD 命令與 ENTRYPOINT 命令都有兩種類型的執(zhí)行方式:

  • 一種是 exec 也就是帶中括號的
  • 另一種是 shell 方式,也就是不帶中括號,在使用的過程中只要使用 exec 的就能保證 Java 命令是在 pid1 的進(jìn)程上執(zhí)行。

具體解決

  • CMD 方式:
CMD ["/bin/bash", "-c", "java -jar /webapp/zuul-admin.jar"]

# 如果需要添加參數(shù),可以這樣做
ENV COMMON="-Xms128m -Xmx128m"
CMD ["/bin/bash", "-c", "java $COMMOND -jar /webapp/zuul-admin.jar"]

# 反例,錯誤使用,如果是這樣的的話,那么需要在 docker run 的時候通過 -e "COMMON=xxx" 進(jìn)行傳參
CMD ["/bin/bash", "-c", "java", "$COMMOND", "-jar /webapp/zuul-admin.jar"]

# shell 模式,這種模式啟動的 pid 不為 1
CMD java -jar /webapp/zuul-admin.jar

# shell 模式帶參數(shù),這種模式啟動的 pid 不為 1
ENV COMMON="-Xms128m -Xmx128m"
CMD java -jar $COMMON /webapp/zuul-admin.jar
  • 除了使用 CMD 命令外,還可以使用 ENTRYPOINT 命令,使用方法一樣:
ENTRYPOINT ["/bin/bash", "-c", "java -jar /webapp/zuul-admin.jar"]

# 如果需要添加參數(shù),可以這樣做
ENV COMMON="-Xms128m -Xmx128m"
ENTRYPOINT ["/bin/bash", "-c", "java $COMMOND -jar /webapp/zuul-admin.jar"]

# 反例,錯誤使用,如果是這樣的的話,那么需要在 docker run 的時候通過 -e "COMMON=xxx" 進(jìn)行傳參
ENTRYPOINT ["/bin/bash", "-c", "java", "$COMMOND", "-jar /webapp/zuul-admin.jar"]

# shell 模式,這種模式啟動的 pid 不為 1
ENTRYPOINT java -jar /webapp/zuul-admin.jar

# shell 模式帶參數(shù),這種模式啟動的 pid 不為 1
ENV COMMON="-Xms128m -Xmx128m"
ENTRYPOINT java -jar $COMMON /webapp/zuul-admin.jar

后續(xù)有問題,還是需要多看文檔:

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java使用代碼模擬高并發(fā)操作的示例

    Java使用代碼模擬高并發(fā)操作的示例

    本篇文章主要介紹了Java使用代碼模擬高并發(fā)操作的示例,Java通過代碼模擬高并發(fā)可以以最快的方式發(fā)現(xiàn)我們系統(tǒng)中潛在的線程安全性問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 基于SpringBoot實(shí)現(xiàn)IP黑白名單的詳細(xì)步驟

    基于SpringBoot實(shí)現(xiàn)IP黑白名單的詳細(xì)步驟

    IP黑白名單是網(wǎng)絡(luò)安全管理中常見的策略工具,用于控制網(wǎng)絡(luò)訪問權(quán)限,根據(jù)業(yè)務(wù)場景的不同,其應(yīng)用范圍廣泛,比如比較容易被盜刷的短信接口、文件接口,都需要添加IP黑白名單加以限制,所以本文給大家介紹了基于SpringBoot實(shí)現(xiàn)IP黑白名單的詳細(xì)步驟,需要的朋友可以參考下
    2024-01-01
  • Java多線程中線程池常見7個參數(shù)的詳解以及執(zhí)行流程

    Java多線程中線程池常見7個參數(shù)的詳解以及執(zhí)行流程

    本文主要介紹了Java多線程中線程池常見7個參數(shù)的詳解以及執(zhí)行流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • RestTemplate get請求攜帶headers自動拼接參數(shù)方式

    RestTemplate get請求攜帶headers自動拼接參數(shù)方式

    這篇文章主要介紹了RestTemplate get請求攜帶headers自動拼接參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 淺談Java編程中的單例設(shè)計模式

    淺談Java編程中的單例設(shè)計模式

    這篇文章主要介紹了Java編程中的單例設(shè)計模式,在許多語言的編程過程當(dāng)中單例模式都被開發(fā)者們廣泛采用,需要的朋友可以參考下
    2015-07-07
  • java 導(dǎo)入Excel思路及代碼示例

    java 導(dǎo)入Excel思路及代碼示例

    這篇文章主要介紹了java 導(dǎo)入Excel思路及代碼示例,簡要分析了設(shè)計思路,然后分享了實(shí)例代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實(shí)現(xiàn)定時任務(wù)

    spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實(shí)現(xiàn)定時任務(wù)

    這篇文章主要介紹了spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實(shí)現(xiàn)定時任務(wù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Spring Cloud Admin健康檢查 郵件、釘釘群通知的實(shí)現(xiàn)

    Spring Cloud Admin健康檢查 郵件、釘釘群通知的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Cloud Admin健康檢查 郵件、釘釘群通知的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 關(guān)于JavaEE匿名內(nèi)部類和Lambda表達(dá)式的注意事項

    關(guān)于JavaEE匿名內(nèi)部類和Lambda表達(dá)式的注意事項

    這篇文章主要介紹了關(guān)于JavaEE匿名內(nèi)部類和Lambda表達(dá)式的注意事項,匿名內(nèi)部類顧名思義是沒有修飾符甚至沒有名稱的內(nèi)部類,使用匿名內(nèi)部類需要注意哪些地方,我們一起來看看吧
    2023-03-03
  • 淺談Strut2如何對請求參數(shù)的封裝

    淺談Strut2如何對請求參數(shù)的封裝

    這篇文章主要介紹了淺談Strut2如何對請求參數(shù)的封裝,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12

最新評論