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

SchedulerX:Kubernetes クラスターへの SchedulerX のデプロイ

最終更新日:Jan 17, 2026

SchedulerX は、定期タスク、多言語スクリプト、HTTP インターフェイスをサポートしています。また、ネイティブの Kubernetes ジョブや Pod のスケジューリングもサポートしています。このトピックでは、Kubernetes 環境で SchedulerX をデプロイする方法について説明します。

利用シーン

SchedulerX を使用して Kubernetes ジョブをスケジューリングすると、次の利点があります。

オンラインでのスクリプト Pod の編集

Kubernetes ジョブは、データ処理や運用保守 (O&M) によく使用され、通常はスクリプトとして実装されます。ネイティブな方法では、スクリプトをイメージにパッケージ化し、YAML ファイルでスクリプトコマンドを設定する必要があります。スクリプトを修正するには、イメージを再ビルドして再公開する必要があります。以下に例を示します。

コードを展開して表示

apiVersion: batch/v1
kind: Job
metadata:
  name: hello
spec:
  template:
    spec:
      containers:
      - name: hello
        image: registry.cn-hangzhou.aliyuncs.com/test/hello:1.0.0
        command: ["sh",  "/root/hello.sh"]
      restartPolicy: Never
  backoffLimit: 4

SchedulerX を使用する場合、イメージのビルドや YAML スクリプトの記述は不要です。SchedulerX コンソールで直接スクリプト (Shell、Python、PHP、または Node.js) を編集するだけで、スクリプトは Pod として自動的に実行されます。スクリプトを修正するには、SchedulerX コンソールで再編集できます。変更は、次回の定期実行時に有効になります。このアプローチにより、Kubernetes ジョブの開発効率が向上します。SchedulerX で Kubernetes タスクを使用する場合、コンテナーの基盤となる詳細を理解する必要がないため、コンテナー技術を利用するハードルが下がります。

ビジュアルなタスクオーケストレーション

Kubernetes では、ワークフローオーケストレーションの主流ソリューションは Argo です。以下に例を示します。

コードを展開して表示

# The following workflow executes a diamond workflow
#
#   A
#  / \
# B   C
#  \ /
#   D
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: dag-diamond-
spec:
  entrypoint: diamond
  templates:
  - name: diamond
    dag:
      tasks:
      - name: A
        template: echo
        arguments:
          parameters: [{name: message, value: A}]
      - name: B
        depends: "A"
        template: echo
        arguments:
          parameters: [{name: message, value: B}]
      - name: C
        depends: "A"
        template: echo
        arguments:
          parameters: [{name: message, value: C}]
      - name: D
        depends: "B && C"
        template: echo
        arguments:
          parameters: [{name: message, value: D}]

  - name: echo
    inputs:
      parameters:
      - name: message
    container:
      image: alpine:3.7
      command: [echo, "{{inputs.parameters.message}}"]

SchedulerX は、ビジュアルインターフェイスを使用した Kubernetes タスクのドラッグアンドドロップによるオーケストレーションをサポートしています。これは、コードベースのワークフローオーケストレーションという主流のソリューションよりも便利です。さらに、タスクの実行中に、ビジュアルなワークフローグラフによってボトルネックを迅速に特定し、運用保守効率を向上させることができます。

アラートとモニタリング

SchedulerX を使用して Pod やジョブをスケジューリングする場合、そのモニタリング機能とアラート機能を再利用できます。

  • サポートされているアラートチャンネル:ショートメッセージ、電話、メール、Webhook (DingTalk、WeCom、または Lark)。

  • サポートされているアラートポリシー:障害アラートおよび実行タイムアウトアラート。

ログサービス

SchedulerX を使用して Pod やジョブをスケジューリングすると、SchedulerX は自動的に Pod のログを収集するため、追加のログサービスを有効にする必要はありません。Pod の実行に失敗した場合、SchedulerX コンソールで直接障害のトラブルシューティングを行うことができます。16

監視ダッシュボード

SchedulerX に組み込まれているタスクモニタリングダッシュボードを使用して、タスクをリアルタイムでモニターできます。

オフラインタスクとオンラインタスクのハイブリッドデプロイメント

SchedulerX は、オフラインとオンラインの両方の定期タスクに対するハイブリッドスケジューリングを提供し、Java と Kubernetes のタスクタイプをサポートしています。ビジネスアプリケーションには通常、複数の定期タスクが含まれます。定期タスクが高い周波数で実行される場合、ビジネスアプリケーションと同じプロセスで実行できます。ただし、これらのインプロセス呼び出しはオンラインアプリケーションの CPU とメモリを消費し、主要なビジネスロジックから分離することはできません。したがって、定期タスクが大量のリソースを消費し、1 時間に 1 回や 1 日に 1 回などの低い周波数で実行される場合は、新しい Pod でタスクを実行できます。これにより、タスクは元のオンラインアプリケーションとは別のプロセスに分離されます。

方法 1:Deployment を使用した SchedulerX のデプロイ (推奨)

Java 以外のアプリケーションタイプを使用する場合、Deployment を使用して schedulerx-agent.yaml ファイルをデプロイできます。SchedulerX は、別の Pod でアプリケーションを起動します。プロセスを次の図に示します。

p452558.png

前提条件

1

ステップ 1:ServiceAccount の設定

SchedulerX の Kubernetes タスクは、認証と権限付与のために ServiceAccount に依存します。デフォルトでは、Kubernetes タスクは名前空間の SchedulerX ServiceAccount を使用して実行されます。

Kubernetes クラスターおよび対応する名前空間で、schedulerx-serviceaccount.yaml を一度だけ実行する必要があります。名前空間を分離し、ターゲットの名前空間内でのみ Pod またはジョブをスケジューリングするには、次のサンプル YAML コードを実行します。

コードを展開して表示

apiVersion: v1
kind: ServiceAccount
metadata:
  name: schedulerx
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: schedulerx-role
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/log"]
    verbs: ["get","list","watch"]
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["create","delete","get","list","patch","update"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["watch"]
  - apiGroups: ["batch"]
    resources: ["jobs","cronjobs"]
    verbs: ["create","delete","get","list","patch","update","watch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: schedulerx-binding
subjects:
  - kind: ServiceAccount
    name: schedulerx
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: schedulerx-role

名前空間をまたいでスケジューリングするには、ClusterRole と ClusterRoleBinding を使用します。

コードを展開して表示

apiVersion: v1
kind: ServiceAccount
metadata:
  name: schedulerx
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: schedulerx-cluster-role
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/log"]
    verbs: ["get","list","watch"]
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["create","delete","get","list","patch","update"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["watch"]
  - apiGroups: ["batch"]
    resources: ["jobs","cronjobs"]
    verbs: ["create","delete","get","list","patch","update","watch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: schedulerx-cluster-binding
subjects:
  - kind: ServiceAccount
    name: schedulerx
    namespace: <NAMESPACE1>
  - kind: ServiceAccount
    name: schedulerx
    namespace: <NAMESPACE2>
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: schedulerx-cluster-role

ステップ 2:schedulerx-agent.yaml のインストール

schedulerx-agent.yaml の設定は次のとおりです。

schedulerx-agent.yaml の設定を展開して表示

apiVersion: apps/v1
kind: Deployment
metadata:
  name: schedulerx-agent
  labels:
    app: schedulerx-agent
spec:
  replicas: 1
  selector:
    matchLabels:
      app: schedulerx-agent
  template:
    metadata:
      labels:
        app: schedulerx-agent
    spec:
      serviceAccountName: schedulerx
      containers:
      - name: schedulerx-agent
        image: schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-amd64
        imagePullPolicy: Always
        resources:
          requests:
            cpu: 500m
        env:
          - name: "SCHEDULERX_ENDPOINT"
            value: "${SCHEDULERX_ENDPOINT}"
          - name: "SCHEDULERX_NAMESPACE"
            value: "${SCHEDULERX_NAMESPACE}"
          - name: "SCHEDULERX_GROUPID"
            value: "${SCHEDULERX_GROUPID}"
          - name: "SCHEDULERX_APPKEY"
            value: "${SCHEDULERX_APPKEY}"
          - name: "SCHEDULERX_STARTER_MODE"
            value: "pod"
        livenessProbe: 
          exec: 
            command: ["/bin/bash","/root/health.sh"]
          timeoutSeconds: 30
          initialDelaySeconds: 30

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 コンソールの [名前空間] ページで取得できます。7

${SCHEDULERX_GROUPID}

アプリケーションの ID。SchedulerX コンソールの [アプリケーション管理] ページで取得できます。

${SCHEDULERX_APPKEY}

アプリケーションのキー。SchedulerX コンソールの [アプリケーション管理] ページで取得できます。

デプロイメントが完了したら、SchedulerX コンソールの [アプリケーション管理] ページでインスタンスを表示して、接続が成功したことを確認できます。

方法 2:Helm パッケージを使用した SchedulerX のデプロイ

前提条件

手順 1:SchedulerX Helm パッケージをダウンロードする

次のコマンドを実行して、SchedulerX Helm パッケージをダウンロードします。

wget https://schedulerx2.oss-cn-hangzhou.aliyuncs.com/helm/schedulerxchart-2.0.0.tgz

ステップ 2: schedulerx Helm パッケージのインストール

  1. 分散タスクスケジューリングプラットフォームコンソールからアプリケーションの接続パラメーターを取得します。

    1. 分散タスクスケジューリングプラットフォームにログインします。

    2. 上部のナビゲーションバーで、リージョンを選択します。

    3. 左側のナビゲーションウィンドウで、[アプリケーション管理] をクリックします。

    4. [アプリケーション管理] ページで、アプリケーションを見つけ、[アクション] 列の [接続設定] をクリックします。[接続設定] ページの左上で、[Kubernetes] を選択します。

  2. 次のインストールコマンドを実行します。

    説明
    • インストールコマンドの接続パラメーターを、対象のアプリケーションのパラメーターに置き換えてください。

    • 接続設定のデフォルトのレジストリアドレスは、パブリックネットワーク上の 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

    次の図は、インストールプロセスのスクリーンショットです。

    1

    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 コンソールの [名前空間] ページで取得できます。7

    ${SCHEDULERX_GROUPID}

    アプリケーションの ID。SchedulerX コンソールの [アプリケーション管理] ページで取得できます。

    ${SCHEDULERX_APPKEY}

    アプリケーションのキー。SchedulerX コンソールの [アプリケーション管理] ページで取得できます。

    SCHEDULERX_AGENT_IMAGE

    レジストリアドレス。

    インストールが完了したら、SchedulerX コンソールでインスタンスを表示できます。

方法 3:Java SDK を使用した SchedulerX のデプロイ

ご利用のアプリケーションが Java アプリケーションであり、Kubernetes タスクに加えて Java プログラムをスケジューリングする必要がある場合は、Java ソフトウェア開発キット (SDK) を使用してデプロイできます。SchedulerX は、オンラインビジネスと同じプロセスで実行されます。プロセスを次の図に示します。66

前提条件

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} です。7

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

Python スクリプト

Pod で Python スクリプトを実行する場合は、[タスク管理] ページで [Kubernetes タスク] を作成します。[リソースタイプ][Python-Script] に設定します。デフォルトの Python イメージを使用するか、独自のイメージに置き換えることができます。

[一度実行] をクリックします。Kubernetes クラスターで Pod が起動するのが確認できます。Pod 名は schedulerx-python-{JobId} です。7

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

PHP スクリプト

Pod で PHP スクリプトを実行する場合は、[タスク管理] ページで [Kubernetes タスク] を作成します。[リソースタイプ][PHP-Script] に設定します。デフォルトのイメージ php:7.4-cli を使用するか、独自のイメージに置き換えることができます。a3

[一度実行] をクリックします。Pod が Kubernetes クラスターで起動するのが確認できます。Pod 名は schedulerx-php-{JobId} です。12

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

Node.js スクリプト

Pod で Node.js スクリプトを実行する場合は、[タスク管理] ページで [Kubernetes タスク] を作成し、[リソースタイプ][Nodejs-Script] に設定します。 デフォルトのイメージ node:16 を使用するか、独自のイメージと置き換えることができます。a4

[一度実行] をクリックします。Pod が Kubernetes クラスターで起動します。Pod 名は schedulerx-node-{JobId} です。8

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

Job-YAML

SchedulerX を使用して、ネイティブ Kubernetes ジョブを実行することもできます。[タスク管理] ページで [Kubernetes] タスクを作成し、[リソースタイプ][Job-YAML] に設定します。a5

[一度実行] をクリックします。 Kubernetes クラスターでジョブと Pod が正常に開始されたことを確認できます。8

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

CronJob-YAML

また、SchedulerX を使用してネイティブの Kubernetes CronJob を実行することもできます。[タスク管理] ページで [Kubernetes] タスクを作成し、[リソースタイプ][CronJob-YAML] に設定します。

image.png

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

image.png

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

image.png

Pod-YAML

SchedulerX を使用して、ネイティブ Kubernetes Pod を実行することもできます。[タスク管理] ページで [Kubernetes] タスクを作成し、[リソースタイプ][Pod-YAML] に設定します。a6

[一度実行] をクリックします。Kubernetes クラスターで Pod が正常に起動したことを確認できます。9

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

説明

SchedulerX を使用して Kubernetes Pod を実行する場合は、次の点にご注意ください。

  • 起動後に終了しない Web アプリケーションなど、ライフサイクルの長い Pod の実行は避けてください。

  • 再起動ポリシーを Never に設定してください。そうしないと、Pod は継続的に再起動します。