Kubernetes Livenessプローブヘルスチェック
デッドロックや回復不能な状態を検出するKubernetes Livenessプローブレスポンスを設計します。Livenessプローブの失敗はコンテナの再起動をトリガーします。
Kubernetes
詳細な説明
Kubernetes Livenessプローブ
Livenessプローブは、アプリケーションが生きているかどうかをKubernetesに伝えます。失敗すると、Kubernetesはコンテナを再起動します。回復不能な状態のみをチェックすべきです。
レスポンス形式
{
"status": "ok",
"checks": {
"deadlockDetection": { "status": "ok" },
"memoryThreshold": {
"status": "ok",
"used": "256MB",
"limit": "512MB"
}
}
}
プローブ設定
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
チェック対象
| チェック | 含めるべきか | 理由 |
|---|---|---|
| デッドロック | はい | 再起動なしで回復不能 |
| メモリリーク | はい | プロセスは回復しない |
| スレッドプール枯渇 | はい | 再起動が必要 |
| データベース接続 | いいえ | 一時的、回復する |
| 外部API | いいえ | アプリの問題ではない |
重要なルール
Livenessプローブに依存関係チェックを含めないでください。 データベースがダウンした場合でも、Livenessプローブはパスすべきです。そうしないと、Kubernetesがすべてのポッドを再起動し、データベースが復旧した際にすべてのポッドが同時に再接続しようとするカスケード障害が発生します。
パスの規約
Livenessプローブの標準パスは/healthzです("z"サフィックスは"health"を意味するKubernetesの規約です)。
ユースケース
アプリケーションがデッドロックや回復不能な状態に陥る可能性があり、サービス機能を復元するために自動コンテナ再起動が必要なKubernetesデプロイメント。