SchedulerX は、定期タスク、多言語スクリプト、HTTP インターフェイスをサポートしています。また、ネイティブの Kubernetes ジョブや Pod のスケジューリングもサポートしています。このトピックでは、Kubernetes 環境で SchedulerX をデプロイする方法について説明します。
利用シーン
SchedulerX を使用して Kubernetes ジョブをスケジューリングすると、次の利点があります。
オンラインでのスクリプト Pod の編集
Kubernetes ジョブは、データ処理や運用保守 (O&M) によく使用され、通常はスクリプトとして実装されます。ネイティブな方法では、スクリプトをイメージにパッケージ化し、YAML ファイルでスクリプトコマンドを設定する必要があります。スクリプトを修正するには、イメージを再ビルドして再公開する必要があります。以下に例を示します。
SchedulerX を使用する場合、イメージのビルドや YAML スクリプトの記述は不要です。SchedulerX コンソールで直接スクリプト (Shell、Python、PHP、または Node.js) を編集するだけで、スクリプトは Pod として自動的に実行されます。スクリプトを修正するには、SchedulerX コンソールで再編集できます。変更は、次回の定期実行時に有効になります。このアプローチにより、Kubernetes ジョブの開発効率が向上します。SchedulerX で Kubernetes タスクを使用する場合、コンテナーの基盤となる詳細を理解する必要がないため、コンテナー技術を利用するハードルが下がります。
ビジュアルなタスクオーケストレーション
Kubernetes では、ワークフローオーケストレーションの主流ソリューションは Argo です。以下に例を示します。
SchedulerX は、ビジュアルインターフェイスを使用した Kubernetes タスクのドラッグアンドドロップによるオーケストレーションをサポートしています。これは、コードベースのワークフローオーケストレーションという主流のソリューションよりも便利です。さらに、タスクの実行中に、ビジュアルなワークフローグラフによってボトルネックを迅速に特定し、運用保守効率を向上させることができます。
アラートとモニタリング
SchedulerX を使用して Pod やジョブをスケジューリングする場合、そのモニタリング機能とアラート機能を再利用できます。
サポートされているアラートチャンネル:ショートメッセージ、電話、メール、Webhook (DingTalk、WeCom、または Lark)。
サポートされているアラートポリシー:障害アラートおよび実行タイムアウトアラート。
ログサービス
SchedulerX を使用して Pod やジョブをスケジューリングすると、SchedulerX は自動的に Pod のログを収集するため、追加のログサービスを有効にする必要はありません。Pod の実行に失敗した場合、SchedulerX コンソールで直接障害のトラブルシューティングを行うことができます。
監視ダッシュボード
SchedulerX に組み込まれているタスクモニタリングダッシュボードを使用して、タスクをリアルタイムでモニターできます。
オフラインタスクとオンラインタスクのハイブリッドデプロイメント
SchedulerX は、オフラインとオンラインの両方の定期タスクに対するハイブリッドスケジューリングを提供し、Java と Kubernetes のタスクタイプをサポートしています。ビジネスアプリケーションには通常、複数の定期タスクが含まれます。定期タスクが高い周波数で実行される場合、ビジネスアプリケーションと同じプロセスで実行できます。ただし、これらのインプロセス呼び出しはオンラインアプリケーションの CPU とメモリを消費し、主要なビジネスロジックから分離することはできません。したがって、定期タスクが大量のリソースを消費し、1 時間に 1 回や 1 日に 1 回などの低い周波数で実行される場合は、新しい Pod でタスクを実行できます。これにより、タスクは元のオンラインアプリケーションとは別のプロセスに分離されます。
方法 1:Deployment を使用した SchedulerX のデプロイ (推奨)
Java 以外のアプリケーションタイプを使用する場合、Deployment を使用して schedulerx-agent.yaml ファイルをデプロイできます。SchedulerX は、別の Pod でアプリケーションを起動します。プロセスを次の図に示します。

前提条件
Kubernetes クラスターが作成されていること。これは、Alibaba Cloud Container Service for Kubernetes (ACK) クラスターまたは自己管理型 Kubernetes クラスターのいずれかです。詳細については、「Kubernetes クラスターの作成」をご参照ください。
SchedulerX を有効化しました。
分散タスクスケジューリングプラットフォームコンソールで Kubernetes タイプのアプリケーションが作成されていること。 詳細については、「アプリケーションの作成」をご参照ください。

ステップ 1:ServiceAccount の設定
SchedulerX の Kubernetes タスクは、認証と権限付与のために ServiceAccount に依存します。デフォルトでは、Kubernetes タスクは名前空間の SchedulerX ServiceAccount を使用して実行されます。
Kubernetes クラスターおよび対応する名前空間で、schedulerx-serviceaccount.yaml を一度だけ実行する必要があります。名前空間を分離し、ターゲットの名前空間内でのみ Pod またはジョブをスケジューリングするには、次のサンプル YAML コードを実行します。
名前空間をまたいでスケジューリングするには、ClusterRole と ClusterRoleBinding を使用します。
ステップ 2:schedulerx-agent.yaml のインストール
schedulerx-agent.yaml の設定は次のとおりです。
SchedulerX エージェントのイメージ変数
チップアーキテクチャ | リージョン | 説明 |
X86_64 | 中国本土 | schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-amd64 |
中国本土以外のリージョン | schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx2/agent:latest-amd64 | |
ARM64 | 中国本土 | schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-arm64 |
中国本土以外のリージョン | schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx2/agent:latest-arm64 |
SchedulerX エージェントの環境変数
変数 | 説明 |
${SCHEDULERX_ENDPOINT} | アプリケーションをデプロイしたリージョンと、それに対応するエンドポイント。例:addr-sh-internal.edas.aliyun.com。詳細については、「エンドポイントのリスト」をご参照ください。 |
${SCHEDULERX_NAMESPACE} | 名前空間の ID。SchedulerX コンソールの [名前空間] ページで取得できます。 |
${SCHEDULERX_GROUPID} | アプリケーションの ID。SchedulerX コンソールの [アプリケーション管理] ページで取得できます。 |
${SCHEDULERX_APPKEY} | アプリケーションのキー。SchedulerX コンソールの [アプリケーション管理] ページで取得できます。 |
デプロイメントが完了したら、SchedulerX コンソールの [アプリケーション管理] ページでインスタンスを表示して、接続が成功したことを確認できます。
方法 2:Helm パッケージを使用した SchedulerX のデプロイ
前提条件
Kubernetes クラスターが作成されていること。これは、ACK クラスターまたは自己管理型 Kubernetes クラスターのいずれかです。詳細については、「Kubernetes クラスターの作成」をご参照ください。
SchedulerX が有効化されていること。
分散タスクスケジューリングプラットフォームコンソールで Kubernetes タイプのアプリケーションが作成されていること。 詳細については、「アプリケーションの作成」をご参照ください。
Helm パッケージマネージャがインストールされていること。
手順 1:SchedulerX Helm パッケージをダウンロードする
次のコマンドを実行して、SchedulerX Helm パッケージをダウンロードします。
wget https://schedulerx2.oss-cn-hangzhou.aliyuncs.com/helm/schedulerxchart-2.0.0.tgzステップ 2: schedulerx Helm パッケージのインストール
分散タスクスケジューリングプラットフォームコンソールからアプリケーションの接続パラメーターを取得します。
分散タスクスケジューリングプラットフォームにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[アプリケーション管理] をクリックします。
[アプリケーション管理] ページで、アプリケーションを見つけ、[アクション] 列の [接続設定] をクリックします。[接続設定] ページの左上で、[Kubernetes] を選択します。
次のインストールコマンドを実行します。
説明インストールコマンドの接続パラメーターを、対象のアプリケーションのパラメーターに置き換えてください。
接続設定のデフォルトのレジストリアドレスは、パブリックネットワーク上の amd64 イメージ用です。ご利用のマシンのリージョンとアーキテクチャに基づいて、適切なレジストリアドレスを選択してください。
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=schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-amd64次の図は、インストールプロセスのスクリーンショットです。

SchedulerX エージェントのイメージ変数
チップアーキテクチャ
リージョン
説明
x86_64
中国国内のリージョン
schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-amd64
中国本土以外のリージョン
schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx2/agent:latest-amd64
arm64
中国国内のリージョン
schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-arm64
中国本土以外のリージョン
schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx2/agent:latest-arm64
SchedulerX エージェントの環境変数
変数
説明
${SCHEDULERX_ENDPOINT}
アプリケーションをデプロイしたリージョンと、それに対応するエンドポイント。例:addr-sh-internal.edas.aliyun.com。詳細については、「エンドポイントのリスト」をご参照ください。
${SCHEDULERX_NAMESPACE}
名前空間の ID。SchedulerX コンソールの [名前空間] ページで取得できます。

${SCHEDULERX_GROUPID}
アプリケーションの ID。SchedulerX コンソールの [アプリケーション管理] ページで取得できます。
${SCHEDULERX_APPKEY}
アプリケーションのキー。SchedulerX コンソールの [アプリケーション管理] ページで取得できます。
SCHEDULERX_AGENT_IMAGE
レジストリアドレス。
インストールが完了したら、SchedulerX コンソールでインスタンスを表示できます。
方法 3:Java SDK を使用した SchedulerX のデプロイ
ご利用のアプリケーションが Java アプリケーションであり、Kubernetes タスクに加えて Java プログラムをスケジューリングする必要がある場合は、Java ソフトウェア開発キット (SDK) を使用してデプロイできます。SchedulerX は、オンラインビジネスと同じプロセスで実行されます。プロセスを次の図に示します。
前提条件
ACK クラスターまたは自己管理型 Kubernetes クラスターである Kubernetes クラスターを作成できること。詳細については、「Kubernetes クラスターの作成」をご参照ください。
分散タスクスケジューリングプラットフォームで [K8s] アプリケーションを作成できること。詳細については、「アプリケーションの作成」をご参照ください。
SchedulerX への接続
SDK を使用した接続方法については、「Spring Boot アプリケーションの SchedulerX への接続」をご参照ください。
Kubernetes タスクを使用するには、以下に示すように schedulerx-plugin-kubernetes 依存関係も必要です。
`schedulerx2.version` には、最新のクライアントバージョンを使用してください。詳細については、「リリースノート」をご参照ください。
<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 スクリプト
Pod でシェルスクリリプトを実行する場合は、[タスク管理] ページで Kubernetes タスクを作成します。[リソースタイプ] を [シェルスクリプト] に設定します。デフォルトのイメージ busybox を使用するか、独自のイメージに置き換えることができます。
[一度実行] をクリックします。Kubernetes クラスターで Pod が起動するのを確認できます。Pod 名は schedulerx-shell-{JobId} です。
SchedulerX コンソールの [タスク管理] ページで、実行履歴のクエリや Pod ログの表示ができます。
Python スクリプト
Pod で Python スクリプトを実行する場合は、[タスク管理] ページで [Kubernetes タスク] を作成します。[リソースタイプ] を [Python-Script] に設定します。デフォルトの Python イメージを使用するか、独自のイメージに置き換えることができます。
[一度実行] をクリックします。Kubernetes クラスターで Pod が起動するのが確認できます。Pod 名は schedulerx-python-{JobId} です。
SchedulerX コンソールの [タスク管理] ページで、実行履歴のクエリや Pod ログの表示ができます。
PHP スクリプト
Pod で PHP スクリプトを実行する場合は、[タスク管理] ページで [Kubernetes タスク] を作成します。[リソースタイプ] を [PHP-Script] に設定します。デフォルトのイメージ php:7.4-cli を使用するか、独自のイメージに置き換えることができます。
[一度実行] をクリックします。Pod が Kubernetes クラスターで起動するのが確認できます。Pod 名は schedulerx-php-{JobId} です。
SchedulerX コンソールの [タスク管理] ページで、実行履歴のクエリや Pod ログの表示ができます。
Node.js スクリプト
Pod で Node.js スクリプトを実行する場合は、[タスク管理] ページで [Kubernetes タスク] を作成し、[リソースタイプ] を [Nodejs-Script] に設定します。 デフォルトのイメージ node:16 を使用するか、独自のイメージと置き換えることができます。
[一度実行] をクリックします。Pod が Kubernetes クラスターで起動します。Pod 名は schedulerx-node-{JobId} です。
SchedulerX コンソールの [タスク管理] ページで、実行履歴のクエリや Pod ログの表示ができます。
Job-YAML
SchedulerX を使用して、ネイティブ Kubernetes ジョブを実行することもできます。[タスク管理] ページで [Kubernetes] タスクを作成し、[リソースタイプ] を [Job-YAML] に設定します。
[一度実行] をクリックします。 Kubernetes クラスターでジョブと Pod が正常に開始されたことを確認できます。
SchedulerX コンソールの [タスク管理] ページで、実行履歴のクエリや Pod ログの表示ができます。
CronJob-YAML
また、SchedulerX を使用してネイティブの Kubernetes CronJob を実行することもできます。[タスク管理] ページで [Kubernetes] タスクを作成し、[リソースタイプ] を [CronJob-YAML] に設定します。

[1 回実行] をクリックします。[タスクインスタンスレコード] ページで、Pod が正常に起動したことを確認できます。

SchedulerX コンソールの [タスク管理] ページで、実行履歴のクエリや Pod ログの表示ができます。

Pod-YAML
SchedulerX を使用して、ネイティブ Kubernetes Pod を実行することもできます。[タスク管理] ページで [Kubernetes] タスクを作成し、[リソースタイプ] を [Pod-YAML] に設定します。
[一度実行] をクリックします。Kubernetes クラスターで Pod が正常に起動したことを確認できます。
SchedulerX コンソールの [タスク管理] ページで、実行履歴のクエリや Pod ログの表示ができます。
SchedulerX を使用して Kubernetes Pod を実行する場合は、次の点にご注意ください。
起動後に終了しない Web アプリケーションなど、ライフサイクルの長い Pod の実行は避けてください。
再起動ポリシーを Never に設定してください。そうしないと、Pod は継続的に再起動します。