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

Enterprise Distributed Application Service:アプリケーションライフサイクルフックとプローブを設定する

最終更新日:Mar 05, 2025

Enterprise Distributed Application Service (EDAS) コンソールで、PostStart および PreStop ライフサイクルフックを設定できます。 これにより、アプリケーションの起動直後、またはアプリケーションの実行停止前にカスタム操作を実行するコードを追加できます。 また、EDAS コンソールで Liveness プローブと Readiness プローブを設定して、コンテナの稼働状況と準備状況を確認することもできます。 このトピックでは、アプリケーションのライフサイクルフックと、コンテナの Liveness プローブおよび Readiness プローブを設定する方法について説明します。

背景情報

ほとんどの場合、アプリケーションの起動直前または直後、あるいは実行停止直前または直後に特定の操作を実行します。 たとえば、アプリケーションの起動前にリソースをデプロイしたり、アプリケーションの実行を停止する前にアプリケーションを安全に停止したり、他のサービスまたはアプリケーションに通知したりします。 EDAS は Kubernetes のライフサイクルフック機能を統合しており、コンテナの PostStart および PreStop ライフサイクルフックを設定できます。

Kubernetes クラスタにアプリケーションをデプロイする場合、ポッドが稼働していてサービスを提供する準備ができているかどうかを確認する必要があります。 EDAS は Kubernetes のポッドプローブ機能を統合しています。 この機能を使用すると、Liveness プローブを設定してコンテナを再起動するタイミングを決定し、Readiness プローブを設定してコンテナがトラフィックを受信する準備ができているかどうかを確認できます。

アプリケーションの作成時にアプリケーションライフサイクルフックとプローブを設定する

  1. EDAS コンソール にログインします。 左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。 [アプリケーション] ページが表示されます。 上部のナビゲーションバーで、リージョンを選択します。 ページの上部で、名前空間を選択します。 左上隅にある [アプリケーションの作成] をクリックします。

  2. [基本情報] ステップで、クラスタタイプとアプリケーション実行環境を指定し、[次へ] をクリックします。 次の表にパラメータを示します。

    パラメータ

    説明

    クラスタタイプ

    アプリケーションをデプロイするクラスタのタイプ。 Kubernetes クラスタ を選択します。

    アプリケーション実行環境

    アプリケーション実行環境。 ホストされているアプリケーションのタイプに基づいて、アプリケーション実行環境を選択します。

    • Java

      • カスタム: カスタムイメージを使用して Kubernetes クラスタにアプリケーションをデプロイする場合に、このオプションを選択します。

      • Java: ユニバーサル JAR パッケージを使用してアプリケーションを Dubbo アプリケーションまたは Spring Boot アプリケーションとしてデプロイする場合に、このオプションを選択します。 このオプションを選択した後、Java 環境パラメータを設定できます。

      • Tomcat: ユニバーサル WAR パッケージを使用してアプリケーションを Dubbo アプリケーションまたは Spring アプリケーションとしてデプロイする場合に、このオプションを選択します。 このオプションを選択した後、Java 環境パラメータとコンテナバージョンパラメータを設定できます。

      • EDAS-Container (HSF): WAR パッケージまたは FatJar パッケージを使用してアプリケーションを High-speed Service Framework (HSF) アプリケーションとしてデプロイする場合に、このオプションを選択します。 このオプションを選択した後、Java 環境、Pandora バージョン、および Ali-Tomcat バージョンのパラメータを設定できます。

    • PHP: アプリケーションが Apache HTTP Server 上で実行される PHP アプリケーションである場合に、このオプションを選択します。

    • Node.js、c++、go、およびその他の言語: カスタムイメージを使用して Kubernetes クラスタにアプリケーションをデプロイする場合に、このオプションを選択します。 多言語アプリケーションの設定プロセスについては、このトピックでは説明していません。

  3. [構成] ステップで、アプリケーションの環境情報、基本情報、およびデプロイ方法を設定し、関連するリソースパラメータを設定して、[次へ] をクリックします。

  4. [詳細設定] ステップで、[アプリケーションライフサイクル管理] セクションを展開し、次のパラメータを設定します。

    パラメータ

    説明

    PostStart

    PostStart コンテナフックを指定します。 このフックは、コンテナの作成直後にトリガーされます。 このフックは、コンテナが作成されたことを Kubernetes に通知します。 関連するフックハンドラにパラメータを渡す必要はありません。 フックハンドラの実行に失敗した場合、システムはコンテナを停止し、コンテナの再起動ポリシーに基づいてコンテナを再起動するかどうかを決定します。 詳細については、「Container Lifecycle Hooks」をご参照ください。

    PreStop

    PreStop コンテナフックを指定します。 このフックは、コンテナが削除される前にトリガーされます。 関連するフックハンドラは、コンテナの削除を開始するリクエストが Docker デーモンに送信される前に実行する必要があります。 Docker デーモンは、フックハンドラの実行結果に関係なく、コンテナを削除するために SIGTERM 信号を自身に送信します。 詳細については、「Container Lifecycle Hooks」をご参照ください。

    Terminationgraceperiod 構成

    ポッドの安全な停止に許容されるタイムアウト期間を指定します。 タイムアウト期間内に PreStop フックが完了し、アプリケーションが SIGTERM 信号を処理することを確認してください。 また、タイムアウト期間を調整して、ポッドが削除されるまでの期間を制御することもできます。

    Liveness

    Liveness プローブを指定します。 このプローブは、コンテナの状態を監視し、アプリケーションが正常であるかどうかを確認します。 アプリケーションが異常な場合、コンテナは削除され、再作成されます。 詳細については、「Pod Lifecycle」をご参照ください。

    Readiness

    Readiness プローブを指定します。 このプローブは、コンテナの状態を監視し、アプリケーションが起動され、予期どおりに実行できるかどうかを確認します。 アプリケーションが予期どおりに実行できない場合、コンテナの状態が更新されます。 詳細については、「Pod Lifecycle」をご参照ください。

  5. [アプリケーションの作成] をクリックします。

  6. [作成完了] ページで、[基本情報][構成]、および [詳細設定] セクションの情報を確認します。 次に、[アプリケーションの作成] をクリックします。

    [アプリケーションの概要] ページの上部にある [詳細の表示] をクリックします。 [変更リスト] ページで、アプリケーションの変更プロセスを表示します。 アプリケーションがデプロイされるまで数分待ちます。 アプリケーションの変更プロセスが完了したら、[アプリケーションの概要] ページの [基本情報] セクションでインスタンスの状態を表示します。 状態にポッドが実行中であると表示されている場合、アプリケーションはデプロイされています。

アプリケーションの更新時にアプリケーションライフサイクルフックとプローブを設定する

アプリケーションライフサイクルフックとプローブは、アプリケーションの作成時に設定することも、アプリケーションのデプロイ時に設定または更新することもできます。

  1. EDAS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] をクリックします。上部のナビゲーションバーで、リージョンを選択します。ページの上部で、名前空間を選択します。[コンテナサービスまたはサーバーレス Kubernetes クラスター][クラスタータイプ] ドロップダウンリストから選択します。次に、デプロイするアプリケーションを見つけて、アプリケーション名をクリックします。

  3. [概要] ページまたは [基本情報] ページで、右上隅にある [デプロイ] > [デプロイ] を選択します。

  4. [デプロイモードの選択] ページで、デプロイモードを選択し、指定したデプロイモードセクションの右上隅にある [デプロイの開始] をクリックします。

  5. アプリケーションの環境およびデプロイメントパッケージのパラメータを設定し、[アプリケーションライフサイクル管理] セクションを展開します。 このセクションで、ビジネス要件に基づいてパラメータを設定します。 次に、[OK] をクリックします。

    パラメータ

    説明

    PostStart

    PostStart コンテナフックを指定します。 このフックは、コンテナの作成直後にトリガーされます。 このフックは、コンテナが作成されたことを Kubernetes に通知します。 関連するフックハンドラにパラメータを渡す必要はありません。 フックハンドラの実行に失敗した場合、システムはコンテナを停止し、コンテナの再起動ポリシーに基づいてコンテナを再起動するかどうかを決定します。 詳細については、「Container Lifecycle Hooks」をご参照ください。

    PreStop

    PreStop コンテナフックを指定します。 このフックは、コンテナが削除される前にトリガーされます。 関連するフックハンドラは、コンテナの削除を開始するリクエストが Docker デーモンに送信される前に実行する必要があります。 Docker デーモンは、フックハンドラの実行結果に関係なく、コンテナを削除するために SIGTERM 信号を自身に送信します。 詳細については、「Container Lifecycle Hooks」をご参照ください。

    Terminationgraceperiod 構成

    ポッドの安全な停止に許容されるタイムアウト期間を指定します。 タイムアウト期間内に PreStop フックが完了し、アプリケーションが SIGTERM 信号を処理することを確認してください。 また、タイムアウト期間を調整して、ポッドが削除されるまでの期間を制御することもできます。

    Liveness

    Liveness プローブを指定します。 このプローブは、コンテナの状態を監視し、アプリケーションが正常であるかどうかを確認します。 アプリケーションが異常な場合、コンテナは削除され、再作成されます。 詳細については、「Pod Lifecycle」をご参照ください。

    Readiness

    Readiness プローブを指定します。 このプローブは、コンテナの状態を監視し、アプリケーションが起動され、予期どおりに実行できるかどうかを確認します。 アプリケーションが予期どおりに実行できない場合、コンテナの状態が更新されます。 詳細については、「Pod Lifecycle」をご参照ください。

    重要

    [OK] をクリックすると、アプリケーションが再起動されます。 この操作は、オフピーク時に実行することをお勧めします。

アプリケーションライフサイクル管理を設定する

PostStart フックと PreStop フックを設定する

PostStart フックは、PreStop フックと同じ方法で設定できます。 フックは、次のモードで設定できます。

モード

説明

Exec

コンテナで特定のコマンドを実行します。 コマンドの実行後に 0 が返された場合、コマンドはエラーなく実行されます。

HttpGet

特定のコンテナエンドポイントに HTTP GET リクエストを送信します。 200 以上 400 未満の状態コードが返された場合、リクエストは成功です。

HttpGet モードでは、次のパラメータを設定できます。

  • ホスト: HTTP リクエストの送信先ホストアドレス。 このパラメータを空のままにすると、ポッドの IP アドレスが使用されます。

  • パス: HTTP リクエストの送信先パス。 デフォルト値: /

  • ポート: HTTP リクエストの送信先ポート番号。

  • スキーム: プロトコルタイプ。 HTTP プロトコルと HTTPS プロトコルがサポートされています。 デフォルト値: HTTP。

  • HTTP ヘッダー: カスタム HTTP リクエストヘッダー。

次の例は、EDAS で Exec モードと HttpGet モードで PostStart フックを設定する方法を示しています。

  • Exec モード

    たとえば、コンテナの作成後に次のコマンドを実行するとします。

    echo "container started"

    EDAS では、次のいずれかの方法を使用して、Exec モードで PostStart フックを設定できます。

    • 方法 1: コマンドを異なるパラメータに分割する。 コマンドが短く、パラメータが少数の場合は、この方法を使用できます。

      FGHU

    • 方法 2: シェルを起動し、シェルでコマンドを実行する。 コマンドが長く、パラメータが多い場合は、この方法を使用できます。

      srgd

  • Httpget モード

    次の図は、HttpGet モードで PostStart フックを設定する方法を示しています。 コンテナの起動後、HTTP GET リクエストが http://example.com:8080/healthz に送信されます。

    sregtd

    説明

    PostStart フックまたは PreStop フックの実行に失敗した場合、コンテナは自動的に再起動されます。 PostStart フックまたは PreStop フックの実行失敗に関する情報は、アプリケーションの変更レコードでクエリできます。

Liveness プローブと Readiness プローブを設定する

EDAS は、次のタイプの Kubernetes コンテナプローブをサポートしています。

コンテナプローブ

説明

LivenessProbe

コンテナが稼働しているかどうかを確認します。 チェックに失敗した場合、Kubernetes は自動的にコンテナを終了し、再起動ポリシーに基づいてコンテナを再起動します。

ReadinessProbe

コンテナがトラフィックを受信する準備ができているかどうかを確認します。 チェックが成功した場合、Kubernetes はポッドが属するサービスリストにポッドを追加し、ポッドがトラフィックの受信を開始します。

Liveness プローブと Readiness プローブは、次のいずれかのモードで設定できます。

モード

説明

Exec

コンテナで特定のコマンドを実行します。 コマンドの実行後に 0 が返された場合、チェックは成功です。

HttpGet

特定のコンテナエンドポイントに HTTP GET リクエストを送信します。 200 以上 400 未満の状態コードが返された場合、チェックは成功です。

TcpSocket

コンテナの IP アドレスに対応する指定された TCP ポートが有効になっているかどうかを確認します。 ポートが有効になっている場合、チェックは成功です。

上記のモードでは、Liveness プローブまたは Readiness プローブに次のパラメータを設定できます。

パラメータ

説明

InitialDelaySeconds

コンテナの起動からプローブの最初のチェックまでの遅延。 単位: 秒。 有効な値: 1 ~ 1000。

PeriodSeconds

2 つの連続したチェックの間隔。 単位: 秒。 有効な値: 1 ~ 1000。

SuccessThreshold

チェックが成功したと宣言される前に、失敗したチェックの後に連続して成功する必要があるチェックの数。 有効な値: 1 ~ 1000。 Liveness プローブの有効な値: 1。

TimeoutSeconds

チェックのタイムアウト期間。 単位: 秒。 有効な値: 1 ~ 1000。

FailureThreshold

チェックが失敗したと宣言される前に、成功したチェックの後に連続して失敗する必要があるチェックの数。 有効な値: 1 ~ 1000。

次の図は、TcpSocket モードでの Liveness プローブの設定例を示しています。 この例では、ホストパラメータは空のままです。 したがって、ポッドの IP アドレスがホストアドレスとして使用されます。 チェックはポート 18081 を使用して実行されます。 最初のチェックは、コンテナの起動から 60 秒後に開始されます。 システムは 10 秒間隔でチェックを実行します。 いずれかのチェックが成功すると、ポッドは稼働していると見なされます。 各チェックのタイムアウト期間は 5 秒です。 3 回連続でチェックに失敗すると、Kubernetes はコンテナを終了し、再起動ポリシーに基づいてコンテナを再起動します。

Livess

結果を確認する

アプリケーションライフサイクルフックを設定した後、次の手順を実行して設定を確認できます。

たとえば、アプリケーションを起動する前に Hello from the postStart handler スクリプトを設定したとします。 アプリケーションがデプロイされた後、Web シェルで次のコマンドを実行します。

cat /usr/share/message

ファイルに Hello from the postStart handler スクリプトが存在するかどうかを確認します。 スクリプトが存在する場合、設定は有効です。

Lifecycle configured

EDAS の ACK および Serverless Kubernetes クラスタの DingTalk グループ

EDAS で Container Service for Kubernetes (ACK) および Serverless Kubernetes クラスタを使用する際に質問や提案がある場合は、チケット を送信してください。 フィードバックを送信するには、DingTalk グループ ID 23197114 を検索して DingTalk グループに参加することもできます。