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

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

最終更新日:Jun 13, 2026

SchedulerX は、定期タスク、マルチ言語スクリプト、HTTP API をサポートします。また、ネイティブな 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 ファイルの記述が不要になり、開発効率が向上します。MSE SchedulerX コンソールで直接スクリプト(Shell、Python、PHP、Node.js)を編集でき、SchedulerX が自動的にそれらを Pod として実行します。スクリプトの変更は、次のスケジュール実行時に反映されます。また、K8s タスクを使用することで、コンテナ技術の詳細を理解しなくても利用できます。

ビジュアルワークフローのオーケストレーション

Kubernetes でのワークフローオーケストレーションには、一般的に Argo が使用されます。以下の例をご参照ください。

コード表示

# 次のワークフローはダイヤモンド型ワークフローを実行します
#
#   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 を使用すると、ドラッグ&ドロップによるビジュアル UI で K8s タスクのオーケストレーションが可能となり、従来のコードベースのソリューションよりも便利です。ビジュアルワークフローグラフにより、ランタイムのボトルネックを迅速に特定でき、O&M 効率を向上させることができます。

アラートとモニタリング

SchedulerX で Pod やジョブをスケジューリングする際、組み込みのモニタリングとアラート機能を利用できます。

  • サポートされるアラートチャンネル:SMS、電話、メール、Webhook(DingTalk、WeCom、Lark)

  • サポートされるアラートポリシー:失敗時のアラート、実行タイムアウト時のアラート

ログサービス

SchedulerX は、スケジューリングした Pod およびジョブのログを自動収集するため、別途ログサービスを用意する必要がありません。Pod の実行に失敗した場合は、MSE SchedulerX コンソールで直接トラブルシューティングが可能です。

モニタリングダッシュボード

SchedulerX の組み込みモニタリングダッシュボードにより、タスクのリアルタイムモニタリングが可能です。

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

SchedulerX は、Java および K8s タスクタイプの両方において、オンラインおよびオフラインの定期タスクをハイブリッドでデプロイおよびスケジューリングできます。ビジネスアプリケーションには通常、複数の定期タスクが含まれます。頻繁に実行される定期タスクの場合は、ビジネスアプリケーションと同じプロセスで実行できます。ただし、インプロセスでタスクを実行すると、オンラインアプリケーションの CPU やメモリを消費し、オンラインワークロードとの隔離が困難になります。そのため、リソースを多く消費するが実行頻度が低いタスク(たとえば、1 時間に 1 回または 1 日に 1 回など)の場合は、別途 Pod を追加してタスクを実行することを推奨します。これにより、元のオンラインアプリケーションとは異なるプロセスでタスクを実行できます。

方法 1:デプロイメントを使用したデプロイ

Java 以外のアプリケーションの場合、schedulerx-agent.yaml ファイルをデプロイメントとしてデプロイできます。エージェントはスタンドアロンの Pod として実行されます。ワークフローとアーキテクチャを次の図に示します。

p452558.png

前提条件

アプリケーションの作成 ダイアログボックスで、アプリケーションタイプKubernetes アプリケーション に設定し、バージョンProfessional Edition に設定します。

ステップ 1:サービスアカウントの構成

SchedulerX K8s タスクでは、認証および権限付与のためにサービスアカウントが必要です。デフォルトでは、タスクは対象名前空間内の schedulerx サービスアカウントで実行されます。

Kubernetes クラスター内で、Pod またはジョブをスケジューリングする各名前空間に対して、schedulerx-serviceaccount.yaml 構成を適用する必要があります。以下のサンプル 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。MSE SchedulerX コンソールの Namespaces ページで確認できます。

${SCHEDULERX_GROUPID}

GroupId(アプリケーション ID)。MSE SchedulerX コンソールの アプリケーション管理 ページで確認できます。

${SCHEDULERX_APPKEY}

AppKey(アプリケーションキー)。MSE SchedulerX コンソールの アプリケーション管理 ページで確認できます。

デプロイメントが完了すると、MSE SchedulerX コンソールの アプリケーション管理 ページでインスタンスを確認できます。インスタンスが表示されている場合、エージェントが正常に接続されたことを示します。

方法 2:Helm チャートを使用した SchedulerX のデプロイ

前提条件

  • Container Service for Kubernetes (ACK) クラスターまたは自己管理型 Kubernetes クラスターを作成済みである必要があります。詳細については、「Kubernetes クラスターの作成」をご参照ください。

  • タスクスケジューリングを有効化しました。

  • MSE 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 チャートのインストール

  1. タスクスケジューリングからアプリケーションアクセスパラメーターを取得します。

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

    2. (このレガシーステップは無視できます。)

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

    4. (このステップは次のステップに統合されています。)

    5. アプリケーション管理 ページで、Actions 列の アクセス構成 をクリックします。アクセス構成 ページの左上隅で、k8s を選択します。

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

    説明
    • インストールコマンド内のアクセスパラメーターを、ご利用のアプリケーションのものに置き換えてください。

    • アクセス構成のイメージアドレスは、デフォルトで公開 X86_64 イメージです。クラスターノードのリージョンおよびアーキテクチャに一致するイメージアドレスを選択してください。

    helm install  schedulerxchart schedulerxchart-2.0.0.tgz \
    --set SCHEDULERX_ENDPOINT=<your_endpoint>\
    ,SCHEDULERX_NAMESPACE=<your_namespace_id>\
    ,SCHEDULERX_GROUPID=<your_group_id>\
    ,SCHEDULERX_APPKEY=****\
    ,SCHEDULERX_AGENT_IMAGE=schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-amd64

    インストール後、次の出力が表示されます。

    NAME: schedulerxchart
    LAST DEPLOYED: xxx
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None

    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。MSE SchedulerX コンソールの Namespaces ページで確認できます。

    ${SCHEDULERX_GROUPID}

    GroupId(アプリケーション ID)。MSE SchedulerX コンソールの アプリケーション管理 ページで確認できます。

    ${SCHEDULERX_APPKEY}

    AppKey(アプリケーションキー)。MSE SchedulerX コンソールの アプリケーション管理 ページで確認できます。

    SCHEDULERX_AGENT_IMAGE

    イメージアドレス。

    インストールが完了すると、MSE SchedulerX コンソールでインスタンスを確認できます。

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

アプリケーションが Java アプリケーションであり、K8s タスクに加えて Java プログラムもスケジューリングする必要がある場合は、Java SDK を使用してデプロイします。SchedulerX は、ご利用のオンラインアプリケーションと同じプロセスで実行されます。ワークフローとアーキテクチャを次の図に示します。66

前提条件

SchedulerX への接続

SDK 統合の詳細については、「Spring Boot アプリケーションを SchedulerX に接続する」をご参照ください。

K8s タスクを使用するには、以下の例のように 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>

次のステップ:K8s タスクの作成

以下のスクリプトを実行するには、タスク管理ページで K8s タスクを作成します。詳細については、「タスク管理」をご参照ください。

Shell スクリプト

Pod 内で Shell スクリプトを実行するには、タスク管理 ページで K8s タスクを作成します。リソースタイプShell-Script に設定し、デフォルトの busybox イメージを使用するか、カスタムイメージを指定します。スクリプトエディタで、echo "Hello, World!" のように直接 Shell コマンドを記述できます。

[一度だけ実行] をクリックします。Kubernetes クラスター内で、schedulerx-shell-{JobId} という名前の Pod が起動します。

# kubectl get pod | grep schedulerx
schedulerx-agent-xxx    1/1     Running     0          19h
schedulerx-shell-xxx    0/1     Completed   0          9s

# kubectl logs schedulerx-shell-xxx
Hello, World!
hello schedulerx!

MSE SchedulerX コンソールの タスク管理 ページで、履歴レコードを照会し、実行中の Pod のログを確認できます。

Python スクリプト

Pod 内で Python スクリプトを実行するには、タスク管理 ページで K8s タスク を作成します。リソースタイプPython-Script に設定し、デフォルトの Python イメージを使用するか、カスタムイメージを指定します。スクリプトエディタで直接 Python コードを記述できます。

[一度だけ実行] をクリックします。Kubernetes クラスター内で、schedulerx-python-{JobId} という名前の Pod が起動します。

# kubectl get pod | grep schedulerx
schedulerx-agent-xxx      1/1     Running     0     19h
schedulerx-python-xxx     0/1     Completed   0     xxx

# kubectl logs schedulerx-python-xxx
Hello, World!
hello schedulerx!

MSE SchedulerX コンソールの タスク管理 ページで、履歴レコードを照会し、実行中の Pod のログを確認できます。

PHP スクリプト

Pod 内で PHP スクリプトを実行するには、タスク管理 ページで K8s タスク を作成します。リソースタイプPHP-Script に設定し、デフォルトの php:7.4-cli イメージを使用するか、カスタムイメージを指定します。スクリプトエディタで直接 PHP コードを記述できます。

[一度だけ実行] をクリックします。Kubernetes クラスター内で、schedulerx-php-{JobId} という名前の Pod が起動します。

# kubectl get pod | grep schedulerx
schedulerx-agent-xxx    1/1     Running     0     19h
schedulerx-php-xxx      0/1     Completed   0     xxx
schedulerx-python-xxx   0/1     Completed   0     xxx
schedulerx-shell-xxx    0/1     Completed   0     xxx

# kubectl logs schedulerx-php-xxx
Hello, World!
hello schedulerx!

MSE SchedulerX コンソールの タスク管理 ページで、履歴レコードを照会し、実行中の Pod のログを確認できます。

Node.js スクリプト

Pod 内で Node.js スクリプトを実行するには、タスク管理 ページで K8s タスク を作成します。リソースタイプNodejs-Script に設定し、デフォルトの node:16 イメージを使用するか、カスタムイメージを指定します。スクリプトエディタで直接 Node.js コードを記述できます。

[一度だけ実行] をクリックします。Kubernetes クラスター内で、schedulerx-node-{JobId} という名前の Pod が起動します。

# kubectl get pod | grep schedulerx
schedulerx-agent-xxx    1/1     Running     0     19h
schedulerx-node-xxx     0/1     Completed   0     23s
schedulerx-php-xxx      0/1     Completed   0     xxx
schedulerx-python-xxx   0/1     Completed   0     xxx
schedulerx-shell-xxx    0/1     Completed   0     xxx

# kubectl logs schedulerx-node-xxx
Hello, World!

MSE SchedulerX コンソールの タスク管理 ページで、履歴レコードを照会し、実行中の Pod のログを確認できます。

Job-YAML

ネイティブな Kubernetes ジョブを SchedulerX で実行することもできます。タスク管理 ページで K8s タスクを作成し、リソースタイプJob-YAML に設定します。エディタに、円周率を計算するサンプルタスクなどのジョブ定義を YAML 形式で入力します。

[一度だけ実行] をクリックします。Kubernetes クラスター内で、ジョブとその Pod が正常に起動します。

# kubectl get job
NAME   COMPLETIONS   DURATION   AGE
pi     1/1           17s        6m5s

# kubectl get pod
NAME                         READY   STATUS      RESTARTS   AGE
hello                        0/1     Completed   0          6m8s
pi--1-jgck5                  0/1     Completed   0          xxx
schedulerx-agent-xxx         1/1     Running     0          19h
schedulerx-node-xxx          0/1     Completed   0          14m
schedulerx-php-xxx           0/1     Completed   0          19m
schedulerx-python-xxx        0/1     Completed   0          46m
schedulerx-shell-xxx         0/1     Completed   0          56m

# kubectl logs pi--1-jgck5
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706...

MSE SchedulerX コンソールの タスク管理 ページで、履歴レコードを照会し、実行中の Pod のログを確認できます。

Cronjob-YAML

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

エディタに、schedulejobTemplate などの設定を含む cronjob の YAML 定義を入力します。

[一度だけ実行] をクリックします。タスクインスタンスレコード ページで、Pod が正常に起動していることを確認できます。

MSE SchedulerX コンソールの タスク管理 ページで、履歴レコードを照会し、実行中の Pod のログを確認できます。

Pod-YAML

ネイティブな Kubernetes Pod を SchedulerX で実行することもできます。タスク管理 ページで K8s タスクを作成し、リソースタイプPod-YAML に設定します。エディタに、busybox イメージを使用して hello world を出力するサンプルなどの Pod 定義を YAML 形式で入力します。

[一度だけ実行] をクリックします。Kubernetes クラスター内で、Pod が正常に起動します。

# 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-xxx           0/1     Completed   0          62m
schedulerx-python-xxx        0/1     Completed   0          90m
schedulerx-shell-xxx         0/1     Completed   0          100m

# kubectl logs hello
hello world

MSE SchedulerX コンソールの タスク管理 ページで、履歴レコードを照会し、実行中の Pod のログを確認できます。

説明

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

  • Web アプリケーションなど、長時間実行される Pod は避けてください。これらの Pod は完了状態になりません。

  • 再起動ポリシーを Never に設定してください。