GKE で readiness probe/ liveness probe を使用し、モニタリングを使用してアラートを投稿しようとしましたhttps://cloud.google.com/monitoring/alerts/using-alerting-ui
テストとして、準備プローブ/活性プローブを持つポッドを作成します。予想通り、プローブチェックは毎回失敗しました。
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: k8s.gcr.io/liveness
args:
- /server
readinessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: X-Custom-Header
value: Awesome
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 3
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: X-Custom-Header
value: Awesome
initialDelaySeconds: 20
periodSeconds: 60
timeoutSeconds: 30
successThreshold: 1
failureThreshold: 3
GCP ログを確認すると、最初に periodSeconds に基づいて両方のエラー ログが表示されました。
準備プローブ: 10 秒ごと
2021-02-21 13:26:30.000 JST 準備プローブが失敗しました: HTTP プローブが statuscode で失敗しました: 500
2021-02-21 13:26:40.000 JST 準備プローブが失敗しました: HTTP プローブが statuscode で失敗しました: 500
liveness プローブ: 1 分ごと
2021-02-21 13:25:40.000 JST Liveness プローブが失敗しました: HTTP プローブが statuscode: 500 で失敗しました
2021-02-21 13:26:40.000 JST Liveness プローブが失敗しました: HTTP プローブが statuscode: 500 で失敗しました
しかし、このポッドを数分間実行した後
- Liveness プローブ チェックが呼び出されなくなりました
- 準備プローブ チェックが呼び出されましたが、間隔が長くなりました (最大間隔は約 10 分に見えます)
$ kubectl get event
LAST SEEN TYPE REASON OBJECT MESSAGE
30m Normal Pulling pod/liveness-http Pulling image "k8s.gcr.io/liveness"
25m Warning Unhealthy pod/liveness-http Readiness probe failed: HTTP probe failed with statuscode: 500
20m Warning BackOff pod/liveness-http Back-off restarting failed container
20m Normal Scheduled pod/liveness-http Successfully assigned default/liveness-http to gke-cluster-default-pool-8bc9c75c-rfgc
17m Normal Pulling pod/liveness-http Pulling image "k8s.gcr.io/liveness"
17m Normal Pulled pod/liveness-http Successfully pulled image "k8s.gcr.io/liveness"
17m Normal Created pod/liveness-http Created container liveness
20m Normal Started pod/liveness-http Started container liveness
4m59s Warning Unhealthy pod/liveness-http Readiness probe failed: HTTP probe failed with statuscode: 500
17m Warning Unhealthy pod/liveness-http Liveness probe failed: HTTP probe failed with statuscode: 500
17m Normal Killing pod/liveness-http Container liveness failed liveness probe, will be restarted
私の計画では、条件が次のようなアラート ポリシーを作成します。
- liveness probe エラーが 3 分間に 3 回発生した場合
しかし、プローブ チェックが期待どおりに呼び出されなかった場合、これらのポリシーは機能しませんでした。ポッドが実行されていなくても、アラートが修正されました
Liveness プローブが実行されず、Readiness プローブの間隔が変更されたのはなぜですか?
注: Pod の活性をチェックするための適切なアラート ポリシーが他にある場合、その動作は気にしません。誰かがポッドをチェックするのに理想的なアラート ポリシーの種類をアドバイスしてくれるとありがたいです。