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

Prasyarat
-
Anda telah membuat kluster Kubernetes (kluster Container Service for Kubernetes (ACK) atau kluster Kubernetes yang dikelola sendiri). Untuk informasi selengkapnya, lihat Buat kluster Kubernetes.
-
Anda telah mengaktifkan Task Scheduling.
-
Anda telah membuat aplikasi Kubernetes di konsol MSE SchedulerX. Untuk informasi selengkapnya, lihat Buat aplikasi.
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.
Jika Anda perlu menjadwalkan tugas lintas namespace, gunakan ClusterRole dan ClusterRoleBinding.
Langkah 2: Instal schedulerx-agent.yaml
Berikut adalah konfigurasi file schedulerx-agent.yaml.
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
-
Anda telah membuat kluster Kubernetes (kluster Container Service for Kubernetes (ACK) atau kluster Kubernetes yang dikelola sendiri). Untuk informasi selengkapnya, lihat Buat kluster Kubernetes.
-
Anda telah mengaktifkan Task Scheduling.
-
Anda telah membuat aplikasi bertipe Kubernetes application di konsol MSE SchedulerX. Untuk informasi selengkapnya, lihat Buat aplikasi.
-
Anda telah menginstal Helm.
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
-
Dapatkan parameter akses aplikasi dari Task Scheduling.
-
Login ke konsol MSE SchedulerX.
-
Pada bilah navigasi atas, pilih wilayah.
-
(Langkah ini telah digabungkan ke langkah berikutnya.)
-
Pada halaman Application Management, klik Access configuration di kolom Actions. Di pojok kiri atas halaman Access configuration, pilih k8s.
-
-
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-amd64Output berikut ditampilkan setelah instalasi:
NAME: schedulerxchart LAST DEPLOYED: xxx NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: NoneVariabel 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.
Prasyarat
-
Buat kluster Kubernetes (kluster Container Service for Kubernetes (ACK) atau kluster Kubernetes yang dikelola sendiri). Untuk informasi selengkapnya, lihat Buat kluster Kubernetes.
-
Anda telah mengaktifkan Task Scheduling.
-
Di konsol MSE SchedulerX, buat aplikasi bertipe Kubernetes application. Untuk informasi selengkapnya, lihat Buat aplikasi.
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.
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.
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.