すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:プローブを使用してコンテナのヘルスチェックを実行する

最終更新日:Dec 28, 2024

Liveness プローブと readiness プローブは、コンテナの状態をチェックするために使用されるメカニズムです。Liveness プローブは、コンテナが想定どおりに実行されているかどうかを確認するために使用され、readiness プローブは、コンテナが準備ができているかどうかを確認するために使用されます。このトピックでは、liveness プローブと readiness プローブを構成して、コンテナのヘルスチェックを実行する方法について説明します。このようにして、Kubernetes はコンテナの状態をより適切に監視および管理し、サービスの高可用性と安定性を確保できます。

機能の説明

Kubernetes では、kubelet は liveness プローブと readiness プローブを使用して、コンテナの状態と実行を定期的にチェックします。

プローブ

説明

シナリオ

Liveness プローブ

Liveness プローブは、コンテナが想定どおりに動作しているかどうかを確認するために使用されます。

  • チェックが成功した場合、コンテナは想定どおりに動作しています。

  • チェックが失敗した場合、システムは、構成されたコンテナの再起動ポリシーに基づいて、コンテナを再起動するかどうかを決定します。

  • デフォルトでは、liveness プローブが構成されていない場合、コンテナは常に想定どおりに動作していると見なされます。

  • アプリケーションが実行されているが、アプリケーションでそれ以上の操作を実行できない場合、liveness プローブはデッドロックを捕捉できます。その後、システムはコンテナを再起動して、バグが存在するかどうかに関係なく、アプリケーションを想定どおりに実行させます。

  • アプリケーションが長期間実行された後、最終的にアプリケーションは破損状態に移行する可能性があります。アプリケーションを復元する場合、アプリケーションを再起動する必要があります。liveness プローブを使用して、このような状況を検出して修正できます。

Readiness プローブ

Readiness プローブは、コンテナがリクエストを処理する準備ができているかどうかを確認するために使用されます。

  • チェックが成功した場合、コンテナはビジネスリクエストを受信する準備ができています。

  • チェックが失敗した場合、コンテナは準備ができておらず、再チェックが成功するまで、システムはコンテナにリクエストを送信しません。

  • デフォルトでは、readiness プローブが構成されていない場合、コンテナは準備ができていると見なされます。

アプリケーションは、起動時に大量のデータまたは構成ファイルを読み込むときに、一時的に外部リクエストを処理できない場合があります。この場合、アプリケーションを終了したり、アプリケーションにリクエストを送信したくない場合は、readiness プローブを使用して、このような状況を検出して対応することができます。

構成例

livenessProbe パラメータと readinessProbe パラメータを使用して、liveness プローブと readiness プローブを構成できます。詳細については、Liveness、Readiness、および Startup プローブの構成 を参照してください。

例 1: liveness プローブを構成する

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
        args:
        - /bin/sh
        - -c
        - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
       # CLIモードを使用してコンテナをチェックするlivenessプローブを構成します。
        livenessProbe:    
          exec:           
            command:
            - cat
            - /tmp/healthy
          initialDelaySeconds: 5    # コンテナの起動から5秒後にチェックが開始されます。
          periodSeconds: 5 # チェックは5秒ごとに実行されます。 

例 2: readiness プローブを構成する

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
        args:
        - /bin/sh
        - -c
        - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
        # CLIモードを使用してコンテナをチェックするreadinessプローブを構成します。
        readinessProbe:
          exec:           
            command:
            - cat
            - /tmp/healthy
          initialDelaySeconds: 5    # コンテナの起動から5秒後にチェックが開始されます。
          periodSeconds: 5 # チェックは5秒ごとに実行されます。