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サービス。