Todos los productos
Search
Centro de documentos

SchedulerX:Desplegar SchedulerX en un clúster de Kubernetes

Última actualización: Sep 17, 2026

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:

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

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:

Show code

# The following workflow executes a diamond workflow
#
#   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 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.16

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.

p452558.png

Requisitos previos

1

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:

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

Si necesita programar trabajos entre distintos namespaces, debe llamar a las API ClusterRole y 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

Paso 2: Instalar el agente de SchedulerX

El siguiente código de ejemplo muestra las configuraciones de schedulerx-agent.yaml:

Show code

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: registry.cn-hangzhou.aliyuncs.com/schedulerx/agent:latest-amd64
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 500m
          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

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

${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.1

${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.1

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

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

  1. Obtenga los parámetros de acceso de la aplicación en la consola de SchedulerX.

    1. Inicie sesión en la consola de SchedulerX.

    2. Inicie sesión en la consola de EDAS.

    3. En la barra de navegación superior, seleccione una región.

    4. En el panel de navegación izquierdo, haga clic en Application Management.

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

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

  2. Ejecute los siguientes comandos de instalación:

    Nota
    • Reemplace 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-amd64

    La siguiente figura muestra el proceso de instalación.

    1

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

    ${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.1

    ${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.1

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

Requisitos previos

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:

Nota

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

image.png

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

image.png

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.

image.png

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

Después de crear el trabajo, haga clic en Run once. Verá que el pod se inició en el clúster de Kubernetes.9

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

Nota

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.