擁抱K8S,Spring Boot 2.3提供K8s活性和就緒性探針


Spring Boot 2.3將包括對Kubernetes liveness&readiness Probe的本地支持,擴展了2.2的“運行狀況組”支持,允許開發人員選擇運行狀況指標的子集,並將其分組為單個相關的運行狀況。

Kubernetes的活性Liveness和就緒性probes探針

在Kubernetes中,活性和就緒性Kubernetes概念代表了應用程序狀態的各個方面。

應用程序的活動狀態指示內部狀態是否有效。如果活性Liveness被破壞,則意味着應用程序本身處於故障狀態,無法恢復。在這種情況下,最好的做法是重新啟動應用程序實例。例如,如果本地緩存已損壞且無法修復,則依賴本地緩存的應用程序應失敗其活動狀態。

就緒狀態告知應用程序是否已准備好接受客戶端請求。如果就緒狀態尚未就緒,則Kubernetes不應將流量路由到該實例。如果應用程序太忙於處理任務隊列,則它可以將自己聲明為忙碌,直到可以再次管理其負載為止。

活性和就緒性將成為Spring Boot的核心概念

這些活動性和就緒性概念不僅適用於Kubernetes,而且無論部署平台如何,它們通常都非常有用。我們將介紹LivenessState和ReadinessState,它們是這些概念的不可變表示形式。您可以隨時從中獲取它們ApplicationAvailabilityProvider:

// Available as a component in the application context
ApplicationAvailabilityProvider availabilityProvider;

LivenessState livenessState = availabilityProvider.getLivenessState();
ReadinessState readinessState = availabilityProvider.getReadinessState()

您需要進行檢查以了解應用程序狀態不完整的僅輪詢模型。只有應用程序知道其生命周期(啟動,關閉),或者可以提供有關運行時錯誤的上下文(在處理任務時以中斷狀態結束)。Spring Boot應用程序上下文在應用程序的生命周期中本地發布這些事件;您的應用程序代碼也應該對此有所幫助。

這就是為什么我們選擇使用Spring Application Event模型來更改可用性狀態並監聽更新的原因:

/**

  • Component that checks that the local cache is in a valid state.
    */
    @Component
    public class LocalCacheVerifier {

    private final ApplicationEventPublisher eventPublisher;

    public LocalCacheVerifier(ApplicationEventPublisher eventPublisher) {
    this.eventPublisher = eventPublisher;
    }

    public void checkLocalCache() {
    try {
    //...
    }
    catch (CacheCompletelyBroken ex) {
    this.eventPublisher.publishEvent(LivenessStateChangedEvent.broken(ex));
    }
    }

}

組件還可以通過@EventListener(或通過實現ApplicationListener)偵聽那些事件。請查閱參考文檔以獲取更多信息。

該支持直接隨spring-boot模塊一起提供,並且為所有Spring Boot應用程序激活。這使它可用於所有類型的應用程序(Web,批處理等),並允許您實現不一定與HTTP綁定的探針。

使用Spring Boot Actuator公開Kubernetes探針

您可能會對一個非常常見的用例感興趣:在Kubernetes上部署Web應用程序並配置HTTP探針。將Spring Boot Actuator依賴項添加到您的應用程序是唯一的要求!Actuator將使用運行狀況支持來配置“ 活動性”和“就緒” HTTP探針Rest端點:"/actuator/health";"/actuator/health/liveness"和"/actuator/health/readiness"。

原文:
https://spring.io/blog/2020/03/25/liveness-and-readiness-probes-with-spring-boot


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM