日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

# Schedulerx正式登陆Ali-k8s应用目录

發布時間:2024/8/23 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 # Schedulerx正式登陆Ali-k8s应用目录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

分布式任務調度 SchedulerX 是阿里巴巴基于 Akka 架構自研的的分布式任務調度平臺,今天正式登陸阿里云容器服務Kubernetes應用目錄,支持用戶以云原生的方式獲取定時、工作流任務編排、分布式批量調度等功能,同時具有高可靠、海量任務、秒級調度能力,Schedulerx詳細信息請查看產品文檔了解更多。
本文將帶您快速了解如何在阿里云容器服務Kubernetes上使用Schedulerx,讓您在5min內以云原生的方式獲得強大的任務調度能力。

前提條件

  • 創建Kubernetes集群
  • 開通EDAS(免費)
  • EDAS組件中心開通Schedulerx組件(免費)

安裝SchedulerX任務調度組件

  • 登錄容器服務Kubernetes 版控制臺;
  • 在左側導航欄選擇市場 > 應用目錄,在右側選中 ack-schedulerx;
  • 進入ack-schedulerx安裝頁面,點擊參數標簽頁填寫以下參數:

    • controller.cluster_id(Kubernetes集群id)
    • controller.region_id(region id),目前支持的region如下:

      • cn-shanghai
      • cn-beijing
      • cn-hangzhou
      • cn-shenzhen
  • 檢查安裝結果:

    • CRDs安裝正確:運行命令“kubectl get crd | grep schedulerx”,應該打印出3個CRD,分別是:

      • xgroups.schedulerx.alibabacloud.com
      • xcronjobs.schedulerx.alibabacloud.com
      • xagentpools.schedulerx.alibabacloud.com
    • Controller安裝正確:運行命令“kubectl get pods -n ?schedulerx-system”,應該有一個運行狀態為Running的pod:

核心概念

用戶使用Schedulerx需要理解3個概念:

分組

具有兩個功能:

  • 客戶端的組織單位
  • 任務的組織單位

任務

調度單位,用戶需要創建任務,配置所屬分組;

客戶端

任務執行節點,用戶需要引入Schedulerx客戶端,實現對應Java任務處理接口,配置所屬分組啟動名為SchedulerxWorker的Agent。

三者的關系就是任務只能調度到對應分組客戶端,比如我們創建分組group-sample,在該分組下創建任務job-sample,同時配置所屬分組為group-sample來啟動客戶端agent1, agent2, agent3,那么job-sample就會調度到agent1, agent2, agent3上面運行。

更多概念見名詞解釋。

創建分組

CRD信息

ack-schedulerx提供CRD創建分組,信息如下:

GVK信息

group,version,kind信息如下:

  • apiVersion:schedulerx.alibabacloud.com/v1alpha1
  • kind: XGroup

spec信息

參數名類型默認值是否必填說明
appNamestring必填應用名,用戶自定義,用于后續管理

例子

創建xgroup.yaml文件,包含以下內容:

apiVersion: schedulerx.alibabacloud.com/v1alpha1 kind: XGroup metadata:name: xgroup-sample spec:appName: ackApp

在Kubernetes中運行以下命令:

kubectl apply -f xgroup.yaml

查看xgroup資源:

kctl get xgroup xgroup-sample -o yaml

打印結果如下:

apiVersion: schedulerx.alibabacloud.com/v1alpha1 kind: XGroup metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"schedulerx.alibabacloud.com/v1alpha1","kind":"XGroup","metadata":{"annotations":{},"name":"xgroup-sample","namespace":"default"},"spec":{"appName":"ackApp"}}creationTimestamp: "2019-09-19T04:21:12Z"finalizers:- GroupCleanupgeneration: 1name: xgroup-samplenamespace: defaultresourceVersion: "143176160"selfLink: /apis/schedulerx.alibabacloud.com/v1alpha1/namespaces/default/xgroups/xgroup-sampleuid: e9a1fb81-da94-11e9-a156-be9f1a43fbb7 spec:appName: ackApp status:appGroupId: 283conditions:- lastTransitionTime: "2019-09-19T04:21:12Z"lastUpdateTime: "2019-09-19T04:21:12Z"reason: CreateGroupSuccessstatus: "True"type: Ready

看到status中conditions中Ready為true表示創建成功,此時可以登錄應用分組管理控制臺查看分組創建情況:

注意事項

  • 分組下如果任務數不為0,或者客戶端數量不為0,無法刪除分組;
  • 分組一旦創建,不允許更新,如果需要更新請刪除后創建;

創建/更新/刪除任務

CRD信息

ack-schedulerx提供CRD創建/更新/刪除任務,創建和更新都是apply自定義資源,刪除就是刪除該資源,CRD信息如下:

GVK信息

group,version,kind信息如下:

  • apiVersion:schedulerx.alibabacloud.com/v1alpha1
  • kind: XCronJob

spec信息

參數名類型默認值是否必填說明
groupstring該任務所屬分組名
jobTypestringjava任務類型,指實現任務的編程語言,當前支持 java, python, shell, go
jobProcessorstring否(有條件)任務實現全限定類名,如果jobType == java, 該字段必填
contentstring否(有條件)任務實現代碼,如果jobType != java,該 字段必填
executeModestringstandalone任務執行模式,當前支持standalone, broadcast, ?parallel, grid, batch,具體意思見執行模式文檔,demo程序見
descriptionstring任務描述
timeTypeint1任務調度表達式類型,當前支持cron(1),fix_rate(3), second_delay(4)
timeExpressionstring任務調度表達式,比如: cron: 0 0 2?? 要確保頻率大于分鐘級; fix_rate: 30(>0) 單位是s, 每30s運行一次; second_delay: 2(1-60) 單位是s, 上次運行結束后延遲2s運行下次
parametersstring任務參數,可以在任務運行時從上下文獲取
maxConcurrencyint1最大同時運行任務實例數,默認是1,超過該并發度的調度實例會被忽略
retryMaxAttemptsint0失敗重試次數,默認為0,不重置
retryIntervalint30失敗重試間隔,單位s,默認30s

例子

創建xcronjob.yaml文件,包含以下內容:

apiVersion: schedulerx.alibabacloud.com/v1alpha1 kind: XCronJob metadata:name: xcronjob-sample spec:group: xgroup-samplejobType: javajobProcessor: processor.SimpleJobProcessorexecuteMode: standalonetimeExpression: 0 0 2 * * ?

可以看到指定的group是剛剛創建的group,默認使用cron調度表達式,java任務類型,處理的接口類名是processor.SimpleJobProcessor,在Kubernetes中運行以下命令:

kubectl apply -f xcronjob.yaml

查看xcronjob資源:

kctl get xcronjob xcronjob-sample -o yaml

打印結果如下:

apiVersion: schedulerx.alibabacloud.com/v1alpha1 kind: XCronJob metadata:creationTimestamp: "2019-09-19T06:33:13Z"finalizers:- JobCleanupgeneration: 1name: xcronjob-samplenamespace: defaultownerReferences:- apiVersion: schedulerx.alibabacloud.com/v1alpha1blockOwnerDeletion: truecontroller: truekind: XGroupname: xgroup-sampleuid: e9a1fb81-da94-11e9-a156-be9f1a43fbb7resourceVersion: "143570391"selfLink: /apis/schedulerx.alibabacloud.com/v1alpha1/namespaces/default/xcronjobs/xcronjob-sampleuid: 5b5e6e94-daa7-11e9-a76d-4af3350b44d3 spec:executeMode: standalonegroup: xgroup-samplejobProcessor: processor.SimpleJobProcessorjobType: javatimeExpression: 0 0 2 * * ? status:conditions:- lastTransitionTime: "2019-09-19T06:33:13Z"lastUpdateTime: "2019-09-19T06:33:14Z"reason: JobUpdateSuccessstatus: "True"type: ReadyjobId: 1304

看到status中conditions中Ready為true表示創建成功,此時可以登錄任務管理控制臺查看任務創建情況,jobId可以方便后續在控制臺進行任務和執行歷史的搜索:

創建/更新/刪除客戶端

CRD信息

ack-schedulerx提供CRD創建/更新/刪除客戶端,創建和更新都是apply自定義資源,刪除就是刪除該資源,CRD信息如下:

GVK信息

group,version,kind信息如下:

  • apiVersion:schedulerx.alibabacloud.com/v1alpha1
  • kind: XAgentPool

spec信息

參數名類型默認值是否必填說明
groupstring該任務所屬分組名
replicasint執行器個數
templatePodSpec任務執行器Pod模板

客戶端開發

程序開發

開發Schedulerx客戶端主要做2件事:

  • 初始化 SchedulerxWorker
  • 新建實現任務調度的類

初始化SchedulerxWorker

針對不同應用,在初始化 SchedulerxWorker 的時候會有所區別,下面分別說明:

1、獨立Java和Spring應用

(1)在應用程序的pom.xml文件中添加 SchedulerxWorker 依賴

<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx2-worker</artifactId> <version>${schedulerx2.version}</version> </dependency>

其中${schedulerx2.version}版本見版本說明,使用ack-schedulerx需要至少使用1.0.9版本。

(2)初始化SchedulerxWorker或者作為一個bean注入

private static void initSchedulerxWorker() throws Exception {SchedulerxWorker schedulerxWorker = new SchedulerxWorker();schedulerxWorker.init();}

2、Springboot應用

(1)在應用程序的pom.xml文件中添加 SchedulerxWorker 依賴

<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx2-spring-boot-starter</artifactId> <version>${schedulerx2.version}</version> </dependency>

其中${schedulerx2.version}版本見版本說明,使用ack-schedulerx需要至少使用1.0.9版本。

(2)初始化 SchedulerxWorker

新建實現任務調度的類

package processor;import com.alibaba.schedulerx.worker.domain.JobContext; import com.alibaba.schedulerx.worker.processor.JavaProcessor; import com.alibaba.schedulerx.worker.processor.ProcessResult;/*** @author yanxun on 2019/9/2.*/ public class SimpleJobProcessor extends JavaProcessor {@Overridepublic ProcessResult process(JobContext context) throws Exception {System.out.println("hello schedulerx2.0");return new ProcessResult(true);} }

更多類型見Demo示例。

鏡像制作

打包上面程序,啟動Schedulerx即可,下面是一個Dockerfile例子:

FROM openjdk:8-jdk-alpine COPY ./target/schedulerx-k8s-demo-1.0-SNAPSHOT-spring-boot.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"]

為方便大家快速體驗,我們已經將例子中的鏡像上傳供大家使用:

registry.cn-shanghai.aliyuncs.com/schedulerx/demo:latest

例子

創建xagentpool.yaml文件,包含以下內容:

apiVersion: schedulerx.alibabacloud.com/v1alpha1 kind: XAgentPool metadata:name: xagentpool-sample spec:group: xgroup-samplereplicas: 2template:containers:- name: standaloneimage: registry.cn-shanghai.aliyuncs.com/schedulerx/demo:latest

可以看到指定的group是剛剛創建的group,運行兩個執行器,執行器鏡像為image,該image即客戶端鏡像。

在Kubernetes中運行以下命令:

kubectl apply -f xagentpool.yaml

查看xagentpool資源:

kctl get xagentpool xagentpool-sample -o yaml

打印結果如下:

apiVersion: schedulerx.alibabacloud.com/v1alpha1 kind: XAgentPool metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"schedulerx.alibabacloud.com/v1alpha1","kind":"XAgentPool","metadata":{"annotations":{},"name":"xagentpool-sample","namespace":"default"},"spec":{"group":"xgroup-sample","replicas":2,"template":{"containers":[{"image":"registry.cn-shanghai.aliyuncs.com/schedulerx/demo:latest","name":"standalone"}]}}}creationTimestamp: "2019-09-25T10:11:39Z"generation: 1name: xagentpool-samplenamespace: defaultownerReferences:- apiVersion: schedulerx.alibabacloud.com/v1alpha1blockOwnerDeletion: truecontroller: truekind: XGroupname: xgroup-sampleuid: c920a50b-df7c-11e9-a76d-4af3350b44d3resourceVersion: "170986882"selfLink: /apis/schedulerx.alibabacloud.com/v1alpha1/namespaces/default/xagentpools/xagentpool-sampleuid: dd83910f-df7c-11e9-a156-be9f1a43fbb7 spec:group: xgroup-samplereplicas: 2template:containers:- image: registry.cn-shanghai.aliyuncs.com/schedulerx/demo:latestname: standaloneresources: {} status:conditions:- lastTransitionTime: "2019-09-25T10:11:40Z"lastUpdateTime: "2019-09-25T10:11:40Z"reason: update deployment sucessstatus: "True"type: Ready

看到status中conditions中Ready為true表示創建成功,實際上,每個agentPool的創建都會在相同命名空間下創建名為[agentPoolName]-deployment的Deployment,可以自行查看,除此之外可以登錄應用分組管理控制臺查看執行器啟動情況,是否正常連接到schedulerx客戶端,可以看到已經正常啟動兩個客戶端:

卸載SchedulerX任務調度組件

容器服務控制臺左側導航欄中“應用 > 發布”菜單,選擇Helm標簽頁,找到發布名稱是ack-schedulerx的數據,點擊對應的刪除即可,有兩點注意一下:

  • 注意在刪除之前請確保集群內的所有XGroup,XCronJob,XAgentPool類型資源都已經刪除完畢,否則無法刪除CRDs,導致下次安裝出現問題。
  • XGroup刪除之后,對應的schedulerx應用分組不會自動刪除,需要用戶到應用分組管理控制臺手動刪除。

更多

Schedulerx還支持報警,工作流調度,運行實例查看,更多功能請查看Schedulerx控制臺使用文檔,登錄Schedulerx控制臺進行配置。


原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的# Schedulerx正式登陆Ali-k8s应用目录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。