SchedulerX permite programar ejecuciones periódicas de programas, ejecutar scripts en distintos lenguajes de programación y llamar operaciones HTTP. También es compatible con la programación de trabajos y pods nativos de Kubernetes. En este tema se describe cómo desplegar SchedulerX en un clúster de Kubernetes.
Escenarios
Cuando se utiliza SchedulerX para programar un trabajo de Kubernetes, se obtienen las siguientes ventajas:
Edición de scripts en línea en modo pod
En la mayoría de los casos, los trabajos de Kubernetes se ejecutan mediante scripts en escenarios de procesamiento de datos y de operación y mantenimiento. Si no se usa SchedulerX para programar un trabajo de Kubernetes, es necesario empaquetar el script del trabajo en una imagen y configurar los comandos del script en un archivo YAML. Para modificar el script, hay que compilar una nueva imagen y volver a publicarla. Código de ejemplo:
Si se programa el trabajo de Kubernetes con SchedulerX, no hace falta compilar una nueva imagen ni configurar comandos de script en un archivo YAML. Solo se deben editar los scripts en la consola de SchedulerX. Se admiten scripts en los siguientes lenguajes de programación: Shell, Python, PHP y Node.js. Después, SchedulerX ejecuta automáticamente los scripts en modo pod. Para modificar un script, basta con editarlo de nuevo en la consola de SchedulerX. Los cambios surten efecto automáticamente la próxima vez que se programe el trabajo de Kubernetes. Esto mejora la eficiencia en el desarrollo de trabajos de Kubernetes. Además, al programar un trabajo de Kubernetes con SchedulerX, las operaciones sobre los contenedores resultan imperceptibles. Así, los usuarios que no dominan los conceptos subyacentes de los contenedores pueden programar trabajos de Kubernetes con facilidad.
Orquestación visual de trabajos
Argo Workflows es una solución muy utilizada para orquestar flujos de trabajo de tareas en Kubernetes. Código de ejemplo:
SchedulerX ofrece una interfaz gráfica donde se pueden orquestar trabajos de Kubernetes mediante operaciones de arrastrar y soltar. En comparación con Argo Workflows, la solución principal para la orquestación de flujos de trabajo basada en código, SchedulerX resulta mucho más práctico. Mientras los trabajos se están ejecutando, SchedulerX muestra grafos acíclicos dirigidos (DAG) que visualizan los flujos de trabajo. Esto ayuda a solucionar problemas de trabajos bloqueados y mejora la eficiencia de operación y mantenimiento.
Monitoreo y alertas
Al usar SchedulerX para programar un pod o un trabajo, queda disponible su función de monitoreo y alertas.
Método de alerta: SchedulerX envía notificaciones de alerta mediante mensajes de texto, llamadas telefónicas, correos electrónicos y URL de Webhook de chatbots de DingTalk, bots de WeCom y bots de Lark.
Política de alertas: SchedulerX activa alertas cuando falla la ejecución de un trabajo o cuando esta supera el tiempo de espera.
Recopilación de registros
Cuando se programa un pod o un trabajo con SchedulerX, este recopila automáticamente los registros operativos correspondientes. Si un pod no se ejecuta correctamente, puede solucionar el problema con base en los registros disponibles en la consola de SchedulerX.
Panel de monitoreo
En la página Overview de la consola de SchedulerX, puede consultar sus trabajos en tiempo real.
Despliegue mixto de trabajos en línea y sin conexión
SchedulerX permite desplegar y programar de forma mixta trabajos periódicos en línea y sin conexión de los tipos Java y Kubernetes. Una aplicación empresarial puede involucrar varios trabajos periódicos. Si estos se programan con frecuencia, podrían desplegarse en el mismo proceso que la aplicación empresarial, lo cual consume recursos de CPU y memoria. En ese caso, los trabajos periódicos no quedan aislados del negocio en línea. Si un trabajo periódico consume muchos recursos y se programa con poca frecuencia, por ejemplo, una vez por hora o una vez al día, conviene crear un pod para ejecutarlo. De este modo, el trabajo se ejecuta en un proceso distinto al del negocio en línea.
Método 1: Desplegar SchedulerX mediante un Deployment
Para aplicaciones que no son de Java, puede desplegar schedulerx-agent.yaml mediante un Deployment. Así, SchedulerX utiliza pods independientes para iniciar las aplicaciones. La siguiente figura muestra el flujo de trabajo.

Requisitos previos
Se creó un clúster de Container Service for Kubernetes (ACK) o un clúster de Kubernetes autogestionado. Para obtener más información, consulte Create an ACK managed cluster.
SchedulerX está activado.
Se creó una aplicación de Kubernetes en la consola de SchedulerX. Para obtener más información, consulte Create an application.

Paso 1: Configurar una cuenta de servicio
Una cuenta de servicio proporciona una identidad para la validación y autorización cuando se programa un trabajo de Kubernetes mediante SchedulerX. De forma predeterminada, se utiliza la cuenta de servicio del namespace al que pertenece el trabajo de Kubernetes.
Solo necesita ejecutar schedulerx-serviceaccount.yaml una vez en el namespace requerido del clúster de Kubernetes. Si desea programar únicamente pods o trabajos que pertenezcan al namespace actual, ejecute el siguiente código YAML:
Si necesita programar trabajos entre distintos namespaces, debe llamar a las API ClusterRole y ClusterRoleBinding.
Paso 2: Instalar el agente de SchedulerX
El siguiente código de ejemplo muestra las configuraciones de schedulerx-agent.yaml:
La siguiente tabla describe los valores válidos de image.
Arquitectura del chip | Región | Descripción |
X86_64 | Regiones y zonas en China | registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-amd64 |
Regiones y zonas fuera de China | schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx/agent:latest-amd64 | |
ARM64 | Regiones y zonas en China | registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-arm64 |
Regiones y zonas fuera de China | schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx/agent:latest-arm64 |
La siguiente tabla describe las variables contenidas en env.
|
Variable |
Descripción |
|
${SCHEDULERX_ENDPOINT} |
ENDPOINT especifica el endpoint que coincide con la región donde se despliega la aplicación. Ejemplo: addr-sh-internal.edas.aliyun.com. Para obtener más información, consulte Endpoints. |
|
${SCHEDULERX_NAMESPACE} |
NAMESPACE especifica el ID del namespace al que pertenece la aplicación. Puede consultar el ID del namespace en la página Namespace de la consola de SchedulerX. |
|
${SCHEDULERX_GROUPID} |
GROUPID especifica el ID de la aplicación. Puede consultar el ID de la aplicación en la página Application Management de la consola de SchedulerX. |
|
${SCHEDULERX_APPKEY} |
APPKEY especifica la clave de la aplicación. Puede consultar la clave de la aplicación en la página Application Management de la consola de SchedulerX. |
Después de desplegar el Deployment, compruebe si hay una instancia disponible en la página Application Management de la consola de SchedulerX. Si aparece una instancia disponible, significa que el agente de SchedulerX se conectó al clúster de Kubernetes.
Método 2: (Recomendado) Desplegar SchedulerX mediante un paquete Helm de SchedulerX
Requisitos previos
Se creó un clúster de ACK o un clúster de Kubernetes autogestionado. Para obtener más información, consulte Create an ACK managed cluster.
SchedulerX está activado.
Se creó una aplicación de Kubernetes en la consola de SchedulerX. Para obtener más información, consulte Create an application.
Se instaló la herramienta de gestión de paquetes Helm.
Paso 1: Descargar el paquete Helm de SchedulerX
Ejecute el siguiente comando para descargar el paquete Helm de SchedulerX:
wget https://schedulerx2.oss-cn-hangzhou.aliyuncs.com/helm/schedulerxchart-2.0.0.tgz
Paso 2: Instalar el paquete Helm de SchedulerX
-
Obtenga los parámetros de acceso de la aplicación en la consola de SchedulerX.
Inicie sesión en la consola de SchedulerX.
Inicie sesión en la consola de EDAS.
En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, haga clic en Application Management.
En el panel de navegación izquierdo, haga clic en Task Scheduling (SchedulerX). En el árbol de navegación que aparece, haga clic en Applications.
En la página Applications, haga clic en Access configuration dentro de la columna Actions. En la esquina superior izquierda del panel Access configuration, seleccione k8s en la lista desplegable.
-
Ejecute los siguientes comandos de instalación:
NotaReemplace los parámetros de acceso de los comandos por los parámetros de acceso de la aplicación que desea programar.
De forma predeterminada, la dirección de imagen en la configuración de acceso corresponde a la imagen de arquitectura AMD para Internet. Especifique una dirección de imagen según la región y la arquitectura de su máquina.
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-amd64La siguiente figura muestra el proceso de instalación.

La siguiente tabla describe los valores válidos de image.
Arquitectura del chip
Región
Descripción
x86_64
Regiones y zonas en China
registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-amd64
Regiones y zonas fuera de China
schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx/agent:latest-amd64
arm64
Regiones y zonas en China
registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-arm64
Regiones y zonas fuera de China
schedulerx-registry.ap-southeast-1.cr.aliyuncs.com/schedulerx/agent:latest-arm64
La siguiente tabla describe las variables contenidas en env.
Variable
Descripción
${SCHEDULERX_ENDPOINT}
ENDPOINT especifica el endpoint que coincide con la región donde se despliega la aplicación. Ejemplo: addr-sh-internal.edas.aliyun.com. Para obtener más información, consulte Endpoints.
${SCHEDULERX_NAMESPACE}
NAMESPACE especifica el ID del namespace al que pertenece la aplicación. Puede consultar el ID del namespace en la página Namespace de la consola de SchedulerX.

${SCHEDULERX_GROUPID}
GROUPID especifica el ID de la aplicación. Puede consultar el ID de la aplicación en la página Application Management de la consola de SchedulerX.

${SCHEDULERX_APPKEY}
APPKEY especifica la clave de la aplicación. Puede consultar la clave de la aplicación en la página Application Management de la consola de SchedulerX.

SCHEDULERX_AGENT_IMAGE
La URL de la imagen.
Una vez instalado el paquete, puede consultar la instancia en la consola de SchedulerX.
Método 3: Desplegar SchedulerX mediante el SDK de SchedulerX para Java
En las aplicaciones Java, es posible que necesite programar tanto trabajos de Kubernetes como programas Java. En este caso, puede desplegar SchedulerX mediante el SDK de SchedulerX para Java. SchedulerX y su negocio en línea comparten el mismo proceso. La siguiente figura muestra el flujo de trabajo.
Requisitos previos
Se creó un clúster de ACK o un clúster de Kubernetes autogestionado. Para obtener más información, consulte Create an ACK managed cluster.
Se creó una aplicación de Kubernetes en la consola de SchedulerX. Para obtener más información, consulte Create an application.
Conectar la aplicación a SchedulerX
Utilice el SDK de SchedulerX para Java a fin de conectar su aplicación a SchedulerX. Para obtener más información, consulte Connect a Spring Boot application to SchedulerX.
Agregue la dependencia schedulerx2-plugin-kubernetes para habilitar la programación de trabajos de Kubernetes. Código de ejemplo:
Reemplace schedulerx2.version por la versión más reciente del agente de SchedulerX. Para obtener más información, consulte Agent release notes.
<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>
Crear un trabajo de Kubernetes
Antes de ejecutar cualquiera de los siguientes scripts, cree un trabajo de Kubernetes en el panel Create task de la página Task Management. Para obtener más información, consulte Job management.
Ejecutar un script de Shell
Si desea ejecutar un script de Shell en modo pod, siga estos pasos para crear un trabajo de Kubernetes: en el panel Create task de la página Task Management, seleccione K8s en la lista desplegable Task type, elija Shell-Script en la lista desplegable resource y utilice la imagen predeterminada busybox o especifique una imagen personalizada.
Después de crear el trabajo, haga clic en Run once. Verá que el pod llamado schedulerx-shell-{JobId} se inició en el clúster de Kubernetes.
En la página Task Management de la consola de SchedulerX, puede consultar el historial de ejecuciones del trabajo y los registros operativos del pod.
Ejecutar un script de Python
Si desea ejecutar un script de Python en modo pod, siga estos pasos para crear un trabajo de Kubernetes: en el panel Create task de la página Task Management, seleccione K8s en la lista desplegable Task type, elija Python-Script en la lista desplegable resource y utilice la imagen predeterminada de Python o especifique una imagen personalizada.
Después de crear el trabajo, haga clic en Run once. Verá que el pod llamado schedulerx-python-{JobId} se inició en el clúster de Kubernetes.
En la página Task Management de la consola de SchedulerX, puede consultar el historial de ejecuciones del trabajo y los registros operativos del pod.
Ejecutar un script de PHP
Si desea ejecutar un script de PHP en modo pod, siga estos pasos para crear un trabajo de Kubernetes: en el panel Create task de la página Task Management, seleccione K8s en la lista desplegable Task type, elija PHP-Script en la lista desplegable resource y utilice la imagen predeterminada php:7.4-cli o especifique una imagen personalizada.
Después de crear el trabajo, haga clic en Run once. Verá que el pod llamado schedulerx-php-{JobId} se inició en el clúster de Kubernetes.
En la página Task Management de la consola de SchedulerX, puede consultar el historial de ejecuciones del trabajo y los registros operativos del pod.
Ejecutar un script de Node.js
Si desea ejecutar un script de Node.js en modo pod, siga estos pasos para crear un trabajo de Kubernetes: en el panel Create task de la página Task Management, seleccione K8s en la lista desplegable Task type, elija Nodejs-Script en la lista desplegable resource y utilice la imagen predeterminada node:16 o especifique una imagen personalizada.
Después de crear el trabajo, haga clic en Run once. Verá que el pod llamado schedulerx-node-{JobId} se inició en el clúster de Kubernetes.
En la página Task Management de la consola de SchedulerX, puede consultar el historial de ejecuciones del trabajo y los registros operativos del pod.
Job-YAML
Puede ejecutar un trabajo nativo de Kubernetes mediante SchedulerX. Para crear un trabajo de Kubernetes, siga estos pasos: en el panel Create task de la página Task Management, seleccione K8s en la lista desplegable Task type y elija Job-YAML en la lista desplegable resource.
Después de crear el trabajo, haga clic en Run once. Verá que el trabajo y el pod se iniciaron en el clúster de Kubernetes.
En la página Task Management de la consola de SchedulerX, puede consultar el historial de ejecuciones del trabajo y los registros operativos del pod.
CronJob-YAML
Puede ejecutar un trabajo cron nativo de Kubernetes mediante SchedulerX. Para crear un trabajo de Kubernetes, siga estos pasos: en el panel Create task de la página Task Management, seleccione K8s en la lista desplegable Task type y elija CronJob-YAML en la lista desplegable resource.

Después de crear el trabajo, haga clic en Run once. En la página Task instance records, verá que el pod se inició.

En la página Task Management de la consola de SchedulerX, también puede consultar el historial de ejecución del pod y ver sus registros operativos.

Pod-YAML
Puede ejecutar un pod nativo de Kubernetes mediante SchedulerX. Para crear un trabajo de Kubernetes, siga estos pasos: en el panel Create task de la página Task Management, seleccione K8s en la lista desplegable Task type y elija Pod-YAML en la lista desplegable resource.
Después de crear el trabajo, haga clic en Run once. Verá que el pod se inició en el clúster de Kubernetes.
En la página Task Management de la consola de SchedulerX, puede consultar el historial de ejecuciones del trabajo y los registros operativos del pod.
Cuando ejecute pods de Kubernetes con SchedulerX, tenga en cuenta lo siguiente:
Se recomienda no utilizar un pod con un ciclo de ejecución prolongado, como el de una aplicación web. Una vez iniciado, la ejecución de dicho pod nunca termina.
Se recomienda deshabilitar el reinicio del pod. De lo contrario, se reiniciará de forma repetida.