Spring Boot 2.3提供K8s活性和就緒性探針,將成為核心概念積極擁抱K8s! - spring.io

banq發表於2020-03-26

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探針.端點:"/actuator/health";"/actuator/health/liveness"和"/actuator/health/readiness"。

詳細點選標題進入

 

相關文章