web-dev-qa-db-ja.com

Kubernetes-Liveness and Readinessプローブの実装

Springを使用してサービスを開発し、OpenShiftにデプロイしています。現在、Spring Actuatorヘルスエンドポイントを使用して、Kubernetesの活性と準備のプローブとして機能しています。

ただし、Actuatorヘルスエンドポイントの別のサービスへの呼び出しを追加します。その場合、サービスに新しい活性プローブを実装する必要があるようです。それを行わないと、2番目のサービスで障害が発生し、活性プローブで障害が発生し、Kubernetesは実際に必要なくサービスを再起動します。

活性プローブの場合、単純なRESTコントローラーを実装して、常にHTTPステータス200を返すことはできますか?機能する場合、サービスは常に生きていると見なすことができますか?それを行う方法?

12
dplesa

(他の回答で提案されているように)準備のためにカスタムコントローラーを作成するのではなく、Spring Boot Actuatorはこれを本質的にサポートしています。

準備

Spring Boot 2.0+では、Spring Boot Actuatorで準備プローブを実装するのは非常に簡単です。

@Component
@Endpoint(id = "readiness")
public class ReadinessEndpoint {

    @ReadOperation
    public String getReadiness() {
        // do a custom check for readiness
        if (...) {

        } else {
            throw new RuntimeException("Not ready");
        }
    }
}

このエンドポイントは(デフォルトで)/actuator/readinessで使用できます。これは構成可能です。

活気

Livelinessは、/actuator/healthに(デフォルトで)配置されているSpring Boot Actuatorヘルスエンドポイントですでに使用可能です。これは構成可能です。

0
dustin.schultz