All Products
Search
Document Center

SchedulerX:Terapkan SchedulerX di kluster Kubernetes

Last Updated:Jan 17, 2026

SchedulerX mendukung tugas terjadwal, skrip multi-bahasa, dan antarmuka HTTP, serta penjadwalan native Kubernetes Jobs atau pod. Topik ini menjelaskan cara menerapkan SchedulerX di lingkungan Kubernetes.

Skenario

Menjadwalkan Kubernetes Jobs dengan SchedulerX menawarkan keunggulan berikut.

Edit pod skrip secara online

Kubernetes Jobs sering digunakan untuk pemrosesan data serta operasi dan maintenance (O&M), biasanya dalam bentuk 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 menerbitkan kembali image tersebut, seperti pada contoh berikut.

Expand to view the 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

Dengan SchedulerX, Anda tidak perlu membangun image atau menulis skrip YAML. Cukup edit skrip (Shell, Python, PHP, atau Node.js) langsung di konsol SchedulerX, lalu skrip tersebut akan otomatis berjalan sebagai pod. Perubahan skrip dapat dilakukan kapan saja melalui konsol dan akan berlaku pada eksekusi terjadwal berikutnya. Pendekatan ini meningkatkan efisiensi pengembangan Kubernetes Jobs dan mengurangi hambatan penggunaan teknologi kontainer karena Anda tidak perlu memahami detail teknis kontainer.

Orkestrasi tugas visual

Di Kubernetes, solusi utama untuk orkestrasi alur kerja adalah Argo, seperti pada contoh berikut.

Expand to view the 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 mendukung orkestrasi tugas Kubernetes melalui antarmuka visual berbasis drag-and-drop, yang lebih praktis dibandingkan solusi berbasis kode. Selain itu, selama eksekusi tugas, graf alur kerja visual membantu Anda mengidentifikasi bottleneck dengan cepat dan meningkatkan efisiensi O&M.

Pemantauan dan peringatan

Saat menggunakan SchedulerX untuk menjadwalkan pod atau Jobs, Anda dapat memanfaatkan fitur pemantauan dan peringatan yang tersedia.

  • Saluran peringatan yang didukung: pesan teks, panggilan telepon, email, dan Webhook (DingTalk, WeCom, atau Lark).

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

Layanan log

Saat menggunakan SchedulerX untuk menjadwalkan pod atau Jobs, SchedulerX secara otomatis mengumpulkan log pod sehingga Anda tidak perlu mengaktifkan layanan log tambahan. Jika pod gagal berjalan, Anda dapat melakukan troubleshooting langsung di konsol SchedulerX.16

Dasbor Pemantauan

Anda dapat memantau tugas secara real-time menggunakan dasbor pemantauan tugas bawaan di SchedulerX.

Penerapan hibrida tugas offline dan online

SchedulerX menyediakan penjadwalan hibrida untuk tugas terjadwal offline dan online, mendukung jenis tugas Java dan Kubernetes. Aplikasi bisnis biasanya mencakup beberapa tugas terjadwal. Jika suatu tugas berjalan dengan frekuensi tinggi, Anda dapat menjalankannya dalam proses yang sama dengan aplikasi bisnis. Namun, pendekatan ini mengonsumsi CPU dan memori aplikasi online serta tidak dapat diisolasi dari logika bisnis utama. Oleh karena itu, untuk tugas yang mengonsumsi sumber daya signifikan dan berjalan dengan frekuensi rendah—misalnya sekali per jam atau sekali per hari—disarankan menjalankannya dalam pod baru agar terisolasi dari aplikasi online asli.

Metode 1: Deploy SchedulerX menggunakan deployment (Direkomendasikan)

Jika Anda menggunakan jenis aplikasi non-Java, Anda dapat menerapkan file schedulerx-agent.yaml menggunakan deployment. SchedulerX akan menjalankan aplikasi dalam pod terpisah. Prosesnya ditunjukkan pada gambar berikut.

p452558.png

Prasyarat

1

Langkah 1: Konfigurasikan ServiceAccount

Tugas Kubernetes SchedulerX bergantung pada ServiceAccount untuk autentikasi dan otorisasi. Secara default, tugas Kubernetes berjalan menggunakan ServiceAccount SchedulerX di namespace tersebut.

Di kluster Kubernetes dan namespace yang sesuai, Anda hanya perlu menjalankan file schedulerx-serviceaccount.yaml satu kali. Untuk mengisolasi namespace dan hanya menjadwalkan pod atau Jobs dalam namespace target, jalankan kode YAML contoh berikut.

Expand to view the 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

Untuk penjadwalan lintas namespace, gunakan ClusterRole dan ClusterRoleBinding.

Expand to view the 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

Konfigurasi schedulerx-agent.yaml adalah sebagai berikut.

Expand to view the 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 chip

Wilayah

Deskripsi

X86_64

Tiongkok daratan

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

Wilayah 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

Wilayah luar Tiongkok daratan

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

Variabel env agen SchedulerX

Variabel

Deskripsi

${SCHEDULERX_ENDPOINT}

Wilayah tempat Anda menerapkan aplikasi dan Endpoint yang sesuai. Misalnya, addr-sh-internal.edas.aliyun.com. Untuk informasi selengkapnya, lihat Daftar Endpoint.

${SCHEDULERX_NAMESPACE}

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

${SCHEDULERX_GROUPID}

ID aplikasi. Anda dapat memperolehnya di halaman Application Management di konsol SchedulerX.

${SCHEDULERX_APPKEY}

Kunci aplikasi. Anda dapat memperolehnya di halaman Application Management di konsol SchedulerX.

Setelah deployment selesai, Anda dapat melihat instans di halaman Application Management di konsol SchedulerX untuk memastikan koneksi berhasil.

Metode 2: Deploy SchedulerX menggunakan paket Helm

Prasyarat

Langkah 1: Unduh paket Helm SchedulerX

Jalankan perintah berikut untuk mengunduh paket Helm SchedulerX.

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

Langkah 2: Instal paket Helm schedulerx

  1. Dapatkan parameter koneksi aplikasi dari konsol Platform Penjadwalan Tugas Terdistribusi.

    1. Masuk ke Platform Penjadwalan Tugas Terdistribusi.

    2. Di bilah navigasi atas, pilih wilayah.

    3. Di panel navigasi kiri, klik Application Management.

    4. Di halaman Application Management, temukan aplikasi lalu klik Connection Settings di kolom Actions. Di pojok kiri atas halaman Connection Settings, pilih Kubernetes.

  2. Jalankan perintah instalasi berikut.

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

    • Alamat registri default dalam pengaturan koneksi adalah untuk image amd64 di jaringan publik. Pilih alamat registri yang sesuai berdasarkan wilayah dan arsitektur mesin Anda.

    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

    Gambar berikut menunjukkan tangkapan layar proses instalasi.

    1

    Variabel image agen SchedulerX

    Chip architecture

    Wilayah

    Description

    x86_64

    Wilayah di Tiongkok

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

    Wilayah luar Tiongkok daratan

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

    arm64

    Wilayah di Tiongkok

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

    Wilayah luar Tiongkok daratan

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

    Variabel env agen SchedulerX

    Variabel

    Description

    ${SCHEDULERX_ENDPOINT}

    Wilayah tempat Anda menerapkan aplikasi dan Endpoint yang sesuai. Misalnya, addr-sh-internal.edas.aliyun.com. Untuk informasi selengkapnya, lihat Daftar Endpoint.

    ${SCHEDULERX_NAMESPACE}

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

    ${SCHEDULERX_GROUPID}

    ID aplikasi. Anda dapat memperolehnya di halaman Application Management di konsol SchedulerX.

    ${SCHEDULERX_APPKEY}

    Kunci aplikasi. Anda dapat memperolehnya di halaman Application Management di konsol SchedulerX.

    SCHEDULERX_AGENT_IMAGE

    Alamat registri.

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

Metode 3: Deploy SchedulerX menggunakan SDK Java

Jika aplikasi Anda adalah aplikasi Java dan Anda perlu menjadwalkan program Java selain tugas Kubernetes, Anda dapat menggunakan kit pengembangan perangkat lunak (SDK) Java untuk deployment. SchedulerX berjalan dalam proses yang sama dengan bisnis online Anda. Prosesnya ditunjukkan pada gambar berikut.66

Prasyarat

Koneksikan ke SchedulerX

Untuk informasi tentang cara menghubungkan menggunakan SDK, lihat Hubungkan aplikasi Spring Boot ke SchedulerX.

Untuk menggunakan tugas Kubernetes, Anda juga memerlukan dependensi schedulerx-plugin-kubernetes, seperti yang ditunjukkan di bawah ini.

Catatan

Untuk `schedulerx2.version`, gunakan versi client terbaru. 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 selanjutnya: Buat tugas Kubernetes

Untuk menjalankan skrip berikut, Anda perlu membuat tugas Kubernetes di halaman Task Management. Untuk informasi selengkapnya, lihat Manajemen tugas.

Skrip Shell

Jika Anda ingin menjalankan skrip Shell di pod, buat tugas Kubernetes di halaman Task Management. Atur Resource Type ke Shell-Script. Anda dapat menggunakan image default busybox atau menggantinya dengan image Anda sendiri.

Klik Run Once. Anda dapat melihat bahwa pod mulai berjalan di kluster Kubernetes. Nama pod-nya adalah schedulerx-shell-{JobId}.7

Di halaman Task Management di konsol SchedulerX, Anda dapat mengkueri riwayat eksekusi dan melihat log pod.

Skrip Python

Jika Anda ingin menjalankan skrip Python di pod, buat Kubernetes task di halaman Task Management. Atur Resource Type ke Python-Script. Anda dapat menggunakan image Python default atau menggantinya dengan image Anda sendiri.

Klik Run Once. Anda dapat melihat bahwa pod mulai berjalan di kluster Kubernetes. Nama pod-nya adalah schedulerx-python-{JobId}.7

Di halaman Task Management di konsol SchedulerX, Anda dapat mengkueri riwayat eksekusi dan melihat log pod.8

Skrip PHP

Jika Anda ingin menjalankan skrip PHP di pod, buat Kubernetes task di halaman Task Management. Atur Resource Type ke PHP-Script. Anda dapat menggunakan image default php:7.4-cli atau menggantinya dengan image Anda sendiri.a3

Klik Run Once. Anda dapat melihat bahwa pod mulai berjalan di kluster Kubernetes. Nama pod-nya adalah schedulerx-php-{JobId}.12

Di halaman Task Management di konsol SchedulerX, Anda dapat mengkueri riwayat eksekusi dan melihat log pod.8

Skrip Node.js

Jika Anda ingin menjalankan skrip Node.js di pod, buat Kubernetes task di halaman Task Management. Atur Resource Type ke Nodejs-Script. Anda dapat menggunakan image default node:16 atau menggantinya dengan image Anda sendiri.a4

Klik Run Once. Anda dapat melihat bahwa pod mulai berjalan di kluster Kubernetes. Nama pod-nya adalah schedulerx-node-{JobId}.8

Di halaman Task Management di konsol SchedulerX, Anda dapat mengkueri riwayat eksekusi dan melihat log pod.8

Job-YAML

Anda juga dapat menjalankan Kubernetes Jobs native menggunakan SchedulerX. Buat Kubernetes di halaman Task Management, lalu atur Resource Type ke Job-YAML.a5

Klik Run Once. Anda dapat melihat bahwa Job dan pod telah berhasil dimulai di kluster Kubernetes.8

Di halaman Task Management pada konsol SchedulerX, Anda dapat mengkueri riwayat eksekusi dan melihat log pod.8

CronJob-YAML

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

image.png

Klik Run Once. Di halaman Task Instance Records, Anda dapat melihat bahwa pod telah berhasil dimulai.

image.png

Di halaman Task Management di konsol SchedulerX, Anda dapat mengkueri riwayat eksekusi dan melihat log pod.

image.png

Pod-YAML

Anda juga dapat menjalankan pod Kubernetes native menggunakan SchedulerX. Buat Kubernetes di halaman Task Management dan atur Resource Type ke Pod-YAML.a6

Klik Run Once. Anda dapat melihat bahwa pod telah berhasil dimulai di kluster Kubernetes.9

Di halaman Task Management di konsol SchedulerX, Anda dapat mengkueri riwayat eksekusi dan melihat log pod.9

Catatan

Perhatikan hal berikut saat menjalankan pod Kubernetes menggunakan SchedulerX.

  • Hindari menjalankan pod dengan siklus hidup panjang, seperti aplikasi web yang tidak pernah berhenti setelah dimulai.

  • Atur kebijakan restart ke Never. Jika tidak, pod akan terus-menerus restart.