2

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 の活性をチェックするための適切なアラート ポリシーが他にある場合、その動作は気にしません。誰かがポッドをチェックするのに理想的なアラート ポリシーの種類をアドバイスしてくれるとありがたいです。

4

1 に答える 1