All Products
Search
Document Center

Microservices Engine:Terapkan SchedulerX di kluster Kubernetes

Last Updated:Jun 13, 2026

SchedulerX mendukung tugas terjadwal, skrip multi-bahasa, dan API HTTP. SchedulerX juga mendukung penjadwalan job dan Pod Kubernetes native. Topik ini menjelaskan cara menerapkan SchedulerX di lingkungan Kubernetes.

Kasus penggunaan

Menggunakan SchedulerX untuk menjadwalkan job Kubernetes memberikan manfaat berikut.

Edit Pod skrip secara online

Job Kubernetes sering digunakan dalam skenario pemrosesan data dan O&M, dan biasanya diimplementasikan sebagai skrip. Pendekatan native mengharuskan Anda memaketkan skrip ke dalam image dan mengonfigurasi perintah skrip dalam file YAML. Untuk memodifikasi skrip, Anda harus membangun ulang dan menerapkan kembali image tersebut. Berikut contohnya:

Show code

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 menghilangkan kebutuhan untuk membangun image atau menulis file YAML, sehingga meningkatkan efisiensi pengembangan. Anda dapat mengedit skrip (Shell, Python, PHP, atau Node.js) langsung di konsol MSE SchedulerX, dan SchedulerX akan menjalankannya secara otomatis sebagai Pod. Perubahan pada skrip akan berlaku pada eksekusi terjadwal berikutnya. Selain itu, tugas K8s memungkinkan Anda memanfaatkan teknologi kontainer tanpa perlu memahami detail implementasinya.

Orkestrasi alur kerja visual

Argo umumnya digunakan untuk orkestrasi alur kerja di Kubernetes, seperti yang ditunjukkan pada contoh berikut.

Show code

# Alur kerja berikut mengeksekusi alur kerja berbentuk berlian
#
#   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 memungkinkan Anda mengatur tugas K8s melalui antarmuka visual drag-and-drop, yang lebih nyaman dibandingkan solusi berbasis kode konvensional. Graf alur kerja visual juga membantu Anda dengan cepat mengidentifikasi bottleneck saat runtime dan meningkatkan efisiensi O&M.

Peringatan dan pemantauan

Saat menjadwalkan Pod atau job dengan SchedulerX, Anda dapat memanfaatkan fitur pemantauan dan peringatan bawaannya.

  • Saluran peringatan yang didukung: SMS, panggilan telepon, email, dan webhook (DingTalk, WeCom, dan Lark).

  • Kebijakan peringatan yang didukung: peringatan kegagalan dan peringatan timeout eksekusi.

Layanan log

SchedulerX secara otomatis mengumpulkan log untuk Pod dan job yang dijadwalkannya, sehingga tidak diperlukan layanan log terpisah. Jika Pod gagal dijalankan, Anda dapat melakukan troubleshooting langsung di konsol MSE SchedulerX.

Dasbor pemantauan

Dasbor pemantauan bawaan di SchedulerX menyediakan pemantauan waktu nyata untuk tugas Anda.

Penerapan hibrida tugas offline dan online

SchedulerX mendukung penerapan dan penjadwalan hibrida untuk tugas terjadwal offline dan online, baik untuk jenis tugas Java maupun K8s. Aplikasi bisnis biasanya mencakup beberapa tugas terjadwal. Jika suatu tugas terjadwal dijalankan secara sering, Anda dapat menjalankannya dalam proses yang sama dengan aplikasi bisnis. Namun, menjalankan tugas dalam proses yang sama akan mengonsumsi CPU dan memori aplikasi online serta mencegah isolasi dari beban kerja online. Oleh karena itu, ketika tugas terjadwal bersifat intensif sumber daya tetapi dijalankan tidak terlalu sering (misalnya, sekali per jam atau sekali per hari), Anda dapat menambahkan Pod terpisah untuk menjalankan tugas tersebut. Hal ini memastikan tugas berjalan dalam proses yang berbeda dari aplikasi online aslinya.

Metode 1: Terapkan menggunakan Deployment

Untuk aplikasi non-Java, Anda dapat menerapkan file schedulerx-agent.yaml menggunakan Deployment. Agen berjalan sebagai Pod mandiri. Alur kerja dan arsitekturnya ditunjukkan pada gambar berikut.

p452558.png

Prasyarat

Pada kotak dialog Create Application, atur Application Type ke Kubernetes application dan atur Version ke Professional Edition.

Langkah 1: Konfigurasikan akun layanan

Tugas K8s SchedulerX memerlukan akun layanan untuk otentikasi dan otorisasi. Secara default, tugas dijalankan di bawah akun layanan schedulerx dalam namespace target.

Di kluster Kubernetes Anda, Anda perlu menerapkan konfigurasi schedulerx-serviceaccount.yaml untuk setiap namespace tempat Anda ingin menjadwalkan Pod atau job. Contoh YAML berikut berisi role dan binding yang diperlukan.

Show code

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

Jika Anda perlu menjadwalkan tugas lintas namespace, gunakan ClusterRole dan ClusterRoleBinding.

Show code

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

Langkah 2: Instal schedulerx-agent.yaml

Berikut adalah konfigurasi file schedulerx-agent.yaml.

Show schedulerx-agent.yaml configuration

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

Variabel image agen SchedulerX

Arsitektur

Wilayah

Deskripsi

X86_64

Tiongkok daratan

schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-amd64

Di luar Tiongkok daratan

schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx2/agent:latest-amd64

ARM64

Tiongkok daratan

schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-arm64

Di luar Tiongkok daratan

schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx2/agent:latest-arm64

Variabel env agen SchedulerX

Parameter

Deskripsi

${SCHEDULERX_ENDPOINT}

Wilayah dan endpoint yang sesuai tempat aplikasi Anda diterapkan. Contoh: addr-sh-internal.edas.aliyun.com. Untuk informasi selengkapnya, lihat Daftar endpoint.

${SCHEDULERX_NAMESPACE}

ID namespace. Anda dapat memperolehnya di halaman Namespaces di konsol MSE SchedulerX.

${SCHEDULERX_GROUPID}

GroupId (ID aplikasi). Anda dapat memperolehnya di halaman Application Management di konsol MSE SchedulerX.

${SCHEDULERX_APPKEY}

AppKey (kunci aplikasi). Anda dapat memperolehnya di halaman Application Management di konsol MSE SchedulerX.

Setelah deployment selesai, Anda dapat melihat instans di halaman Application Management di konsol MSE SchedulerX. Keberadaan instans tersebut menunjukkan bahwa agen telah terhubung dengan sukses.

Metode 2: Terapkan SchedulerX menggunakan Helm chart

Prasyarat

Langkah 1: Unduh Helm chart SchedulerX

Jalankan perintah berikut untuk mengunduh Helm chart SchedulerX:

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

Langkah 2: Instal Helm chart SchedulerX

  1. Dapatkan parameter akses aplikasi dari Task Scheduling.

    1. Login ke konsol MSE SchedulerX.

    2. (Langkah lama ini dapat diabaikan.)

    3. Pada bilah navigasi atas, pilih wilayah.

    4. (Langkah ini telah digabungkan ke langkah berikutnya.)

    5. Pada halaman Application Management, klik Access configuration di kolom Actions. Di pojok kiri atas halaman Access configuration, pilih k8s.

  2. Jalankan perintah instalasi berikut.

    Catatan
    • Ganti parameter akses dalam perintah instalasi dengan parameter aplikasi target Anda.

    • Alamat image dalam konfigurasi akses adalah image publik X86_64 secara default. Pilih alamat image yang sesuai dengan wilayah dan arsitektur node kluster Anda.

    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

    Output berikut ditampilkan setelah instalasi:

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

    Variabel image agen SchedulerX

    Arsitektur

    Wilayah

    Deskripsi

    X86_64

    Tiongkok daratan

    schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-amd64

    Di luar Tiongkok daratan

    schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx2/agent:latest-amd64

    ARM64

    Tiongkok daratan

    schedulerx-registry.cn-hangzhou.cr.aliyuncs.com/schedulerx2/agent:latest-arm64

    Di luar Tiongkok daratan

    schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx2/agent:latest-arm64

    Variabel env agen SchedulerX

    Parameter

    Deskripsi

    ${SCHEDULERX_ENDPOINT}

    Wilayah dan endpoint yang sesuai tempat aplikasi Anda diterapkan. Contoh: addr-sh-internal.edas.aliyun.com. Untuk informasi selengkapnya, lihat Daftar endpoint.

    ${SCHEDULERX_NAMESPACE}

    ID namespace. Anda dapat memperolehnya di halaman Namespaces di konsol MSE SchedulerX.

    ${SCHEDULERX_GROUPID}

    GroupId (ID aplikasi). Anda dapat memperolehnya di halaman Application Management di konsol MSE SchedulerX.

    ${SCHEDULERX_APPKEY}

    AppKey (kunci aplikasi). Anda dapat memperolehnya di halaman Application Management di konsol MSE SchedulerX.

    SCHEDULERX_AGENT_IMAGE

    Alamat image.

    Setelah instalasi selesai, Anda dapat melihat instans di konsol MSE SchedulerX.

Metode 3: Terapkan SchedulerX menggunakan Java SDK

Jika aplikasi Anda adalah aplikasi Java dan Anda perlu menjadwalkan program Java selain tugas K8s, gunakan Java SDK untuk deployment. SchedulerX berjalan dalam proses yang sama dengan aplikasi online Anda. Alur kerja dan arsitekturnya ditunjukkan pada gambar berikut.66

Prasyarat

Koneksi ke SchedulerX

Untuk informasi tentang integrasi SDK, lihat Hubungkan aplikasi Spring Boot ke SchedulerX.

Untuk menggunakan tugas K8s, Anda juga harus menambahkan dependensi schedulerx-plugin-kubernetes, seperti yang ditunjukkan pada contoh berikut.

Catatan

Gunakan versi client terbaru untuk schedulerx2.version. Untuk informasi selengkapnya, lihat Catatan rilis.

<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>

Langkah berikutnya: Buat tugas K8s

Untuk menjalankan skrip berikut, buat tugas K8s di halaman Task Management. Untuk informasi selengkapnya, lihat Manajemen tugas.

Skrip Shell

Jika Anda ingin menjalankan skrip Shell di dalam Pod, buat tugas K8s di halaman Task Management. Atur Resource Type ke Shell-Script dan gunakan image busybox default atau tentukan custom image. Di editor skrip, Anda dapat langsung menulis perintah Shell, seperti echo "Hello, World!".

Klik run once. Sebuah Pod bernama schedulerx-shell-{JobId} akan dimulai di kluster Kubernetes.

# 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!

Di halaman Task Management di konsol MSE SchedulerX, Anda dapat mengkueri catatan historis dan melihat log Pod yang sedang berjalan.

Skrip Python

Jika Anda ingin menjalankan skrip Python di dalam Pod, buat tugas K8s di halaman Task Management. Atur Resource Type ke Python-Script dan gunakan image Python default atau tentukan custom image. Anda dapat langsung menulis kode Python di editor skrip.

Klik run once. Sebuah Pod bernama schedulerx-python-{JobId} akan dimulai di kluster Kubernetes.

# 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!

Di halaman Task Management di konsol MSE SchedulerX, Anda dapat mengkueri catatan historis dan melihat log Pod yang sedang berjalan.

Skrip PHP

Jika Anda ingin menjalankan skrip PHP di dalam Pod, buat tugas K8s di halaman Task Management. Atur Resource Type ke PHP-Script dan gunakan image default php:7.4-cli atau tentukan custom image. Anda dapat langsung menulis kode PHP di editor skrip.

Klik run once. Sebuah Pod bernama schedulerx-php-{JobId} akan dimulai di kluster Kubernetes.

# 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!

Di halaman Task Management di konsol MSE SchedulerX, Anda dapat mengkueri catatan historis dan melihat log Pod yang sedang berjalan.

Skrip Node.js

Jika Anda ingin menjalankan skrip Node.js di dalam Pod, buat tugas K8s di halaman Task Management. Atur Resource Type ke Nodejs-Script dan gunakan image default node:16 atau tentukan custom image. Anda dapat langsung menulis kode Node.js di editor skrip.

Klik run once. Sebuah Pod bernama schedulerx-node-{JobId} akan dimulai di kluster Kubernetes.

# 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!

Di halaman Task Management di konsol MSE SchedulerX, Anda dapat mengkueri catatan historis dan melihat log Pod yang sedang berjalan.

Job-YAML

Anda juga dapat menggunakan SchedulerX untuk menjalankan job Kubernetes native. Buat tugas K8s di halaman Task Management dan atur Resource Type ke Job-YAML. Di editor, masukkan definisi YAML untuk job tersebut, seperti contoh tugas yang menghitung pi.

Klik run once. Job dan Pod-nya akan berhasil dimulai di kluster Kubernetes.

# 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...

Di halaman Task Management di konsol MSE SchedulerX, Anda dapat mengkueri catatan historis dan melihat log Pod yang sedang berjalan.

Cronjob-YAML

Anda juga dapat menggunakan SchedulerX untuk menjalankan cronjob Kubernetes native. Buat tugas K8s di halaman Task Management dan atur Resource Type ke CronJob-YAML.

Di editor, masukkan definisi YAML untuk cronjob tersebut, termasuk konfigurasi seperti schedule dan jobTemplate.

Klik run once. Di halaman Task instance records, Anda dapat melihat bahwa Pod berhasil dimulai.

Di halaman Task Management di konsol MSE SchedulerX, Anda dapat mengkueri catatan historis dan melihat log Pod yang sedang berjalan.

Pod-YAML

Anda juga dapat menggunakan SchedulerX untuk menjalankan Pod Kubernetes native. Buat tugas K8s di halaman Task Management dan atur Resource Type ke Pod-YAML. Di editor, masukkan definisi YAML untuk Pod tersebut, seperti contoh yang menggunakan image busybox untuk menghasilkan output hello world.

Klik run once. Pod tersebut akan berhasil dimulai di kluster Kubernetes.

# 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

Di halaman Task Management di konsol MSE SchedulerX, Anda dapat mengkueri catatan historis dan melihat log Pod yang sedang berjalan.

Catatan

Perhatikan hal berikut saat menjalankan Pod Kubernetes menggunakan SchedulerX:

  • Hindari Pod berjalan lama, seperti aplikasi web. Pod tersebut tidak akan pernah mencapai status completed.

  • Atur kebijakan restart ke Never.