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

Platform For AI:ヘルスチェック

最終更新日:Jul 03, 2026

EAS のヘルスチェックは Kubernetes のプローブメカニズムを使用して、正常でないコンテナを自動的に検出し回復し、正常なインスタンスのみがトラフィックを受信するようにします。

制限事項

ヘルスチェックは、ヘルスチェックロジックを含むカスタムイメージを使用してサービスをデプロイする場合にのみ利用できます。

仕組み

EAS のヘルスチェックは Kubernetes のプローブメカニズムを使用してサービスの正常性を検出し管理します。EAS では、以下のプローブタイプおよびヘルスチェック方法がサポートされています。

  • サポートされるプローブタイプ:

    プローブタイプ

    説明

    Liveness プローブ

    コンテナが実行中かどうかを判定します。プローブが正常でないコンテナを検出した場合、kubelet はそのコンテナを終了し、再起動ポリシーを適用します。liveness プローブが設定されていないコンテナについては、kubelet は常に Success とみなします。

    Readiness プローブ

    コンテナがリクエストを処理できる状態かどうかを判定します。Ready 状態の Pod のみがトラフィックを受信します。Service とその Endpoints の関連付けは、Pod の readiness 状態に基づいて管理されます。

    • Pod の Ready 状態が False の場合、Kubernetes は Service に関連付けられた Endpoint リストから Pod の IP アドレスを削除します。

    • Pod の Ready 状態が True に変化した場合、Kubernetes は Pod の IP アドレスを Endpoint リストに再度追加します。

    Startup プローブ

    コンテナの起動が完了したタイミングを判定します。起動に時間がかかるコンテナに対してこのプローブを使用することで、初期化が完了する前に liveness プローブや readiness プローブが実行され、コンテナが誤って早期に終了させられるのを防ぎます。

  • サポートされるヘルスチェック方法:

    ヘルスチェック方法

    説明

    http_get

    HTTP GET リクエストを送信してサービスの正常性と可用性を確認します。応答の状態コードが 2xx または 3xx の範囲内の場合、チェックは成功とみなされます。

    tcp_socket

    TCP 接続を開こうとして、サービスの正常性と可用性を確認します。

    exec

    コンテナ内で指定されたコマンドを実行します。チェック結果はコマンドの終了コードによって決定されます。

カスタムイメージの準備

予測ロジックを Web フレームワークでラップします。以下の例では Flask を使用しています。

import json
from flask import Flask, request, make_response

app = Flask(__name__)

@app.route('/', methods = ['GET','POST'])
def process_handle_func():
    """
       実際の要件に基づいてリクエストボディを解析します
    """
    data = request.get_data().decode('utf-8')
    body = json.loads(data)
    res = process(body)
    """
       実際の要件に基づいて応答を設定します
    """
    response = make_response(res)
    response.status_code = 200
    return response

def process(data):
    """
       ご利用の予測ロジック
    """
    return 'result'

if __name__ == '__main__':
    """
    注: host は 0.0.0.0 に設定する必要があります。設定しない場合、サービスデプロイ時にヘルスチェックが失敗します。
    port は、デプロイするサービスの JSON 設定ファイルで指定されたポートと一致させる必要があります。
    """
    app.run(host='0.0.0.0', port=8000)

予測コードをコピーし、必要なパッケージをインストールする Dockerfile を作成します。

# Python の例
FROM registry.cn-shanghai.aliyuncs.com/eas/bashbase-amd64:0.0.1
COPY ./process_code  /eas
RUN /xxx/pip install 必要なパッケージ
CMD ["/xxx/python", "/eas/xxx/app.py"] 

カスタムイメージのビルド手順については、「Container Registry Enterprise Edition インスタンスでのイメージのビルド」をご参照ください。「カスタムイメージを使用したモデルサービスのデプロイ」では、イメージビルドに関するガイドラインを紹介しています。また、NAS ファイルシステムまたは Git リポジトリにコードを保存し、デプロイ時にストレージをマウントすることも可能です(「ストレージマウント」をご参照ください)。本トピックでは、最初の方法を使用して「サービスデプロイ時のヘルスチェック設定」を説明します。

サービスデプロイ時のヘルスチェック設定

カスタムデプロイでのヘルスチェック設定

  1. PAI コンソールにログインし、ページ上部で対象のリージョンを選択し、右側で対象のワークスペースを選択してから、Go to EAS をクリックします。

  2. Inference Serviceタブで、Deploy Serviceをクリックします。Custom Model Deploymentセクションで、Custom Deploymentをクリックします。

  3. Environment Informationセクションで、以下の主要パラメーターを設定します。その他のパラメーターについては、「カスタムデプロイ」をご参照ください。

    パラメーター

    説明

    Image Configuration

    Image Addressを選択し、テキストフィールドにご利用のカスタムイメージのアドレスを入力します(例:registry-vpc.cn-shanghai.aliyuncs.com/xxx/yyy:zzz)。

    Command

    コンテナのエントリポイントコマンドです。単一のコマンドのみがサポートされ、複雑なスクリプトは使用できません。このコマンドは Dockerfile で定義されているものと一致させる必要があります。例:/data/eas/ENV/bin/python /data/eas/app.py

    起動後にコンテナがリッスンするポート番号を入力します(例:8000)。

    重要
    • EAS エンジンは固定ポート 8080 および 9090 をリッスンします。ご利用のコンテナでこれらのポートを使用しないでください。

    • ポートは、実行コマンドで参照される xxx.py ファイルで設定されたポートと一致させる必要があります。

  4. Featuresセクションで、Stability guaranteeパネルを展開し、Health Checkトグルをオンにして、以下で説明するパラメーターを設定し、OK をクリックします。

    ヘルスチェックパラメーター

    パラメーター

    説明

    Probe Type

    以下の 3 種類のプローブタイプがサポートされています。

    • Liveness Probe:コンテナが正常に実行されているかどうかをチェックします。

    • Readiness Probe:コンテナの初期化が完了し、リクエストを処理できる状態かどうかを確認します。

    • Startup Probe:初期化に追加の時間を必要とするアプリケーション向けに設計されており、起動が遅いコンテナが誤って失敗とマークされるのを防ぎます。

    各プローブの動作の詳細については、「仕組み」をご参照ください。

    Check Method

    以下の 3 種類のヘルスチェック方法がサポートされています。

    • http_get:コンテナの IP アドレス、ポート、パスを使用して HTTP GET メソッドを呼び出します。応答の状態コードが 200(以上)かつ 400(未満)の範囲内の場合、チェックは成功とみなされます。

    • tcp_socket:コンテナの IP アドレスとポートを使用して TCP チェックを実行します。TCP 接続が確立可能な場合、チェックは成功とみなされます。

    • exec (カスタムヘルスチェック):コンテナ内で指定されたコマンドを実行します。コマンドの終了コードが 0 の場合、チェックは成功とみなされます。

    Call Path

    Check Methodhttp_get に設定されている場合にのみ使用可能です。

    チェック対象の HTTP サーバー URL です。プレフィックスは http://localhost です。パスのサフィックスはカスタマイズ可能で、デフォルトは / です。

    Port Number

    Check Methodhttp_get または tcp_socket に設定されている場合にのみ使用可能です。

    チェック対象のポートです(例:8000)。

    Command

    Check Methodexec に設定されている場合にのみ使用可能です。

    実行するコマンドを入力します。コンソールは自動的にコマンドを必要なフォーマットに変換し、デプロイ用 JSON に書き込みます。

    Latency for Check Initialization

    コンテナ起動後、最初のヘルスチェックが実行されるまでの遅延時間です。デフォルトは 15 秒です。

    Check Interval

    ヘルスチェックの実行頻度です。デフォルトは 10 秒です。頻度を高くすると Pod にオーバーヘッドが発生し、低くするとコンテナのエラー検出が遅れます。

    Check Timeout Period

    各ヘルスチェックのタイムアウト時間です。デフォルトは 1 秒です。この時間を超過したチェックは失敗とみなされます。

    Check Success Threshold

    以前は正常だったコンテナを異常とマークするために必要な、連続する失敗チェックの回数です。readiness プローブのデフォルトは 3、liveness プローブおよび startup プローブのデフォルトは 1 です。

    Check Failure Threshold

    以前は異常だったコンテナを正常とマークするために必要な、連続する成功チェックの回数です。デフォルトは 1 です。

  5. Deployをクリックします。

JSON デプロイでのヘルスチェック設定

service.json という名前の JSON ファイルを作成します。以下のサンプルファイルを参照してください。

{
    "metadata": {
        "name": "test",
        "instance": 1,
        "enable_webservice": true
    },
    "cloud": {
        "computing": {
            "instance_type": "ml.gu7i.c16m60.1-gu30"
        }
    },
    "containers": [
        {
            "image":"registry-vpc.cn-shanghai.aliyuncs.com/xxx/yyy:zzz",
            "env":[
                {
                    "name":"VAR_NAME",
                    "value":"var_value"
                }
            ],
            "liveness_check":{
                "http_get":{
                    "path":"/",
                    "port":8000
                },
                "initial_delay_seconds":3,
                "period_seconds":3,
                "timeout_seconds":1,
                "success_threshold":2,
                "failure_threshold":4
            },
            "command":"/data/eas/ENV/bin/python /data/eas/app1.py",
            "port":8000
        }
    ]
}

主要なパラメーターは以下の表で説明されています。その他のパラメーターについては、「JSON デプロイ」をご参照ください。

パラメーター

説明

image

モデルサービスのデプロイに使用するカスタムイメージのアドレスです。

EAS ではパブリックネットワークアクセスが許可されていません。VPC 内のレジストリアドレスを使用してください(例:registry-vpc.cn-shanghai.aliyuncs.com/xxx/yyy:zzz)。

env

name

ランタイム時にコンテナに渡される環境変数の名前です。

value

環境変数の値です。

command

コンテナのエントリポイントコマンドです。単一のコマンドのみがサポートされ、複雑なスクリプトは使用できません。例:/data/eas/ENV/bin/python /data/eas/app.py

port

コンテナ内のプロセスがリッスンするネットワークポートです(例:8000)。

重要

ポートは、command フィールドで参照される xxx.py ファイルで設定されたポートと一致させる必要があります。

liveness_check

説明

ヘルスチェックプローブタイプとして liveness プローブを指定します。代わりに health_check(readiness プローブ)または startup_check(startup プローブ)を設定することも可能です。

http_get

ポート 8000 に HTTP GET リクエストを送信します。サブパラメーターは以下のとおりです。

  • http_get.path:チェック対象の HTTP サーバー URL です。プレフィックスは http://localhost です。パスのサフィックスはカスタマイズ可能で、デフォルトは / です。

  • http_get.port:チェック対象の HTTP サーバーポートです。

以下の 2 種類のヘルスチェック方法もサポートされています。

  • tcp_socket:コンテナの IP アドレスとポートを使用して TCP チェックを実行します。TCP 接続が確立可能な場合、チェックは成功とみなされます。設定例:

    "tcp_socket":{
        "port":8000
    }
  • exec:コンテナ内で指定されたコマンドを実行します。コマンドの終了コードが 0 の場合、チェックは成功とみなされます。設定例:

    "exec":{
        "command":[
            "your_script",
            "with_args"
        ]
    }

initial_delay_seconds

コンテナ起動後、最初のヘルスチェックが実行されるまでの遅延時間です。デフォルトは 0 秒です。

period_seconds

ヘルスチェックの実行頻度です。デフォルトは 10 秒です。頻度を高くすると Pod にオーバーヘッドが発生し、低くするとコンテナのエラー検出が遅れます。

timeout_seconds

各ヘルスチェックのタイムアウト時間です。デフォルトは 1 秒です。この時間を超過したチェックは失敗とみなされます。

success_threshold

以前は正常だったコンテナを異常とマークするために必要な、連続する失敗チェックの回数です。readiness プローブのデフォルトは 3、liveness プローブおよび startup プローブのデフォルトは 1 です。

failure_threshold

以前は異常だったコンテナを正常とマークするために必要な、連続する成功チェックの回数です。デフォルトは 1 です。