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

Platform For AI:ヘルスチェック

最終更新日:Mar 25, 2026

Elastic Algorithm Service (EAS) は、Kubernetes のヘルスチェックメカニズムを利用したヘルスチェック機能を提供し、障害が発生したコンテナを自動的に検出して回復します。これにより、正常なインスタンスのみがトラフィックを受信し、異常なインスタンスにリソースが割り当てられるのを防ぎます。このトピックでは、ヘルスチェック機能の設定方法について説明します。

制限事項

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

仕組み

EAS のヘルスチェック機能は、Kubernetes のヘルスチェックメカニズムを使用します。プローブとヘルスチェックメソッドを使用して、サービスのヘルス状態と可用性をモニターします。これには、以下のコンポーネントが含まれます。

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

    プローブタイプ

    説明

    Liveness プローブ

    コンテナが実行中かどうかを判断します。liveness プローブが失敗した場合、kubelet はコンテナを強制終了し、設定された再起動ポリシーを適用します。コンテナに liveness プローブがない場合、kubelet はプローブが常に Success を返し、コンテナが正常であると見なします。

    Readiness プローブ

    コンテナがリクエストを処理する準備ができているかどうかを判断します。準備ができた Pod のみがトラフィックを受信できます。サービスとそのエンドポイントの間の関連付けは、Pod の準備状態に依存します。

    • Pod の準備ができていない場合、その IP アドレスは関連するサービスのエンドポイントリストから削除されます。

    • Pod の準備が整うと、その IP アドレスはエンドポイントリストに再度追加されます。

    Startup プローブ

    コンテナのアプリケーションがいつ起動したかを判断します。これにより、コンテナが完全に初期化されるまで liveness プローブと readiness プローブのチェックが遅延され、起動が遅いコンテナが準備完了前にシステムによって終了されるのを防ぎます。

  • サポートされているヘルスチェックメソッド:

    ヘルスチェックメソッド

    説明

    http_get

    HTTP GET リクエストを送信して、サービスのヘルス状態をチェックします。レスポンスのステータスコードによって、チェックが成功したかどうかが決まります。

    tcp_socket

    TCP 接続を試みて、サービスのヘルス状態をチェックします。

    exec

    コンテナ内で指定されたコマンドを実行します。コマンドが終了コード 0 で終了した場合、チェックは成功と見なされます。

カスタムイメージの準備

Web フレームワークを使用して、予測ロジックをカプセル化できます。次の例では、Flask フレームワークと app.py ファイルを使用しています。

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__':
    """
    注意:ホストは '0.0.0.0' に設定する必要があります。そうしないと、サービスデプロイ中にヘルスチェックが失敗します。
    ポートは、サービスの JSON デプロイ設定ファイルで指定されたポートと一致する必要があります。
    """
    app.run(host='0.0.0.0', port=8000)

簡単な Dockerfile を作成して、予測コードをコピーし、必要なパッケージをインストールできます。以下は Dockerfile の例です。

# この例では Python を使用します。
FROM registry.cn-shanghai.aliyuncs.com/eas/bashbase-amd64:0.0.1
COPY ./process_code  /eas
RUN /xxx/pip install required_packages
CMD ["/xxx/python", "/eas/xxx/app.py"] 

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

ヘルスチェックの設定

カスタムデプロイ

  1. PAI コンソールにログインします。ページ上部でリージョンを選択し、目的のワークスペースを選択して Elastic Algorithm Service (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

    ポート番号も入力する必要があります。これは、イメージが起動後にリッスンするローカル HTTP ポートです (例:8000)。

    重要
    • EAS エンジンは固定ポート 8080 と 9090 をリッスンします。コンテナポートは 8080 または 9090 であってはなりません。

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

    Health Check

    Health Check スイッチをオンにし、パラメーターを設定してから OK をクリックします。パラメーターの詳細については、「ヘルスチェックのパラメーター」の表をご参照ください。

    説明

    最大 3 つのヘルスチェックを追加でき、それぞれに一意のプローブタイプを設定できます。

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

    パラメーター

    説明

    Probe Type

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

    • Liveness Probe:コンテナが正常に実行されているかを確認します。

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

    • Startup Probe:初期化に時間がかかるアプリケーション向けに設計されています。このプローブは、起動が遅いためにシステムがコンテナを誤って失敗とマークするのを防ぎます。

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

    Check Method

    以下のヘルスチェックメソッドがサポートされています。

    • http_get:コンテナの IP アドレス、ポート、パスを使用して HTTP GET メソッドを呼び出します。レスポンスのステータスコードが 200 以上 400 未満の場合、コンテナは正常と見なされます。

    • tcp_socket:コンテナの IP アドレスとポートを使用して TCP チェックを実行します。TCP 接続が確立できれば、コンテナは正常と見なされます。

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

    Call Path

    このパラメーターは、Check Method[http_get] を選択した場合にのみ使用できます。

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

    Port Number

    このパラメーターは、Check Method[http_get] または [tcp_socket] を選択した場合にのみ使用できます。

    チェックするポート番号 (例:8000)。

    Command

    このパラメーターは、Check Method[exec] を選択した場合にのみ使用できます。

    実行するコマンドを入力します。コンソールは自動的に入力を必要なフォーマットに変換し、デプロイ 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。

  4. パラメーターを設定した後、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 プローブを使用しています。readiness プローブには health_check、startup プローブには startup_check を使用することもできます。

http_get

HTTP GET メソッドを使用して指定されたポートをチェックします。以下のパラメーターがサポートされています。

  • http_get.path:チェックする HTTP サーバーのアクセスパス。プレフィックスは 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。タイムアウトは失敗と見なされます。

failure_threshold

成功後にコンテナを失敗とマークするために必要な連続失敗回数。readiness プローブの場合はデフォルトで 3、liveness および startup プローブの場合は 1 です。

success_threshold

失敗後にコンテナを成功とマークするために必要な連続成功回数。デフォルト:1。