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

依存関係の可用性をチェックするKubernetes Readinessプローブレスポンスを設計します。Readinessプローブの失敗は再起動せずにポッドをサービスエンドポイントから除外します。

Kubernetes

詳細な説明

Kubernetes Readinessプローブ

Readinessプローブは、ポッドがトラフィックを処理できるかどうかをKubernetesに伝えます。Livenessとは異なり、失敗したReadinessプローブはポッドを再起動せずにサービスエンドポイントから除外します。

レスポンス形式

{
  "status": "ok",
  "dependencies": {
    "database": {
      "status": "ok",
      "responseTime": "12ms",
      "message": "Connection pool healthy"
    },
    "redis": {
      "status": "ok",
      "responseTime": "3ms",
      "message": "Cache connected"
    }
  }
}

プローブ設定

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5
  timeoutSeconds: 3
  failureThreshold: 2

チェック対象

チェック 含めるべきか 理由
データベース接続 はい リクエスト処理に必須
キャッシュ可用性 はい パフォーマンスに重要
外部APIヘルス 場合による リクエストに必要な場合
設定読み込み はい 正しい動作を保証

LivenessとReadinessの比較

側面 Liveness Readiness
パス /healthz /ready
失敗時のアクション ポッド再起動 サービスから除外
チェック範囲 内部のみ 依存関係も含む
回復 自動再起動 自動再追加

ベストプラクティス

Readinessプローブのタイムアウトは短く(3-5秒)設定してください。依存関係チェックがそれより長くかかる場合は失敗とみなします。

ユースケース

依存関係(データベース、キャッシュ、外部API)が利用不能になった際にポッドがトラフィックの受信を停止し、グレースフルなトラフィック切り替えを可能にするKubernetesサービス。

試してみる — Health Check Endpoint Designer

フルツールを開く