全部產品
Search
文件中心

SchedulerX:在Kubernetes叢集中部署SchedulerX

更新時間:Aug 21, 2026

SchedulerX支援定時發送器、多語言指令碼和HTTP介面,也支援調度原生的K8s Job或者Pod。本文介紹如何在Kubernetes環境中部署SchedulerX。

使用情境

使用SchedulerX調度K8s Job有如下優勢。

可線上編輯指令碼Pod

K8s Job常用於資料處理和營運情境,一般以指令碼實現居多。原生的使用方式需要將指令碼打包到鏡像裡,在YAML檔案中配置指令碼命令。如果要修改指令碼,需要重新構建鏡像和發布。如下所示。

展開查看代碼

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

而使用SchedulerX則無需構建鏡像和編寫YAML指令碼,只需在SchedulerX控制台直接編輯指令碼(Shell、Python、PHP或Node.js),即可自動以Pod方式運行指令碼。如果要修改指令碼,只需在SchedulerX控制台重新編輯指令碼,下次調度會自動生效,繼而提高K8s Job的開發效率。同時,使用SchedulerX的K8s任務時,您無需瞭解容器底層細節,可以低門檻使用容器技術。

可視化任務編排

K8s中主流解決方案是使用argo進行工作流程編排,如下所示。

展開查看代碼

# 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支援通過可視化介面拖拽進行K8s任務的編排,相較於當前主流的、通過代碼進行工作流程編排的解決方案更為便捷。此外,任務運行時,可視化的工作流程圖可以協助您快速排查任務卡點,提高營運效率。

警示監控

使用SchedulerX來調度Pod或者Job,可以複用SchedulerX的監控警示功能。

  • 支援的警示通道:簡訊、電話、郵件、Webhook(DingTalk/企業微信/飛書)。

  • 支援的警示策略:失敗警示、執行逾時警示。

Log Service

使用SchedulerX調度Pod或者Job時,無需額外開通Log Service,就可以自動採集Pod啟動並執行日誌。如果Pod運行失敗,您可以直接在SchedulerX控制台排查Pod執行失敗的原因。

Log Service頁面,左側為任務執行個體列表,可按狀態、應用 ID 等條件式篩選任務,任務類型為 Job-YAML,狀態包括成功失敗。右側為日誌查看面板,支援按搜尋欄位和時間範圍檢索日誌。失敗任務的關鍵日誌記錄包含以下錯誤資訊:

  • job processor exec fail.null

  • ExitCode: 255 Reason: Error

  • Argument to accuracy must be greater than zero at /usr/local/lib/perl5/5.34.0/bignum.pm line 215

監控大盤

您可以通過SchedulerX內建的任務監控大盤即時觀察您的任務。

離線線上混和部署

SchedulerX提供離線上定時任務混布調度功能,支援Java和K8s任務類型。一個業務應用通常包括多個定時任務。如果定時任務調度頻率較高,可以直接使其與業務應用處於同一進程中。但進程內調用會消耗線上應用自身的CPU和記憶體,無法與線上業務隔離。所以,當一個定時任務資源消耗大且調度頻率不高(例如每小時或每天運行一次)時,可以新增一個Pod運行該定時任務,使之與原來的線上應用處於不同進程中。

方式一:通過Deployment部署SchedulerX(推薦)

使用非Java應用類型時,可以通過Deployment部署一個schedulerx-agent.yaml。SchedulerX會以單獨的Pod啟動應用。流程和原理如下圖所示。

p452558.png

前提條件

建立應用時,版本選擇專業版,開啟Log Service。在執行個體繁忙配置中,將 load5 設為 0,記憶體使用量率設為 90%,磁碟使用率設為 95%,並開啟是否觸發繁忙機器開關。

步驟一:配置ServiceAccount

SchedulerX K8s任務依賴於ServiceAccount進行驗證與授權,且預設使用Namespace的SchedulerX ServiceAccount運行K8s任務。

在K8s叢集裡和對應的Namespace下,僅需運行一次schedulerx-serviceaccount.yaml。如果Namespace之間需要隔離,僅調度目標Namespace下的Pod或者Job,可運行如下YAML範例程式碼。

展開查看具體代碼

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

如果有跨Namespace調度的需求,需使用ClusterRole和ClusterRoleBinding。

展開查看具體代碼

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

步驟二:安裝schedulerx-agent.yaml

schedulerx-agent.yaml配置如下所示。

展開查看schedulerx-agent.yaml配置

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

SchedulerX agent image變數說明

晶片架構

地區

說明

X86_64

中國地區

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

中國境外

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

ARM64

中國地區

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

中國境外

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

SchedulerX agent env變數說明

變數

說明

${SCHEDULERX_ENDPOINT}

您部署應用的地區(Region)和對應的Endpoint,例如addr-sh-internal.edas.aliyun.com。更多資訊,請參見Endpoint列表

${SCHEDULERX_NAMESPACE}

Namespace為命名空間ID,可以在SchedulerX控制台的命名空间頁面擷取。在分布式任務調度平台控制台左側導覽列單擊命名空間,在命名空間列表的命名空間ID列擷取目標命名空間對應的 ID 值,用於替換配置中的 ${SCHEDULERX_NAMESPACE}

${SCHEDULERX_GROUPID}

GroupId為應用ID,可以在SchedulerX控制台应用管理頁面擷取。登入 SchedulerX 控制台,在應用管理頁面的應用列表中,查看目標應用對應的應用ID,即為該參數值。

${SCHEDULERX_APPKEY}

AppKey為應用Key,可以在SchedulerX控制台应用管理頁面擷取。該值可在 SchedulerX 控制台應用管理頁面的應用列表中,從應用key列擷取。

部署Deployment完成後,如果可以在SchedulerX控制台应用管理頁面查看執行個體,表明接入成功。

方式二:通過helm包部署SchedulerX

前提條件

步驟一:下載SchedulerX helm

執行如下命令,下載SchedulerX helm包。

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

步驟二:安裝schedulerx helm包

  1. 在分布式任務調度平台擷取應用的接入參數。

    1. 登入分布式任務調度平台

    2. 在頂部功能表列選擇地區。

    3. 在左側導覽列,單擊应用管理

    4. 应用管理頁面的操作列,單擊接入配置。在接入配置頁面左上方,選擇k8s

  2. 執行如下安裝命令。

    說明
    • 安裝命令的接入參數需要替換為目標應用的接入參數。

    • 接入配置中的鏡像地址預設為公網中amd架構的鏡像。您需要根據自身機器所在的地區以及機器架構選擇合適的鏡像地址。

    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

    安裝過程如下所示。

    [root@tangtao-cenos-dev-2 ~]# helm install  schedulerxchart schedulerxchart-2.0.0.tgz \
    > --set SCHEDULERX_ENDPOINT=acm.aliyxxx \
    > ,SCHEDULERX_NAMESPACE=f856c3f8-a15c-4a7e-9b4e-fxxx \
    > ,SCHEDULERX_GROUPID=k8sxxx \
    > ,SCHEDULERX_APPKEY=VRW7waCaeZlxxx \
    > ,SCHEDULERX_AGENT_IMAGE=registry.cn-hangzhou.aliyuncs.com/schxxx
    NAME: schedulerxchart
    LAST DEPLOYED: Fri Oct 21 14:21:25 2022
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    [root@tangtao-cenos-dev-2 ~]# helm list
    NAME              NAMESPACE    REVISION    UPDATED                                   STATUS      CHART                    APP VERSION
    schedulerxchart   default      1           2022-10-21 14:21:25.978497197 +0800 CST   deployed    schedulerxchart-2.0.0    1.8.0
    [root@tangtao-cenos-dev-2 ~]# kubectl get pod
    NAME                                    READY   STATUS    RESTARTS   AGE
    schedulerx-agent-d8cf5bd55-f4nkt        1/1     Running   0          13s

    SchedulerX agent image變數說明

    晶片架構

    地區

    說明

    x86_64

    中國地區

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

    中國境外

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

    arm64

    中國地區

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

    中國境外

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

    SchedulerX agent env變數說明

    變數

    說明

    ${SCHEDULERX_ENDPOINT}

    您部署應用的地區(Region)和對應的Endpoint,例如addr-sh-internal.edas.aliyun.com。更多資訊,請參見Endpoint列表

    ${SCHEDULERX_NAMESPACE}

    Namespace為命名空間ID,可以在SchedulerX控制台的命名空间頁面擷取。在分布式任務調度平台控制台左側導覽列單擊命名空間,在命名空間列表的命名空間ID列擷取目標命名空間對應的 ID 值,用於替換配置中的 ${SCHEDULERX_NAMESPACE}

    ${SCHEDULERX_GROUPID}

    GroupId為應用ID,可以在SchedulerX控制台应用管理頁面擷取。登入 SchedulerX 控制台,在應用管理頁面的應用列表中,查看目標應用對應的應用ID,即為該參數值。

    ${SCHEDULERX_APPKEY}

    AppKey為應用Key,可以在SchedulerX控制台应用管理頁面擷取。該值可在 SchedulerX 控制台應用管理頁面的應用列表中,從應用key列擷取。

    SCHEDULERX_AGENT_IMAGE

    鏡像地址。

    安裝完成後,可以通過SchedulerX控制台查看執行個體。

方式三:通過Java SDK部署SchedulerX

如果您的應用為Java應用,除K8s任務外,還需要調度Java程式,您可以使用Java SDK部署。SchedulerX和您的線上業務處於一個進程中。流程和原理如下圖所示。66

前提條件

接入SchedulerX

關於SDK接入,請參見Spring Boot應用接入SchedulerX

使用K8s任務還需要依賴一個schedulerx-plugin-kubernetes,如下所示。

說明

schedulerx2.version使用最新用戶端版本,更多資訊,請參見發布記錄

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

後續步驟:建立K8s任務

運行以下指令碼時,您需要在任務管理頁面建立一個K8s任務。具體操作,請參見任務管理

Shell指令碼

如果您想通過Pod運行Shell指令碼,您可以在任務管理頁面建立一個K8s任務,選擇資源類型Shell-Script,使用預設鏡像busybox,或替換為您自建的鏡像。

在建立任務頁面的基本配置步驟中,設定以下參數:

  • 任務名:填寫 Shell-Script

  • 應用ID:選擇目標應用

  • 任務類型:選擇 k8s

  • 資源類型:選擇 Shell-Script

  • 指令碼內容:輸入 echo 'Hello, World!'

  • 模版類型:選擇 普通模板

  • 鏡像:填寫 busybox

  • mountPath:填寫 script/shell

  • imagePullPolicy:選擇 IfNotPresent

  • 檔案格式:選擇 unix

  • 執行模式:選擇 單機運行

  • 優先順序:選擇

設定完成後單擊下一步,完成定時配置和通知配置後提交任務。

單擊运行一次,在Kubernetes叢集中可以看到Pod啟動,Pod名稱為schedulerx-shell-{JobId}。

[root@schedulerx-agent-xxx /]
# kubectl get pod | grep schedulerx
schedulerx-agent-69d448d974-xzjw6    1/1     Running     0          18h
schedulerx-shell-1461                0/1     Completed   0          2m37s

[root@schedulerx-agent-xxx /]
# kubectl logs schedulerx-shell-1461
Hello, World!
hello schedulerx!

[root@schedulerx-agent-xxx /]
#

在SchedulerX控制台任務管理頁面可以查詢歷史執行記錄,也可以查看Pod啟動並執行日誌。

Python指令碼

如果您想通過Pod運行Python指令碼,您可以在任務管理頁面建立一個K8s任務,選擇資源類型Python-Script,使用預設鏡像Python,或替換為您自建的鏡像。

建立任務頁面的基本配置步驟中,配置以下參數:

  • 任務名:填寫Python-Script

  • 應用ID:選擇目標應用

  • 任務類型:選擇k8s

  • 資源類型:選擇Python-Script

  • 在代碼編輯器中輸入 Python 指令碼,例如import sysprint('Hello, World!')

  • 模板類型:選擇普通模板

  • 鏡像:填寫python

  • mountPath:填寫script/python

  • imagePullPolicy:選擇IfNotPresent

  • 檔案格式:選擇unix

  • 執行模式:選擇單機運行

  • 優先順序:選擇

配置完成後單擊下一步,完成定時配置和通知配置後儲存任務。

單擊运行一次,在Kubernetes叢集中可以看到Pod啟動,Pod名稱為schedulerx-python-{JobId}。

[root@schedulerx-agent-xxx /]
# kubectl get pod | grep schedulerx
schedulerx-agent-69d448d974-xzjw6    1/1     Running     0          18h
schedulerx-python-1463                0/1     Completed   0          5m37s
schedulerx-shell-1461                 0/1     Completed   0          15m

[root@schedulerx-agent-xxx /]
# kubectl logs schedulerx-python-1463
Hello, World!

[root@schedulerx-agent-xxx /]
#

在SchedulerX控制台任務管理頁面可以查詢歷史執行記錄,也可以看到Pod啟動並執行日誌。

任務執行個體記錄頁面可查看任務執行狀態(成功或失敗)。單擊對應記錄可開啟日誌面板,日誌輸出包含Hello, World!pod status change to Succeeded等資訊,表明 Python 指令碼已在 Pod 中執行成功。

PHP指令碼

如果您想通過Pod運行PHP指令碼,您可以在任務管理頁面建立一個K8s任務,選擇資源類型PHP-Script,使用預設鏡像php:7.4-cli,或替換為您自建的鏡像。

建立任務頁面的基本配置步驟中,設定以下參數:

  • 任務名:填寫 PHP-Script

  • 應用ID:選擇目標應用

  • 任務類型:選擇 k8s

  • 資源類型:選擇 Php-Script

  • 在代碼編輯器中輸入 PHP 代碼,例如 <?php echo 'Hello, World!'; ?>

  • 模板類型:選擇 普通模板

  • 鏡像:填寫 php:7.4-cli

  • mountPath:填寫 script/php

  • imagePullPolicy:選擇 IfNotPresent

  • 檔案格式:選擇 unix

  • 執行模式:選擇 單機運行

  • 優先順序:選擇

設定完成後單擊 下一步

單擊运行一次,在Kubernetes叢集中可以看到Pod啟動,Pod名稱為schedulerx-php-{JobId}。

[root@schedulerx-agent-xxx xxx]
# kubectl get pod | grep schedulerx
schedulerx-agent-xxx xxx       1/1     Running     0          19h
schedulerx-php-1464            0/1     Completed   0          54s
schedulerx-python-1463         0/1     Completed   0          28m
schedulerx-shell-1461          0/1     Completed   0          38m

[root@schedulerx-agent-xxx xxx]
# kubectl logs schedulerx-xxx
Hello, World!
[root@schedulerx-agent-xxx xxx]
#

在SchedulerX控制台任務管理頁面可以查詢歷史執行記錄,也可以查看Pod啟動並執行日誌。

任務執行成功後,在任務執行個體記錄頁面可查看任務狀態為成功。單擊任務記錄開啟日誌面板,日誌輸出 Hello, World!,pod 狀態變為 Succeeded

Node.js指令碼

如果您想通過Pod運行Node.js指令碼,您可以在任務管理頁面建立一個K8s任務,選擇任務管理Nodejs-Script,使用預設鏡像node:16,或替換為您自建的鏡像。

在 SchedulerX 控制台建立任務,在基本配置步驟中配置以下參數:

  • 任務名Nodejs-Script

  • 應用ID:選擇目標應用

  • 任務類型k8s

  • 資源類型Nodejs-Script

  • 在代碼編輯器中輸入 console.log("Hello, World!");

  • 模板類型普通模板

  • 鏡像node:16

  • mountPathscript/node

  • imagePullPolicyIfNotPresent

  • 檔案格式unix

  • 執行模式單機運行

  • 優先順序

完成後單擊下一步

單擊运行一次,在Kubernetes叢集中可以看到Pod啟動,Pod名稱為schedulerx-node-{JobId}。

[root@schedulerx-agent-xxx Z]# kubectl get pod | grep schedulerx
schedulerx-agent-6xxx       1/1     Running     0          19h
schedulerx-node-xxx         0/1     Completed   0          23s
schedulerx-php-xxx          0/1     Completed   0          4m57s
schedulerx-python-xxx       0/1     Completed   0          32m
schedulerx-shell-xxx        0/1     Completed   0          42m

[root@schedulerx-agent-6xxx Z]# kubectl logs schedulerx-node-xxx
Hello, World!

在SchedulerX控制台任務管理頁面可以查詢歷史執行記錄,也可以看到Pod啟動並執行日誌。

任務運行完成後,在任務執行個體記錄頁面可查看任務執行狀態為成功。右側日誌面板中輸出 Hello, World!,並顯示 pod status change to Succeeded

Job-YAML

通過SchedulerX也可以運行K8s原生的Job。您可以在任務管理頁面建立一個K8s任務,選擇資源類型Job-YAML

建立任務頁面的基本配置步驟中,配置以下參數:

  • 任務名Job-YAML

  • 應用ID:選擇已建立的應用

  • 任務類型k8s

  • 資源類型Job-YAML

  • 執行模式單機運行

  • 優先順序

在代碼編輯器中輸入以下 Kubernetes Job YAML:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(100)"]
      restartPolicy: Never
  backoffLimit: 4

單擊下一步進入定時配置。

單擊运行一次,在Kubernetes叢集中可以看到Job和Pod啟動成功。

[root@schedulerx-agent-xxx            /]
# kubectl get job
NAME   COMPLETIONS   DURATION   AGE
pi     1/1           17s        6m5s

[root@schedulerx-agent-xxx            /]
# kubectl get pod
NAME                       READY   STATUS      RESTARTS   AGE
hello                      0/1     Completed   0          19h
pi--1-jgck5                0/1     Completed   0          6m8s
schedulerx-agent-xxx       1/1     Running     0          19h
schedulerx-node-1xxx       0/1     Completed   0          14m
schedulerx-php-14xxx       0/1     Completed   0          19m
schedulerx-python          0/1     Completed   0          46m
schedulerx-shell-xxx       0/1     Completed   0          56m

[root@schedulerx-agent-xxx            /]
# kubectl logs pi--1-jgck5
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706

[root@schedulerx-agent-xxx            /]
#

在SchedulerX控制台任務管理頁面可以查詢歷史執行記錄,也可以看到Pod啟動並執行日誌。

任務執行個體記錄頁面可查看 Job-YAML 任務的執行狀態(成功或失敗),單擊任務執行個體可開啟日誌面板,日誌顯示 taskMaster 初始化成功及任務計算輸出結果。

CronJob-YAML

通過SchedulerX也可以運行K8s原生的CronJob。您可以在任務管理頁面建立一個K8s任務,資源類型選擇CronJob-YAML

基本配置頁面,任務名填寫 CronJob-YAML任務類型選擇 k8s。在 YAML 編輯器中輸入 CronJob 定義,樣本中配置 metadata.name: helloschedule: "0/1 * * * *"、容器鏡像 busybox:1.28imagePullPolicy: IfNotPresent、執行命令 /bin/sh執行模式選擇單機運行,單擊下一步

單擊运行一次,在任務執行個體記錄頁面可以看到Pod啟動成功。

在SchedulerX控制台任務管理頁面可以查詢歷史執行記錄,也可以看到Pod啟動並執行日誌。

日誌顯示 Pod 輸出 Hello from the Kubernetes cluster,並選項組變更為 Succeeded

Pod-YAML

通過SchedulerX也可以運行K8s原生的Pod。您可以在任務管理頁面建立一個K8s任務,資源類型選擇Pod-YAML

在建立任務頁面的基本配置步驟中,配置以下參數:

  • 任務名Pod-YAML

  • 應用ID:選擇目標應用

  • 任務類型k8s

  • 資源類型Pod-YAML

在代碼編輯器中輸入 Kubernetes Pod YAML 定義,例如建立一個使用 busybox 鏡像、執行 echo "hello world" 命令的 Pod。執行模式選擇單機運行優先順序選擇,然後單擊下一步

單擊运行一次,在Kubernetes叢集中可以看到Pod啟動成功。

[root@schedulerx-agent-xxx /]
# 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-1xxx               0/1     Completed   0          62m
schedulerx-pythoxxx               0/1     Completed   0          90m
schedulerx-shell                  0/1     Completed   0          100m

[root@schedulerx-xxx /]
# kubectl logs hello
hello world

[root@schedulerx-agent-xxx /]
#

在SchedulerX控制台任務管理頁面可以查詢歷史執行記錄,也可以看到Pod啟動並執行日誌。

任務執行個體記錄頁面可查看 Pod-YAML 類型任務的執行狀態(成功或失敗)。單擊對應任務查看日誌,日誌輸出包含 hello worldstandalone taskMaster init success.,表示任務運行成功。

說明

通過SchedulerX運行K8s Pod時,有如下注意事項。

  • 免運行周期較長的Pod,例如Web應用,一旦啟動永遠不會結束。

  • 建議將重啟原則設定成Never,否則Pod會不斷重啟。