SchedulerX を使用すると、プログラムの定期的なスケジューリング、さまざまなプログラミング言語でのスクリプトの実行、HTTP オペレーションの呼び出しが可能です。SchedulerX は、ネイティブの Kubernetes ジョブと Pod のスケジューリングもサポートしています。このトピックでは、Kubernetes クラスターに SchedulerX をデプロイする方法について説明します。
利用シーン
SchedulerX を使用して Kubernetes ジョブをスケジュールする場合、SchedulerX は次の利点を提供します。
Pod モードでのオンラインスクリプト編集
ほとんどの場合、Kubernetes ジョブはスクリプトに基づいてデータ処理や運用保守のシナリオで実行されます。SchedulerX を使用せずに Kubernetes ジョブをスケジュールする場合、ジョブのスクリプトをイメージにパッケージ化し、YAML ファイルでスクリプトコマンドを設定する必要があります。スクリプトを修正したい場合は、新しいイメージをビルドして再公開する必要があります。次のコードはその一例です。
SchedulerX を使用して Kubernetes ジョブをスケジュールする場合、新しいイメージをビルドしたり、YAML ファイルでスクリプトコマンドを設定したりする必要はありません。SchedulerX コンソールでスクリプトを編集するだけで済みます。サポートされているプログラミング言語は、Shell、Python、PHP、Node.js です。その後、SchedulerX は自動的に Pod モードでスクリプトを実行します。スクリプトを修正したい場合は、SchedulerX コンソールでスクリプトを再編集するだけで、次回の Kubernetes ジョブのスケジューリング時に変更が自動的に有効になります。これにより、Kubernetes ジョブの開発効率が向上します。さらに、SchedulerX を使用して Kubernetes ジョブをスケジュールする場合、コンテナ上の操作はユーザーには見えません。これにより、コンテナの基盤となる概念に詳しくないユーザーでも、Kubernetes ジョブを簡単にスケジュールできます。
視覚的なジョブオーケストレーション
Argo Workflows は、Kubernetes 上のジョブのワークフローをオーケストレーションするための主流のソリューションです。サンプルコード:
SchedulerX は、ドラッグアンドドロップ操作で Kubernetes ジョブをオーケストレーションできる GUI を提供します。コードベースのワークフローオーケストレーションの主流ソリューションである Argo Workflows と比較して、SchedulerX はより便利です。ジョブの実行中、SchedulerX はジョブのワークフローを視覚化する有向非循環グラフ (DAG) を表示し、ブロックされたジョブの問題をトラブルシューティングし、運用保守の効率を向上させるのに役立ちます。
モニタリングとアラート
SchedulerX を使用して Pod またはジョブをスケジュールする場合、SchedulerX のモニタリングとアラート機能が利用可能です。
アラート方法:SchedulerX は、ショートメッセージ、電話、メール、および DingTalk チャットボット、WeCom ボット、Lark ボットの Webhook URL を使用してアラート通知を送信します。
アラートポリシー:SchedulerX は、ジョブの実行に失敗した場合や、ジョブの実行がタイムアウトした場合にアラートをトリガーします。
ログ収集
SchedulerX を使用して Pod またはジョブをスケジュールする場合、SchedulerX は Pod またはジョブの運用ログを自動的に収集します。Pod の実行に失敗した場合、SchedulerX コンソールのログに基づいて問題をトラブルシューティングできます。
[Log Service] ページでは、左側のパネルにタスクインスタンスリストが表示され、ステータス、アプリケーション ID などでフィルタリングできます。タスクタイプは [Job-YAML] で、ステータスには [成功] と [失敗] があります。右側のパネルはログビューアで、フィールドや時間範囲による検索をサポートしています。失敗したタスクの主要なログエントリには、以下が含まれます:
job processor exec fail.nullExitCode: 255 Reason: ErrorArgument to accuracy must be greater than zero at /usr/local/lib/perl5/5.34.0/bignum.pm line 215
モニタリングダッシュボード
SchedulerX コンソールの概要ページで、ジョブをリアルタイムで表示できます。
オンラインジョブとオフラインジョブの混合デプロイ
SchedulerX を使用すると、Java および Kubernetes タイプのオンラインおよびオフラインの定期ジョブを混合してデプロイおよびスケジュールできます。ビジネスアプリケーションには、複数の定期ジョブが含まれる場合があります。定期ジョブを頻繁にスケジュールする場合、ビジネスアプリケーションと同じプロセスにデプロイすることがあります。この場合、アプリケーションの CPU リソースとメモリが消費されます。定期ジョブはオンラインビジネスから分離されていません。定期ジョブが大量のリソースを消費し、1時間に1回や1日に1回など、低い頻度でスケジュールされる場合は、Pod を作成してジョブを実行できます。これにより、ジョブをオンラインビジネスとは別のプロセスで実行できます。
方法 1 (推奨): Deployment を使用した SchedulerX のデプロイ
Java 以外のアプリケーションの場合、Deployment を使用して schedulerx-agent.yaml をデプロイできます。これにより、SchedulerX は別の Pod としてデプロイされます。次の図は、この場合の SchedulerX の動作を示しています。

前提条件
ACK クラスターまたは自己管理型 Kubernetes クラスターが作成されていること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
SchedulerX が有効化されていること。
SchedulerX コンソールで Kubernetes アプリケーションが作成されていること。詳細については、「アプリケーションの作成」をご参照ください。
アプリケーションを作成する際、バージョンに [Professional Edition] を選択し、[Log Service] を有効にします。インスタンスビジー設定で、load5 を 0、メモリ使用率を 90%、ディスク使用率を 95% に設定し、[ビジーマシンのトリガー] スイッチを有効にします。
ステップ 1: サービスアカウントの設定
サービスアカウントは、SchedulerX を使用して Kubernetes ジョブをスケジュールする際の検証と権限付与のための ID を提供します。デフォルトでは、Kubernetes ジョブが属する名前空間のサービスアカウントが使用されます。
Kubernetes クラスターの必要な名前空間で schedulerx-serviceaccount.yaml を一度だけ実行する必要があります。現在の名前空間に属する Pod またはジョブのみをスケジュールする場合は、次の YAML コードを実行します。
名前空間をまたいでジョブをスケジュールする場合は、ClusterRole および ClusterRoleBinding API オペレーションを呼び出す必要があります。
ステップ 2: SchedulerX エージェントのインストール
次のサンプルコードは、schedulerx-agent.yaml の設定を示しています。
次の表に、image の有効な値を示します。
チップアーキテクチャ | リージョンとゾーン | 説明 |
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 |
次の表に、env に含まれる変数について説明します。
変数 | 説明 |
${SCHEDULERX_ENDPOINT} | ENDPOINT は、アプリケーションがデプロイされているリージョンに一致するエンドポイントを指定します。例:addr-sh-internal.edas.aliyun.com。詳細については、「エンドポイント」をご参照ください。 |
${SCHEDULERX_NAMESPACE} | 名前空間の ID。これは SchedulerX コンソールの [Namespace] ページで確認できます。分散ジョブスケジューリングプラットフォームコンソールの左側のナビゲーションウィンドウで、[名前空間] をクリックします。名前空間リストで、[名前空間 ID] 列を見つけて、対象の名前空間の ID 値を取得し、設定の |
${SCHEDULERX_GROUPID} | アプリケーション ID。これは SchedulerX コンソールの [Application Management] ページで確認できます。 SchedulerX コンソールにログインします。[アプリケーション管理] ページで、アプリケーション一覧の対象アプリケーションの [アプリケーション ID] を表示します。これがパラメーターの値です。 |
${SCHEDULERX_APPKEY} | アプリケーションキー。これは SchedulerX コンソールの [Application Management] ページで確認できます。 この値は、SchedulerX コンソールの [アプリケーション管理] ページのアプリケーション一覧の [アプリケーションキー] 列で確認できます。 |
Deployment が完了したら、SchedulerX コンソールの [Application Management] ページで新しいインスタンスを見つけて接続を確認します。
方法 2: Helm パッケージを使用した SchedulerX のデプロイ
前提条件
ACK クラスターまたは自己管理型 Kubernetes クラスターが作成されていること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
SchedulerX が有効化されていること。
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 パッケージのインストール
SchedulerX コンソールでアプリケーションのアクセスパラメーターを取得します。
SchedulerX コンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[Application Management] をクリックします。
[Application Management] ページで、対象のアプリケーションを見つけ、[操作] 列の [接続構成] をクリックします。[接続構成] パネルで、[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=schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-amd64[root@tangtao-cenos-dev-2 ~]# helm install schedulerxchart schedulerxchart-2.0.0.tgz \ > --set SCHEDULERX_ENDPOINT=acm.aliyxxx \ > ,SCHEDULERX_NAMESPACE=f856c3f8-a15c-4a7e-9b4e-fxxx \ > ,SCHEDULERX_GROUPID=k8sxxx \ > ,SCHEDULERX_APPKEY=VRW7waCaeZlxxx \ > ,SCHEDULERX_AGENT_IMAGE=registry.cn-hangzhou.aliyuncs.com/schxxx NAME: schedulerxchart LAST DEPLOYED: Fri Oct 21 14:21:25 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None [root@tangtao-cenos-dev-2 ~]# helm list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION schedulerxchart default 1 2022-10-21 14:21:25.978497197 +0800 CST deployed schedulerxchart-2.0.0 1.8.0 [root@tangtao-cenos-dev-2 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE schedulerx-agent-d8cf5bd55-f4nkt 1/1 Running 0 13s次の表に、image の有効な値を示します。
チップアーキテクチャ
リージョンとゾーン
説明
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
次の表に、env に含まれる変数について説明します。
変数
説明
${SCHEDULERX_ENDPOINT}
ENDPOINT は、アプリケーションがデプロイされているリージョンに一致するエンドポイントを指定します。例:addr-sh-internal.edas.aliyun.com。詳細については、「エンドポイント」をご参照ください。
${SCHEDULERX_NAMESPACE}
名前空間の ID。これは SchedulerX コンソールの [Namespace] ページで確認できます。分散ジョブスケジューリングプラットフォームコンソールの左側のナビゲーションウィンドウで、[名前空間] をクリックします。名前空間リストで、[名前空間 ID] 列を見つけて、対象の名前空間の ID 値を取得し、設定の
${SCHEDULERX_NAMESPACE}を置き換えます。${SCHEDULERX_GROUPID}
アプリケーション ID。これは SchedulerX コンソールの [Application Management] ページで確認できます。 SchedulerX コンソールにログインします。[アプリケーション管理] ページで、アプリケーション一覧の対象アプリケーションの [アプリケーション ID] を表示します。これがパラメーターの値です。
${SCHEDULERX_APPKEY}
アプリケーションキー。これは SchedulerX コンソールの [Application Management] ページで確認できます。 この値は、SchedulerX コンソールの [アプリケーション管理] ページのアプリケーション一覧の [アプリケーションキー] 列で確認できます。
SCHEDULERX_AGENT_IMAGE
イメージの URL。
インストール後、SchedulerX コンソールでインスタンスを表示してデプロイを確認します。
方法 3: SchedulerX SDK for Java を使用した SchedulerX のデプロイ
Java アプリケーションの場合、Kubernetes ジョブと Java プログラムの両方をスケジュールしたい場合があります。この場合、SchedulerX SDK for Java を使用して SchedulerX をデプロイできます。SchedulerX とオンラインビジネスは同じプロセスを共有します。次の図はワークフローを示しています。
前提条件
ACK クラスターまたは自己管理型 Kubernetes クラスターが作成されていること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
SchedulerX コンソールで K8s タイプのアプリケーションを作成済みであること。詳細については、「アプリケーションの作成」をご参照ください。
アプリケーションと SchedulerX の接続
SchedulerX SDK for Java を使用して、アプリケーションを 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 スクリプトの実行
Pod で Shell スクリプトを実行する場合は、[タスク管理] ページで Kubernetes タスクを作成します。[リソースタイプ] を [Shell-Script] に設定し、デフォルトの busybox イメージを使用するか、独自のカスタムイメージに置き換えます。
[タスクの作成] ページの [基本設定] ステップで、次のパラメーターを設定します:
[タスク名]:
Shell-Scriptと入力します[アプリケーション ID]:対象のアプリケーションを選択します
[タスクタイプ]:[k8s] を選択します
[リソースタイプ]:[Shell-Script] を選択します
スクリプト内容:
echo 'Hello, World!'と入力します[テンプレートタイプ]:[標準テンプレート] を選択します
イメージ:
busyboxを入力します[mountPath]:
script/shellと入力します[imagePullPolicy]:[IfNotPresent] を選択します
[ファイル形式]:[unix] を選択します
[実行モード]:[単一マシン実行] を選択します
[優先度]:[中] を選択します
設定後、[次へ] をクリックし、スケジュールと通知の設定を完了してタスクを送信します。
[1 回実行] をクリックします。Kubernetes クラスターで schedulerx-shell-{JobId} という名前の Pod が起動します。
[root@schedulerx-agent-xxx /]
# kubectl get pod | grep schedulerx
schedulerx-agent-69d448d974-xzjw6 1/1 Running 0 18h
schedulerx-shell-1461 0/1 Completed 0 2m37s
[root@schedulerx-agent-xxx /]
# kubectl logs schedulerx-shell-1461
Hello, World!
hello schedulerx!
[root@schedulerx-agent-xxx /]
#SchedulerX コンソールでは、[タスク管理] ページで過去の実行履歴と Pod の運用ログを表示できます。 タスクが正常に実行されると、[タスクインスタンス履歴] ページで Shell-Script タスクのステータスが [成功] と表示されます。対応するインスタンスをクリックして [ログ] パネルを表示します。ログ出力には hello schedulerx!、Hello, World!、および pod status change to Succeeded が含まれており、Pod がスクリプトを正常に実行して終了したことを示します。
Python スクリプトの実行
Pod で Python スクリプトを実行する場合は、[タスク管理] ページで Kubernetes タスクを作成します。[リソースタイプ] を [Python-Script] に設定し、デフォルトの python イメージを使用するか、独自のカスタムイメージに置き換えます。
[タスクの作成] ページの [基本設定] ステップで、次のパラメーターを設定します:
[タスク名]:
Python-Scriptと入力します[アプリケーション ID]:対象のアプリケーションを選択します
[タスクタイプ]:[k8s] を選択します
[リソースタイプ]:[Python-Script] を選択します
コードエディタに、
import sysやprint('Hello, World!')などの Python スクリプトを入力します[テンプレートタイプ]:[標準テンプレート] を選択します
イメージ:
pythonを入力します[mountPath]:
script/pythonと入力します[imagePullPolicy]:[IfNotPresent] を選択します
[ファイル形式]:[unix] を選択します
[実行モード]:[単一マシン実行] を選択します
[優先度]:[中] を選択します
設定後、[次へ] をクリックし、スケジュールと通知の設定を完了してタスクを保存します。
[1 回実行] をクリックします。Kubernetes クラスターで schedulerx-python-{JobId} という名前の Pod が起動します。
[root@schedulerx-agent-xxx /]
# kubectl get pod | grep schedulerx
schedulerx-agent-69d448d974-xzjw6 1/1 Running 0 18h
schedulerx-python-1463 0/1 Completed 0 5m37s
schedulerx-shell-1461 0/1 Completed 0 15m
[root@schedulerx-agent-xxx /]
# kubectl logs schedulerx-python-1463
Hello, World!
[root@schedulerx-agent-xxx /]
#SchedulerX コンソールでは、[タスク管理] ページで過去の実行履歴と Pod の運用ログを表示できます。[タスクインスタンス履歴] ページでは、タスクの実行ステータス (成功または失敗) を確認できます。対応するレコードをクリックしてログパネルを開きます。ログ出力には Hello, World! と pod status change to Succeeded が含まれており、Python スクリプトが Pod で正常に実行されたことを示します。
PHP スクリプトの実行
Pod で PHP スクリプトを実行する場合は、[タスク管理] ページで Kubernetes タスクを作成します。[リソースタイプ] を [PHP-Script] に設定し、デフォルトの php:7.4-cli イメージを使用するか、独自のカスタムイメージに置き換えます。
[タスクの作成] ページの [基本設定] ステップで、次のパラメーターを設定します:
[タスク名]:
PHP-Scriptと入力します[アプリケーション ID]:対象のアプリケーションを選択します
[タスクタイプ]:[k8s] を選択します
[リソースタイプ]:[Php-Script] を選択します
コードエディタに、
<?php echo 'Hello, World!'; ?>などの PHP コードを入力します[テンプレートタイプ]:[標準テンプレート] を選択します
イメージ:
php:7.4-cliを入力します[mountPath]:
script/phpと入力します[imagePullPolicy]:[IfNotPresent] を選択します
[ファイル形式]:[unix] を選択します
[実行モード]:[単一マシン実行] を選択します
[優先度]:[中] を選択します
設定後、[次へ] をクリックします。
[1 回実行] をクリックします。Kubernetes クラスターで schedulerx-php-{JobId} という名前の Pod が起動します。
[root@schedulerx-agent-xxx xxx]
# kubectl get pod | grep schedulerx
schedulerx-agent-xxx xxx 1/1 Running 0 19h
schedulerx-php-1464 0/1 Completed 0 54s
schedulerx-python-1463 0/1 Completed 0 28m
schedulerx-shell-1461 0/1 Completed 0 38m
[root@schedulerx-agent-xxx xxx]
# kubectl logs schedulerx-xxx
Hello, World!
[root@schedulerx-agent-xxx xxx]
#SchedulerX コンソールでは、[タスク管理] ページで過去の実行履歴と Pod の運用ログを表示できます。タスクが正常に実行された後、[タスクインスタンス履歴] ページで、タスクのステータスが [成功] と表示されます。タスクレコードをクリックして [ログ] パネルを開きます。ログ出力には Hello, World! が含まれ、Pod のステータスが Succeeded に変更されます。
Node.js スクリプトの実行
Pod で Node.js スクリプトを実行する場合は、[タスク管理] ページで Kubernetes タスクを作成します。[リソースタイプ] を [Nodejs-Script] に設定し、デフォルトの node:16 イメージを使用するか、独自のカスタムイメージに置き換えます。
SchedulerX コンソールでタスクを作成します。[基本設定] ステップで、次のパラメーターを設定します:
[タスク名]:
Nodejs-Script[アプリケーション ID]:対象のアプリケーションを選択します
[タスクタイプ]:[k8s]
[リソースタイプ]:[Nodejs-Script]
コードエディタに
console.log("Hello, World!");と入力します[テンプレートタイプ]:[標準テンプレート]
[イメージ]:
node:16[mountPath]:
script/node[imagePullPolicy]:[IfNotPresent]
[ファイル形式]:[unix]
[実行モード]:[単一マシン実行]
[優先度]:[中]
設定後、[次へ] をクリックします。
[1 回実行] をクリックします。Kubernetes クラスターで schedulerx-node-{JobId} という名前の Pod が起動します。
[root@schedulerx-agent-xxx Z]# kubectl get pod | grep schedulerx
schedulerx-agent-6xxx 1/1 Running 0 19h
schedulerx-node-xxx 0/1 Completed 0 23s
schedulerx-php-xxx 0/1 Completed 0 4m57s
schedulerx-python-xxx 0/1 Completed 0 32m
schedulerx-shell-xxx 0/1 Completed 0 42m
[root@schedulerx-agent-6xxx Z]# kubectl logs schedulerx-node-xxx
Hello, World!SchedulerX コンソールでは、[タスク管理] ページで過去の実行履歴と Pod の運用ログを表示できます。タスク実行後、[タスクインスタンス履歴] ページで、タスクの実行ステータスが [成功] と表示されます。[ログ] パネルには Hello, World! が出力され、pod status change to Succeeded と表示されます。
Job-YAML
SchedulerX を使用して、ネイティブの Kubernetes ジョブを実行することもできます。[タスク管理] ページで Kubernetes タスクを作成し、[リソースタイプ] を [Job-YAML] に設定します。
[タスクの作成] ページの [基本設定] ステップで、次のパラメーターを設定します:
[タスク名]:
Job-YAML[アプリケーション ID]:作成したアプリケーションを選択します
タスクタイプ: k8s
[リソースタイプ]:[Job-YAML]
[実行モード]:[単一マシン実行]
[優先度]:[中]
コードエディタに、次の Kubernetes Job YAML を入力します:
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(100)"]
restartPolicy: Never
backoffLimit: 4[次へ] をクリックして、スケジュール設定に進みます。
[1 回実行] をクリックします。Kubernetes クラスターでジョブとそれに対応する Pod が起動したことを確認できます。
[root@schedulerx-agent-xxx /]
# kubectl get job
NAME COMPLETIONS DURATION AGE
pi 1/1 17s 6m5s
[root@schedulerx-agent-xxx /]
# kubectl get pod
NAME READY STATUS RESTARTS AGE
hello 0/1 Completed 0 19h
pi--1-jgck5 0/1 Completed 0 6m8s
schedulerx-agent-xxx 1/1 Running 0 19h
schedulerx-node-1xxx 0/1 Completed 0 14m
schedulerx-php-14xxx 0/1 Completed 0 19m
schedulerx-python 0/1 Completed 0 46m
schedulerx-shell-xxx 0/1 Completed 0 56m
[root@schedulerx-agent-xxx /]
# kubectl logs pi--1-jgck5
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706
[root@schedulerx-agent-xxx /]
#SchedulerX コンソールでは、[タスク管理] ページで過去の実行履歴と Pod の運用ログを表示できます。[タスクインスタンス履歴] ページでは、Job-YAML タスクの実行ステータス (成功または失敗) を確認できます。タスクインスタンスをクリックして [ログ] パネルを開くと、ログには taskMaster が正常に初期化され、タスクの計算出力が表示されていることが示されます。
CronJob-YAML
SchedulerX を使用して、ネイティブの Kubernetes CronJob を実行することもできます。[タスク管理] ページで Kubernetes タスクを作成し、[リソースタイプ] を [CronJob-YAML] に設定します。
[基本設定] ページで、[タスク名] を CronJob-YAML に、[タスクタイプ] を [k8s] に設定します。YAML エディタに CronJob の定義を入力します。例では、metadata.name: hello、schedule: "0/1 * * * *"、コンテナイメージ busybox:1.28、imagePullPolicy: IfNotPresent、および実行コマンド /bin/sh を設定します。[実行モード] を [単一マシン実行] に設定し、[次へ] をクリックします。
[1 回実行] をクリックします。[タスクインスタンス履歴] ページで Pod が起動したことを確認できます。
SchedulerX コンソールでは、[タスク管理] ページで過去の実行履歴と Pod の運用ログを表示できます。
ログには、Pod が Hello from the Kubernetes cluster を出力し、ステータスが Succeeded に変更されたことが記録されています。
Pod-YAML
SchedulerX を使用して、ネイティブの Kubernetes Pod を実行することもできます。[タスク管理] ページで Kubernetes タスクを作成し、[リソースタイプ] を [Pod-YAML] に設定します。
[タスクの作成] ページの [基本設定] ステップで、次のパラメーターを設定します:
[タスク名]:
Pod-YAML[アプリケーション ID]:対象のアプリケーションを選択します
[タスクタイプ]:[k8s]
[リソースタイプ]:[Pod-YAML]
コードエディタに、Kubernetes Pod の YAML 定義を入力します。たとえば、busybox イメージを使用し、echo "hello world" を実行する Pod です。[実行モード] を [単一マシン実行] に、[優先度] を [中] に設定し、[次へ] をクリックします。
[1 回実行] をクリックします。Kubernetes クラスターで Pod が起動したことを確認できます。
[root@schedulerx-agent-xxx /]
# kubectl get pod
NAME READY STATUS RESTARTS AGE
hello 0/1 Completed 0 2m39s
pi--1-jgck5 0/1 Completed 0 49m
schedulerx-agent-xxx 1/1 Running 0 20h
schedulerx-node-xxx 0/1 Completed 0 58m
schedulerx-php-1xxx 0/1 Completed 0 62m
schedulerx-pythoxxx 0/1 Completed 0 90m
schedulerx-shell 0/1 Completed 0 100m
[root@schedulerx-xxx /]
# kubectl logs hello
hello world
[root@schedulerx-agent-xxx /]
#SchedulerX コンソールでは、[タスク管理] ページで過去の実行履歴と Pod の運用ログを表示できます。[タスクインスタンス履歴] ページでは、Pod-YAML タイプのタスクの実行ステータス (成功または失敗) を確認できます。対応するタスクをクリックして [ログ] を表示すると、hello world と standalone taskMaster init success. が含まれており、タスクが正常に実行されたことを示します。
SchedulerX を使用して Kubernetes Pod を実行する場合、次の点にご注意ください。
Web アプリケーションの Pod のように、実行サイクルが長い Pod の使用は推奨されません。Pod が起動すると、実行が終了しなくなります。
Pod の再起動を無効にすることを推奨します。そうしないと、Pod が繰り返し再起動されます。