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

Platform For AI:ヘルスチェック

最終更新日:Aug 27, 2026

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

制限事項

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

仕組み

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

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

    プローブタイプ

    説明

    Liveness プローブ

    コンテナが実行中であるかどうかを判断します。プローブが異常なコンテナを検出した場合、kubelet はそのコンテナを強制終了し、再起動ポリシーを適用します。コンテナに Liveness プローブが設定されていない場合、kubelet はその Liveness プローブの結果を常に Success として扱います。

    Readiness プローブ

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

    • 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 <packages>
CMD ["/xxx/python", "/eas/xxx/app.py"] 

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

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

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

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

  2. オンライン推論サービス タブで モデルのアップロードとデプロイメント をクリックします。カスタムモデルのデプロイ セクションで、カスタムデプロイメント をクリックします。

  3. 環境コンテキスト セクションで、次の主要なパラメーターを設定します。その他のパラメーターについては、「カスタムデプロイ」をご参照ください。

    パラメーター

    説明

    イメージ設定

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

    コマンドの実行

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

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

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

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

  4. サービス機能の設定 セクションで、安定保証 パネルを展開し、ヘルスチェック トグルをオンにして、以下で説明するパラメーターを設定し、OK をクリックします。

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

    パラメーター

    説明

    プローブタイプ

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

    • [liveness プローブ]:コンテナが正常に実行されているかどうかをチェックします。

    • [Readiness プローブ]:コンテナが初期化を完了し、リクエストを処理する準備ができていることを確認します。

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

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

    ヘルスチェックメソッド

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

    • http_get:コンテナの IP アドレス、ポート、パスを使用して HTTP GET メソッドを呼び出します。レスポンスのステータスコードが 200 (含む) から 400 (含まない) の間である場合、チェックは成功とみなされます。

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

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

    呼び出しパス

    ヘルスチェックメソッド[http_get] に設定されている場合にのみ使用できます。

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

    ポート番号

    ヘルスチェックメソッド[http_get] または [tcp_socket] に設定されている場合にのみ使用できます。

    チェックするポートです。例: 8000。

    コマンドの実行

    ヘルスチェックメソッド[exec] に設定されている場合にのみ使用できます。

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

    初期化チェックの遅延時間

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

    ポーリングチェック間隔

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

    チェックタイムアウト時間

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

    検出成功判定回数

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

    失敗判定回数

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

  5. デプロイメント をクリックします。

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":1,
                "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 です。