Kubernetes Startupプローブヘルスチェック

起動が遅いアプリケーション向けのKubernetes Startupプローブレスポンスを設計します。StartupプローブはLivenessチェックを初期化中に無効にし、早期の再起動を防ぎます。

Kubernetes

詳細な説明

Kubernetes Startupプローブ

Startupプローブは、起動が遅いアプリケーションが初期化完了前にLivenessプローブによって強制終了されることを防ぎます。コンテナ起動時にのみ実行され、成功するまでLivenessとReadinessプローブを無効にします。

レスポンス形式

{
  "status": "ok",
  "started": true,
  "checks": {
    "databaseMigration": { "status": "completed" },
    "cacheWarmup": { "status": "completed" },
    "configLoaded": { "status": "completed" }
  }
}

初期化中:

{
  "status": "fail",
  "started": false,
  "checks": {
    "databaseMigration": { "status": "completed" },
    "cacheWarmup": { "status": "in_progress" },
    "configLoaded": { "status": "completed" }
  }
}

プローブ設定

startupProbe:
  httpGet:
    path: /startup
    port: 8080
  initialDelaySeconds: 0
  periodSeconds: 5
  timeoutSeconds: 3
  failureThreshold: 30   # 30 * 5s = 最大150秒の起動時間

一般的な起動タスク

タスク 典型的な所要時間 影響
データベースマイグレーション 10-60秒 スキーマの準備が必要
キャッシュウォームアップ 5-30秒 コールドキャッシュはレイテンシの原因
設定読み込み 1-5秒 アプリに設定が必要
コネクションプーリング 2-10秒 DBプール初期化

Startupプローブを使う理由

Startupプローブなしでは、LivenessプローブのinitialDelaySecondsを最悪の起動時間に合わせて高く設定する必要があります。Startupプローブは起動時間と継続的なヘルスチェックを分離し、遅い起動をサポートしながらLivenessプローブの間隔を短くできます。

ユースケース

Java/JVMアプリケーション、起動時にデータベースマイグレーションを実行するサービス、またはKubernetes環境でトラフィック処理前にキャッシュのウォームアップが必要なアプリケーション。

試してみる — Health Check Endpoint Designer

フルツールを開く