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

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

最終更新日:Apr 26, 2025

SchedulerX を使用すると、プログラムの定期的なスケジューリングを実行したり、さまざまなプログラミング言語でスクリプトを実行したり、HTTP 操作を呼び出したりできます。 SchedulerX は、ネイティブの Kubernetes ジョブとポッドのスケジューリングもサポートしています。 このトピックでは、Kubernetes クラスターに SchedulerX をデプロイする方法について説明します。

シナリオ

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

ポッドモードでのオンラインスクリプト編集

ほとんどの場合、Kubernetes ジョブは、スクリプトに基づいてデータ処理と O&M シナリオで実行されます。 SchedulerX を使用して Kubernetes ジョブをスケジュールしない場合は、ジョブのスクリプトをイメージにパッケージ化し、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 を使用して Kubernetes ジョブをスケジュールする場合、新しいイメージをビルドしたり、YAML ファイルでスクリプトコマンドを構成したりする必要はありません。 SchedulerX コンソールでスクリプトを編集するだけで済みます。 Shell、Python、PHP、Node.js などのプログラミング言語のスクリプトがサポートされています。 その後、SchedulerX はポッドモードでスクリプトを自動的に実行します。 スクリプトを変更する場合は、SchedulerX コンソールでスクリプトを再編集するだけで済みます。 変更は、次回 Kubernetes ジョブをスケジュールするときに自動的に有効になります。 これにより、Kubernetes ジョブを開発する効率が向上します。 さらに、SchedulerX を使用して Kubernetes ジョブをスケジュールする場合、コンテナーに対する操作はユーザーには認識されません。 これにより、コンテナーの基本的な概念に慣れていないユーザーでも、Kubernetes ジョブを簡単にスケジュールできます。

視覚化されたジョブオーケストレーション

Argo Workflows は、Kubernetes 上のジョブのワークフローを調整するための主流のソリューションです。 サンプルコード:

[コードの表示]

# 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 ジョブを調整できる GUI を提供します。 コードベースのワークフローオーケストレーションの主流ソリューションである Argo Workflows と比較して、SchedulerX はより便利性を提供します。 ジョブの実行中に、SchedulerX はジョブのワークフローを視覚化する有向非循環グラフ(DAG)を表示し、ブロックされたジョブの問題のトラブルシューティングと O&M 効率の向上に役立てます。

監視とアラート

SchedulerX を使用してポッドまたはジョブをスケジュールする場合、SchedulerX の監視およびアラート機能を使用できます。

  • アラート方法:SchedulerX は、ショートメッセージ、電話、メール、DingTalk チャットボット、WeCom ボット、Lark ボットの Webhook URL を使用してアラート通知を送信します。

  • アラートポリシー:SchedulerX は、ジョブが実行に失敗した場合、またはジョブの実行がタイムアウトした場合にアラートをトリガーします。

ログ収集

SchedulerX を使用してポッドまたはジョブをスケジュールする場合、SchedulerX はポッドまたはジョブの操作ログを自動的に収集します。 ポッドが実行に失敗した場合、SchedulerX コンソールのログに基づいて問題のトラブルシューティングを行うことができます。16

監視ダッシュボード

SchedulerX コンソールの [概要] ページで、ジョブをリアルタイムで表示できます。

オンラインジョブとオフラインジョブの混在デプロイ

SchedulerX を使用すると、Java タイプと Kubernetes タイプのオンラインおよびオフラインの定期ジョブを混在させてデプロイおよびスケジュールできます。 ビジネスアプリケーションには、複数の定期ジョブが含まれる場合があります。 定期ジョブを頻繁にスケジュールする場合は、ビジネスアプリケーションと同じプロセスにデプロイできます。 この場合、アプリケーションの CPU リソースとメモリが消費されます。 定期ジョブは、オンラインビジネスから分離されていません。 大量の リソース を消費し、1 時間に 1 回または 1 日に 1 回など、低い頻度でスケジュールされる定期ジョブの場合は、ジョブを実行するポッドを作成できます。 これにより、ジョブはオンラインビジネスとは異なるプロセスで実行できます。

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

Java 以外のアプリケーションの場合は、Deployment を使用して schedulerx-agent.yaml をデプロイできます。 この方法では、SchedulerX は別のポッドとしてデプロイされます。 次の図は、この場合の SchedulerX の動作を示しています。

p452558.png

前提条件

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

  • SchedulerX がアクティブ化されていること。

  • SchedulerX コンソールで Kubernetes アプリケーションが作成されていること。 詳細については、「アプリケーションの作成」をご参照ください。

1

手順 1:サービスアカウントを構成する

サービスアカウントは、SchedulerX を使用して Kubernetes ジョブがスケジュールされるときに、検証と承認のための ID を提供します。 デフォルトでは、Kubernetes ジョブが属する名前空間のサービスアカウントが使用されます。

Kubernetes クラスターの必要な名前空間で schedulerx-serviceaccount.yaml を 1 回だけ実行する必要があります。 現在の名前空間に属するポッドまたはジョブのみをスケジュールする場合は、次の 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 API 操作を呼び出す必要があります。

[コードの表示]

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 エージェントをインストールする

次のサンプルコードは、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: registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-amd64
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 500m
          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

次の表は、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 コンソールの [名前空間] ページで確認できます。7

${SCHEDULERX_GROUPID}

GROUPID は、アプリケーション ID を指定します。 アプリケーション ID は、SchedulerX コンソールの [アプリケーション管理] ページで確認できます。

${SCHEDULERX_APPKEY}

APPKEY は、アプリケーションキーを指定します。 アプリケーションキーは、SchedulerX コンソールの [アプリケーション管理] ページで確認できます。

Deployment をデプロイした後、SchedulerX コンソールの [アプリケーション管理] ページでインスタンスが使用可能かどうかを確認できます。 インスタンスが使用可能な場合、SchedulerX エージェントは Kubernetes クラスターに接続されています。

方法 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. SchedulerX コンソールでアプリケーションのアクセス パラメーター を取得します。

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

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

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

    4. [アプリケーション管理] ページで、アクセス構成[操作] 列の アクセス構成k8s をクリックします。 パネルの左上隅にあるドロップダウンリストから、 を選択します。

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

    説明
    • コマンド内のアクセス パラメーター を、スケジュールするアプリケーションのアクセス パラメーター に置き換えます。

    • デフォルトでは、アクセス構成のイメージアドレスは、インターネット上の 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

    次の図は、インストールプロセスを示しています。

    1

    次の表は、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 コンソールの [名前空間] ページで確認できます。7

    ${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 とオンラインビジネスは同じプロセスを共有します。 次の図は、ワークフローを示しています。66

前提条件

アプリケーションを 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] を選択し、[リソース] ドロップダウンリストから [Shell-Script] を選択し、[busybox] デフォルトイメージを使用するか、カスタムイメージを指定します。

ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスターで schedulerx-shell-{JobId} という名前のポッドが起動されていることを確認できます。7

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

Python スクリプトの実行

ポッドモードで Python スクリプトを実行する場合は、次の操作を実行して Kubernetes ジョブを作成します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Python-Script] を選択し、python デフォルトイメージを使用するか、カスタムイメージを指定します。

ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスターで schedulerx-python-{JobId} という名前のポッドが起動されていることを確認できます。7

SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。8

PHP スクリプトの実行

ポッドモードで PHP スクリプトを実行する場合は、次の操作を実行して Kubernetes ジョブを作成します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Php-Script] を選択し、php:7.4-cli デフォルトイメージを使用するか、カスタムイメージを指定します。a3

ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスターで schedulerx-php-{JobId} という名前のポッドが起動されていることを確認できます。12

SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。8

Node.js スクリプトの実行

ポッドモードで Node.js スクリプトを実行する場合は、次の操作を実行して Kubernetes ジョブを作成します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Nodejs-Script] を選択し、node:16 デフォルトイメージを使用するか、カスタムイメージを指定します。a4

ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスターで schedulerx-node-{JobId} という名前のポッドが起動されていることを確認できます。8

SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。8

Job-YAML

SchedulerX を使用してネイティブの Kubernetes ジョブを実行できます。 Kubernetes ジョブを作成するには、次の操作を実行します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Job-YAML] を選択します。a5

ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスターでジョブとポッドが起動されていることを確認できます。8

SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。8

CronJob-YAML

SchedulerX を使用してネイティブの Kubernetes cron ジョブを実行できます。 Kubernetes ジョブを作成するには、次の操作を実行します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [CronJob-YAML] を選択します。

image.png

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

image.png

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

image.png

Pod-YAML

SchedulerX を使用してネイティブの Kubernetes ポッドを実行できます。 Kubernetes ジョブを作成するには、次の操作を実行します。 [タスク管理] ページの [タスクの作成] パネルで、[タスクの種類] ドロップダウンリストから [K8s] を選択し、[リソース] ドロップダウンリストから [Pod-YAML] を選択します。a6

ジョブを作成した後、[1 回実行] をクリックします。 Kubernetes クラスターでポッドが起動されていることを確認できます。9

SchedulerX コンソールの [タスク管理] ページで、ジョブの履歴実行レコードとポッドの操作ログを表示できます。9

説明

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

  • Web アプリケーションのポッドなど、実行サイクルの長いポッドは使用しないことをお勧めします。 ポッドが起動されると、ポッドの実行は終了しません。

  • ポッドの再起動を無効にすることをお勧めします。 そうしないと、ポッドが繰り返し再起動されます。