SchedulerX支持定时调度程序、多语言脚本和HTTP接口,也支持调度原生的K8s Job或者Pod。本文介绍如何在Kubernetes环境中部署SchedulerX。
前提条件
接入SchedulerX,具体操作,请参见在Kubernetes集群中部署SchedulerX。
创建K8s任务
Shell脚本
如果想通过Pod运行Shell脚本,不需要自己构建镜像,只需要在任务管理创建一个K8s任务,资源类型选择Shell-Script,镜像默认是busybox(也可以替换为自己的镜像)。
![1](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9285617561/p463960.png)
单击运行一次,在Kubernetes集群中可以看到Pod启动,Pod名称为schedulerx-shell-{JobId}。![7](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459244.png)
![7](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459244.png)
在SchedulerX控制台任务管理页面可以查询历史执行记录,也可以看到Pod运行的日志。![7](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459252.png)
![7](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459252.png)
Python脚本
如果想通过Pod运行Python脚本,不需要自己构建镜像,只需要在任务管理创建一个K8s任务,资源类型选择Python-Script,镜像默认是Python(也可以替换为自己的镜像)。
![2](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9285617561/p463961.png)
单击运行一次,在Kubernetes集群中可以看到Pod启动,Pod名称为schedulerx-python-{JobId}。![7](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459260.png)
![7](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459260.png)
在SchedulerX控制台任务管理页面可以查询历史执行记录,也可以看到Pod运行的日志。![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459284.png)
![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459284.png)
PHP脚本
如果想通过Pod运行PHP脚本,不需要自己构建镜像,只需要在任务管理创建一个K8s任务,资源类型选择Php-Script,镜像默认是php:7.4-cli(也可以替换自己的镜像)。
![3](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9285617561/p463962.png)
单击运行一次,在Kubernetes集群中可以看到Pod启动,Pod名称为schedulerx-php-{JobId}。![12](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7555046561/p460568.png)
![12](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7555046561/p460568.png)
在SchedulerX控制台任务管理页面可以查询历史执行记录,也可以看到Pod运行的日志![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459296.png)
![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459296.png)
Node.js脚本
如果想通过Pod运行Node.js脚本,不需要自己构建镜像,只需要在任务管理创建一个K8s任务,资源类型选择Nodejs-Script,镜像默认是node:16(也可以替换自己的镜像)。
![4](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9285617561/p463963.png)
单击运行一次,在Kubernetes集群中可以看到Pod启动,Pod名称为schedulerx-node-{JobId}。![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459298.png)
![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459298.png)
在SchedulerX控制台任务管理页面可以查询历史执行记录,也可以看到Pod运行的日志。![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459308.png)
![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459308.png)
Job-YAML
通过SchedulerX也可以运行K8s原生的Job,任务类型选择K8s,资源类型选择Job-YAML。
![5](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9285617561/p463965.png)
单击运行一次,在Kubernetes集群中可以看到Job和Pod启动成功。![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459313.png)
![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459313.png)
在SchedulerX控制台任务管理页面可以查询历史执行记录,也可以看到Pod运行的日志。![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459328.png)
![8](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5929795561/p459328.png)
重要 通过SchedulerX运行K8s Job,不建议使用CronJob,定时调度需要使用SchedulerX来配置,否则无法收集每次Pod的执行历史和日志。
Pod-YAML
通过SchedulerX也可以运行K8s原生的Pod,任务类型选择K8s,资源类型选择Pod-YAML。
![6](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9285617561/p463966.png)
单击运行一次,在Kubernetes集群中可以看到Pod启动成功。![9](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459369.png)
![9](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8564926561/p459369.png)
在SchedulerX控制台任务管理页面可以查询历史执行记录,也可以看到Pod运行的日志。![9](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9353506561/p459386.png)
![9](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9353506561/p459386.png)
重要 通过SchedulerX运行K8s Pod,建议不要运行长周期的Pod(比如Web应用,一旦启动永远不会结束),重启策略需要设置成Never(否则Pod会不断重启)。
文档内容是否对您有帮助?