SchedulerX を使用すると、プログラムの定期的なスケジューリングを実行したり、さまざまなプログラミング言語でスクリプトを実行したり、HTTP 操作を呼び出したりできます。 SchedulerX は、ネイティブの Kubernetes ジョブとポッドのスケジューリングもサポートしています。 このトピックでは、Kubernetes クラスタに SchedulerX をデプロイする方法について説明します。
シナリオ
SchedulerX を使用して Kubernetes ジョブをスケジュールすると、SchedulerX には次の利点があります。
オンライン スクリプト編集(ポッドモード)
ほとんどの場合、Kubernetes ジョブは、スクリプトに基づいてデータ処理と O&M のシナリオで実行されます。 SchedulerX を使用して Kubernetes ジョブをスケジュールしない場合は、ジョブのスクリプトをイメージにパッケージ化し、YAML ファイルでスクリプトコマンドを構成する必要があります。 スクリプトを変更する場合は、新しいイメージをビルドして再公開する必要があります。 次のサンプルコードは例を示しています。
SchedulerX を使用して Kubernetes ジョブをスケジュールする場合、新しいイメージをビルドしたり、YAML ファイルでスクリプトコマンドを構成したりする必要はありません。 SchedulerX コンソールでスクリプトを編集するだけで済みます。 Shell、Python、PHP、Node.js などのプログラミング言語のスクリプトがサポートされています。 その後、SchedulerX はポッドモードでスクリプトを自動的に実行します。 スクリプトを変更する場合は、SchedulerX コンソールでスクリプトを再編集するだけで済みます。 変更は、次回 Kubernetes ジョブをスケジュールするときに自動的に有効になります。 これにより、Kubernetes ジョブを開発する効率が向上します。 さらに、SchedulerX を使用して Kubernetes ジョブをスケジュールする場合、コンテナでの操作はユーザーには認識されません。 これにより、コンテナの基本的な概念に慣れていないユーザーでも、Kubernetes ジョブを簡単にスケジュールできます。
ジョブ オーケストレーションの視覚化
Argo Workflows は、Kubernetes でのジョブのワークフローを調整するための主流のソリューションです。 サンプルコード:
SchedulerX は、ドラッグアンドドロップ操作を実行することで Kubernetes ジョブを調整できる GUI を提供します。 コードベースのワークフロー オーケストレーションの主流ソリューションである Argo Workflows と比較して、SchedulerX はより便利性を提供します。 ジョブの実行中に、SchedulerX はジョブのワークフローを視覚化する有向非循環グラフ(DAG)を表示し、ブロックされたジョブの問題のトラブルシューティングと O&M 効率の向上に役立ちます。
監視とアラート
SchedulerX を使用してポッドまたはジョブをスケジュールする場合、SchedulerX の監視およびアラート機能を使用できます。
アラート方法:SchedulerX は、ショートメッセージ、電話、メール、および DingTalk チャットボット、WeCom ボット、Lark ボットの Webhook URL を使用してアラート通知を送信します。
アラートポリシー:SchedulerX は、ジョブが実行に失敗した場合、またはジョブの実行がタイムアウトした場合にアラートをトリガーします。
ログ収集
SchedulerX を使用してポッドまたはジョブをスケジュールする場合、SchedulerX はポッドまたはジョブの操作ログを自動的に収集します。 ポッドが実行に失敗した場合、SchedulerX コンソールのログに基づいて問題のトラブルシューティングを行うことができます。
監視ダッシュボード
SchedulerX コンソールの概要ページで、ジョブをリアルタイムで表示できます。
オンラインジョブとオフラインジョブの混在デプロイ
SchedulerX を使用すると、Java タイプと Kubernetes タイプのオンラインおよびオフラインの定期ジョブを混在させてデプロイおよびスケジュールできます。 ビジネス アプリケーションには、複数の定期ジョブが含まれる場合があります。 定期ジョブを頻繁にスケジュールする場合は、ビジネス アプリケーションと同じプロセスにデプロイできます。 この場合、アプリケーションの CPU リソースとメモリが消費されます。 定期ジョブはオンライン ビジネスから分離されていません。 大量の risorse を消費し、1 時間に 1 回または 1 日に 1 回など、低い頻度でスケジュールされる定期ジョブの場合は、ジョブを実行するポッドを作成できます。 これにより、ジョブはオンライン ビジネスとは異なるプロセスで実行できます。
方法 1(推奨):Deployment を使用して SchedulerX をデプロイする
Java 以外のアプリケーションの場合は、Deployment を使用して schedulerx-agent.yaml をデプロイできます。 この方法では、SchedulerX は個別のポッドとしてデプロイされます。 次の図は、この場合の SchedulerX の動作を示しています。

前提条件
Container Service for Kubernetes(ACK)クラスタまたは自己管理型 Kubernetes クラスタが作成されています。 詳細については、「ACK マネージドクラスターを作成する」をご参照ください。

ステップ 1:サービスアカウントを構成する
サービスアカウントは、SchedulerX を使用して Kubernetes ジョブがスケジュールされるときに、検証と承認のための ID を提供します。 デフォルトでは、Kubernetes ジョブが属する名前空間のサービスアカウントが使用されます。
schedulerx-serviceaccount.yaml は、Kubernetes クラスタの必要な名前空間で 1 回だけ実行する必要があります。 現在の名前空間に属するポッドまたはジョブのみをスケジュールする場合は、次の YAML コードを実行します。
名前空間をまたがってジョブをスケジュールする場合は、ClusterRole および ClusterRoleBinding API 操作を呼び出す必要があります。
ステップ 2:SchedulerX エージェントをインストールする
次のサンプルコードは、schedulerx-agent.yaml の構成を示しています。
次の表は、image の有効な値を示しています。
チップアーキテクチャ | ロケーション | 説明 |
X86_64 | 中国のリージョンとゾーン | registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-amd64 |
中国以外のリージョンとゾーン | schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx/agent:latest-amd64 | |
ARM64 | 中国のリージョンとゾーン | registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-arm64 |
中国以外のリージョンとゾーン | schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx/agent:latest-arm64 |
次の表は、env に含まれる変数について説明しています。
パラメーター | 説明 |
${SCHEDULERX_ENDPOINT} | ENDPOINT は、アプリケーションがデプロイされているリージョンと一致するエンドポイントを指定します。 例:addr-sh-internal.edas.aliyun.com。 詳細については、「エンドポイント」をご参照ください。 |
${SCHEDULERX_NAMESPACE} | NAMESPACE は、アプリケーションが属する名前空間の ID を指定します。 名前空間 ID は、SchedulerX コンソールの [名前空間] ページで確認できます。 |
${SCHEDULERX_GROUPID} | GROUPID は、アプリケーション ID を指定します。 アプリケーション ID は、SchedulerX コンソールの [アプリケーション管理] ページで確認できます。 |
${SCHEDULERX_APPKEY} | APPKEY は、アプリケーションキーを指定します。 アプリケーションキーは、SchedulerX コンソールの [アプリケーション管理] ページで確認できます。 |
Deployment をデプロイした後、SchedulerX コンソールの [アプリケーション管理] ページでインスタンスが使用可能かどうかを確認できます。 インスタンスが使用可能な場合、SchedulerX エージェントは Kubernetes クラスタに接続されています。
方法 2:Helm パッケージを使用して SchedulerX をデプロイする
前提条件
ACK クラスタまたは自己管理型 Kubernetes クラスタが作成されています。 詳細については、「ACK マネージドクラスターを作成する」をご参照ください。
Helm パッケージ管理ツール がインストールされています。
ステップ 1:SchedulerX Helm パッケージをダウンロードする
次のコマンドを実行して、SchedulerX Helm パッケージをダウンロードします。
wget https://schedulerx2.oss-cn-hangzhou.aliyuncs.com/helm/schedulerxchart-2.0.0.tgzステップ 2:SchedulerX Helm パッケージをインストールする
SchedulerX コンソールでアプリケーションのアクセス パラメーターを取得します。
MSE SchedulerX コンソール にログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[アプリケーション管理] をクリックします。
[アプリケーション管理] ページで、[操作] 列の [アクセス構成] をクリックします。 [アクセス構成] パネルの左上隅にあるドロップダウンリストから [k8s] を選択します。
次のインストールコマンドを実行します。
説明コマンドのアクセス パラメーターを、スケジュールするアプリケーションのアクセス パラメーターに置き換えます。
デフォルトでは、アクセス構成のイメージアドレスは、インターネット上の AMD アーキテクチャのイメージのアドレスです。 マシンが存在するリージョンとマシンのアーキテクチャに基づいて、イメージアドレスを指定します。
helm install schedulerxchart schedulerxchart-2.0.0.tgz \ --set SCHEDULERX_ENDPOINT=acm.aliyun.com\ ,SCHEDULERX_NAMESPACE=f856c3f8-a15c-4a7e-9b4e-f812a9f8****\ ,SCHEDULERX_GROUPID=k8s-test3\ ,SCHEDULERX_APPKEY=****\ ,SCHEDULERX_AGENT_IMAGE=registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-amd64次の図は、インストールプロセスを示しています。

次の表は、image の有効な値を示しています。
チップアーキテクチャ
ロケーション
説明
x86_64
中国のリージョンとゾーン
registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-amd64
中国以外のリージョンとゾーン
schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx/agent:latest-amd64
arm64
中国のリージョンとゾーン
registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-arm64
中国以外のリージョンとゾーン
schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx/agent:latest-arm64
次の表は、env に含まれる変数について説明しています。
パラメーター
説明
${SCHEDULERX_ENDPOINT}
ENDPOINT は、アプリケーションがデプロイされているリージョンと一致するエンドポイントを指定します。 例:addr-sh-internal.edas.aliyun.com。 詳細については、「エンドポイント」をご参照ください。
${SCHEDULERX_NAMESPACE}
NAMESPACE は、アプリケーションが属する名前空間の ID を指定します。 名前空間 ID は、SchedulerX コンソールの [名前空間] ページで確認できます。

${SCHEDULERX_GROUPID}
GROUPID は、アプリケーション ID を指定します。 アプリケーション ID は、SchedulerX コンソールの [アプリケーション管理] ページで確認できます。
${SCHEDULERX_APPKEY}
APPKEY は、アプリケーションキーを指定します。 アプリケーションキーは、SchedulerX コンソールの [アプリケーション管理] ページで確認できます。
SCHEDULERX_AGENT_IMAGE
イメージの URL。
パッケージをインストールした後、SchedulerX コンソールでインスタンスを表示できます。
方法 3:Java 用 SchedulerX SDK を使用して SchedulerX をデプロイする
Java アプリケーションの場合、Kubernetes ジョブと Java プログラムの両方をスケジュールできます。 この場合、Java 用 SchedulerX SDK を使用して SchedulerX をデプロイできます。 SchedulerX とオンライン ビジネスは同じプロセスを共有します。 次の図はワークフローを示しています。
前提条件
ACK クラスタまたは自己管理型 Kubernetes クラスタが作成されています。 詳細については、「ACK マネージドクラスターを作成する」をご参照ください。
アプリケーションを SchedulerX に接続する
Java 用 SchedulerX SDK を使用して、アプリケーションを SchedulerX に接続します。 詳細については、「Spring Boot アプリケーションを SchedulerX に接続する」をご参照ください。
schedulerx-plugin-kubernetes 依存関係を追加して、Kubernetes ジョブのスケジューリングを有効にします。 サンプルコード:
schedulerx2.version を SchedulerX エージェントの最新バージョンに置き換えます。 詳細については、「リリースノート」をご参照ください。
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>${schedulerx2.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-plugin-kubernetes</artifactId>
<version>${schedulerx2-plugin-kubernetes.version}</version>
</dependency>Kubernetes ジョブを作成する
次のスクリプトのいずれかを実行する前に、[タスク管理] ページの [タスクの作成] パネルで Kubernetes ジョブを作成します。 詳細については、「ジョブ管理」をご参照ください。
Shell スクリプトを実行する
ポッドモードでシェルスクリプトを実行して Kubernetes ジョブを作成するには、[タスク管理] ページのタスク作成パネルで、タスクタイプ ドロップダウンリストから K8s を選択し、[リソース] ドロップダウンリストから [シェルスクリプト] を選択した後、[busybox] デフォルトイメージを使用するか、カスタムイメージを指定します。
ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスタで schedulerx-shell-{JobId} という名前のポッドが起動されていることを確認できます。
SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。
Python スクリプトを実行する
ポッドモードで Python スクリプトを実行する場合は、次の操作を実行して Kubernetes ジョブを作成します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Python-Script] を選択します。 次に、python デフォルトイメージを使用するか、カスタムイメージを指定します。
ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスタで schedulerx-python-{JobId} という名前のポッドが起動されていることを確認できます。
SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。
PHP スクリプトを実行する
ポッドモードで PHP スクリプトを実行する場合は、次の操作を実行して Kubernetes ジョブを作成します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Php-Script] を選択します。 次に、php: 7.4-cli デフォルトイメージを使用するか、カスタムイメージを指定します。
ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスタで schedulerx-php-{JobId} という名前のポッドが起動されていることを確認できます。
SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。
Node.js スクリプトを実行する
ポッドモードで Node.js スクリプトを実行する場合は、次の操作を実行して Kubernetes ジョブを作成します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Nodejs-Script] を選択します。 次に、node: 16 デフォルトイメージを使用するか、カスタムイメージを指定します。
ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスタで schedulerx-node-{JobId} という名前のポッドが起動されていることを確認できます。
SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。
Job-YAML
SchedulerX を使用してネイティブの Kubernetes ジョブを実行できます。 Kubernetes ジョブを作成するには、次の操作を実行します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Job-YAML] を選択します。
ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスタでジョブとポッドが起動されていることを確認できます。
SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。
CronJob-YAML
SchedulerX を使用してネイティブの Kubernetes cron ジョブを実行できます。 Kubernetes ジョブを作成するには、次の操作を実行します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [CronJob-YAML] を選択します。

ジョブを作成した後、[1 回実行] をクリックします。 ジョブの [操作] 列で、[詳細] > [履歴レコード] を選択します。 次に、[タスクインスタンスレコード] パネルでポッドが起動されていることを確認できます。

SchedulerX コンソールの [タスク管理] ページで、ポッドの実行履歴を照会し、ポッドの操作ログを表示することもできます。

Pod-YAML
SchedulerX を使用してネイティブの Kubernetes ポッドを実行できます。 Kubernetes ジョブを作成するには、次の操作を実行します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Pod-YAML] を選択します。
ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスタでポッドが起動されていることを確認できます。
SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。
SchedulerX を使用して Kubernetes ポッドを実行する場合は、次の項目に注意してください。
Web アプリケーションのポッドなど、実行サイクルが長いポッドは使用しないことをお勧めします。 ポッドの起動後、ポッドの実行は終了しません。
ポッドの再起動を無効にすることをお勧めします。 そうしないと、ポッドが繰り返し再起動されます。