Developer toolchainCompute Modules設定プローブ

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

プローブ

プローブは、Compute Module 内のコンテナの準備状態と稼働状態を確認するための診断機構です。プローブはカスタムチェックを実行して、コンテナが正常に機能し、トラフィックを処理できるかどうかを判定し、コンテナのステータスを報告します。レディネスプローブとライブネスプローブの2種類のプローブを設定できます。

レディネスプローブとライブネスプローブの比較

Readiness Probe は、コンテナがクエリを処理できる状態かどうかを確認します。コンテナのライフサイクル全体を通じて断続的に実行されます。プローブに成功すると、コンテナはクエリを受信できる状態と見なされます。プローブに失敗すると、コンテナは応答なしと指定され、プローブに再び成功するまでクエリを受信しません。レディネスプローブの一般的なユースケースは、起動時に前提となるタスクが完了したことを確認することです。

Liveness Probe は、コンテナが引き続き正常に稼働しているかどうかを確認します。レディネスプローブと同様に、コンテナのライフサイクル全体を通じて断続的に実行されます。ライブネスプローブに失敗すると、コンテナが再起動されます。

2種類のプローブの違いは、チェックが結果を返した後に実行されるアクションだけです。プローブのチェック自体は、その後のアクションに依存しません。

プローブを設定する

Compute Module のプローブを設定するには、次の手順に従います。

  1. 設定タブのコンテナセクションに移動します。設定するコンテナを見つけて選択します。

  2. スクロールして Readiness Probe または Liveness Probe セクションを見つけます。セットまたは編集を選択します。

    コンテナ設定パネルのプローブ設定セクション。

  3. exec プローブまたは HTTP プローブを選択し、プローブの設定を入力します。

Exec プローブ

exec プローブは、コンテナ内でコマンドを実行し、終了ステータスを確認します。終了コード 0 は成功を示し、ゼロ以外の終了コードは失敗を示します。

デフォルトでは、コンテナがクラッシュしていないかを確認するために、exec レディネスプローブにコマンド echo が設定されています。

exec プローブでは、次の項目を設定します。

  • コマンド: コンテナ内で実行するコマンド
  • タイムアウト(秒): コマンドの完了までに許容される最大時間です。この時間内にコマンドが完了しない場合、プローブに失敗します。

コマンドとタイムアウトの項目がある exec プローブ設定ダイアログ。

例:Python exec プローブ

次の例は、コンテナ起動時の前提タスクとしてデータセットファイルをダウンロードする Python exec プローブスクリプトです。このスクリプトは、アプリケーション権限を使用してアクセストークンを取得し、Foundry データセットからデータを取得します。コンテナにコピーされるように、このスクリプトを app.py と同じフォルダーに配置してください。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import os import requests HOSTNAME = "..." CLIENT_SECRET = os.environ["CLIENT_SECRET"] CLIENT_ID = os.environ["CLIENT_ID"] # 関数モードのサードパーティアプリケーションを使用してトークンを取得します TOKEN = requests.post(f"https://{HOSTNAME}/multipass/api/oauth2/token", data={ "grant_type": "client_credentials", "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "scope": "api:datasets-read" }, ).json()["access_token"] HEADERS = { "Authorization": f"Bearer {TOKEN}" } DATASET_RID = os.environ["DATASET_RID"] FILENAME = "tmp/my_file.csv" if not os.path.exists(FILENAME): response = requests.get(f'https://{HOSTNAME}/api/v1/datasets/{DATASET_RID}/readTable?branchId=master&format=CSV', headers=HEADERS) if (response.status_code >= 400): exit(1) with open(FILENAME, 'w') as file: file.write(response.text)

データセットのダウンロードに失敗すると、このスクリプトはコード 1 で終了します。その結果、レディネスプローブが失敗を報告し、ダウンロードに成功するまでコンテナはクエリを受信しなくなります。

HTTP プローブ

HTTP プローブは、コンテナ上のエンドポイントに HTTP GET リクエストを送信します。ステータスコードが 200 から 399 までのレスポンスは成功を示し、それ以外のステータスコードは失敗を示します。

HTTP プローブでは、次の項目を設定します。

  • パス: 確認するエンドポイントの URL パス
  • ポート: リクエストのポート番号です。ポートは、8945と8946を除く1024から65535までの範囲である必要があります。
  • HTTP ヘッダー(任意): 名前と値のペアとして指定するカスタムヘッダー
  • タイムアウト(秒): リクエストの完了までに許容される最大時間です。この時間内にリクエストが完了しない場合、プローブに失敗します。

パス、ポート、ヘッダー、タイムアウトの項目がある HTTP プローブ設定ダイアログ。