本发明涉及kubernetes云平台,特别涉及一种基于webassembly扩展kubernetes调度器的方法和装置。
背景技术:
1、kubernetes是一个强大的容器编排平台,它的调度器负责将pod分配到可用节点上。默认调度器kube-scheduler,是kubernetes自带的一个组件,它采用基于预选(predicates)和优选(priorities)的调度策略,确保将pods安排到符合资源需求、亲和性约束等条件的节点上。尽管kube-scheduler已经提供了一套默认的调度策略,但对于有特殊需求的用户而言,这套策略可能无法满足他们的需求。例如,用户可能需要根据自定义的业务规则对pod进行调度,或者需要优化特定类型的工作负载。因此,kubernetes v1.15之后允许用户通过scheduling framework实现自己的调度策略。然而,用户依然面临一些痛点,1)完整开发scheduling framework拓展程序的门槛很高,他需要对调度器扩展机制的开发、部署等方方面面都比较了解,而且从开发到调试到上线的流程繁琐易错;2)在某些场景下,例如公有云托管版kubernetes,用户几乎不具备上机部署scheduling framework拓展程序的可能。本专利尝试提供一套更轻量、简单去扩展调度的方式,方便用户扩展kubernetes的调度策略,从而解决上述的问题。
2、例如现有的申请公开号为cn116841718a的专利本发明提供一种基于kubernetes的物理资源调度方法及调度器,通过获取kubernetes集群中的调度信息,调度信息包括待调度pod的pod信息以及各节点的负载信息;然后遍历各节点,将待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到调度评价模型输出的待调度pod被调度至当前节点时的评价信息;最好基于各节点对应的评价信息,对待调度pod进行调度。该方法引入了当前节点的负载信息,避免了只考虑硬件资源而导致的节点上物理资源出现异常的情况,保证了kubernetes集群的安全运行,提高了kubernetes集群的稳定性。
3、但是上述专利中存在:通过调度pod控制调度逻辑包括pod信息及各节点的负载信息,并未涉及解决调度扩展和热更新的问题,其次尽管提供了自定义调度器、调度器扩展程序和调度框架三种方式,但方案的实现都比较繁琐,且不支持热更新。
4、本发明解决了调度扩展、支持热更新的问题,其次对于场景而言,本专利主要面向公有云、私有云等kubernetes通用的调度场景,让用户可以定制调度逻辑。特别在公有云场景下,用户一般不可能替换kube-scheduler的镜像,最后本专利适用于扩展kubernetes的调度能力的场景,基于调度框架,将调度扩展点的请求转到wasm沙箱实例中执行,方便又安全地支持了用户扩展调度逻辑。同时,wssp支持热更调度逻辑,支持不同的pod使用不同的调度逻辑。
技术实现思路
1、本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本技术的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
2、为解决上述技术问题,本发明的主要目的在于提供一种基于webassembly扩展kubernetes调度器的方法,包括:
3、s1、以kube-scheduler为源码建立沙箱调度插件;
4、s2、通过修改newschedulercommand作为给kube-scheduler的配置文件;
5、s3、配置完成后,用户通过相关语言开发调度逻辑,并将其编译为wasm文件,并上传到存储系统,编写并提交wsspschedulerconfiguration的请求变更cr;
6、s4、输出请求变更cr时,pod注释增强启动,对wssp和schedulefragment进行注释,并且将注释值改为wsspschedulerconfiguration的请求变更cr的名字;
7、s5、请求变更完成后,对调度程序进行调度,其中通过extension points调用wsspsi,接着调用到调度逻辑,执行后返回结果并输出。
8、作为本发明一种基于webassembly扩展kubernetes调度器的方法的一种优选方案,其中:
9、所述沙箱调度插件记为wssp;
10、所述wssp为基于kube-scheduler的源码,通过修改newschedulercommand输入沙箱调度插件;
11、wssp本身的配置通过kubeschedulerconfigurations和args中的参数schedulefragment,并把schedulefragment值默认为defalut:v1.0.0,schedulefragment状态为非必填,默认的调度逻辑default-v1.0.0.wasm在插件初始化时加载到wasm沙箱中。
12、作为本发明一种基于webassembly扩展kubernetes调度器的方法的一种优选方案,其中:
13、所述请求变更cr为调度逻辑发布输出指令,且请求变更cr的名称遵循{name}-{versionno}的格式;
14、配置完成后,用户通过相关语言开发调度逻辑,并将其编译为wasm文件,并上传到存储系统,编写并提交wsspschedulerconfiguration的请求变更cr,wssp watch接收请求变更cr时,将.wasm文件加载到wasm沙箱中。
15、作为本发明一种基于webassembly扩展kubernetes调度器的方法的一种优选方案,其中:
16、所述pod注释用于wssp/schedulefragment,通过更改注释值进而执行该逻辑调度;
17、若pod存在wssp/schedulefragment,则表示该pod将使用wsspschedulerconfiguration中的调度逻辑处理,若pod不存在wssp/schedulefragment,则表示该pod将使用默认的调度逻辑执行。
18、作为本发明一种基于webassembly扩展kubernetes调度器的方法的一种优选方案,其中:
19、所述调度逻辑处理,通过extension points调用wssp si,接着调用到调度逻辑(wasm扩展代码),执行后返回结果;
20、所述返回结果包括形成调度闭环并且输出调度结果。
21、作为本发明一种基于webassembly扩展kubernetes调度器的装置的一种优选方案,其中:
22、manager模块,用于监听调度逻辑并且监测调度逻辑数据;
23、vm模块,用于对函数进行封装,并且负责.wasm文件的加载、执行,以及沙箱的资源管理;
24、si模块,用于连接调度插件与调度逻辑之间的交互。
25、作为本发明一种基于webassembly扩展kubernetes调度器的装置的一种优选方案,其中:
26、所述manager模块,用于监听调度逻辑wsspschedulerconfiguration的请求变更cr、维护wasm沙箱调配逻辑;
27、所述wasm沙箱通过wasm技术供用户选择多种语言进行编写调度逻辑;
28、所述调度逻辑通过pod注释进行增强处理。
29、作为本发明一种基于webassembly扩展kubernetes调度器的装置的一种优选方案,其中:
30、所述vm模块提供对wasm runtime的统一封装,负责.wasm文件的加载、执行,以及wasm沙箱实例的资源管理;
31、所述wasm沙箱实例的资源管理,若wssp watch到请求变更cr时将.wasm文件加载到wasm沙箱实例中。
32、作为本发明一种基于webassembly扩展kubernetes调度器的装置的一种优选方案,其中:
33、所述si模块提供对外的使用接口,可以看作是调度插件与调度逻辑之间交互的胶水层,插件实现scheduling framework的扩展点,将调用经由si模块调到调度逻辑中。
34、作为本发明一种基于webassembly扩展kubernetes调度器的装置的一种优选方案,其中:
35、所述调用经由si模块调到调度逻辑中,若pod不存在
36、wssp/schedulefragment,则该pod将使用默认的调度逻辑执行,通过extensionpoints调用si模块运行,即使用默认的逻辑调度。
37、本发明的有益效果:
38、本发明解决了调度扩展、支持热更新的问题,其次对于场景而言,本专利主要面向公有云、私有云等kubernetes通用的调度场景,让用户可以定制调度逻辑。特别在公有云场景下,用户一般不可能替换kube-scheduler的镜像,最后本专利适用于扩展kubernetes的调度能力的场景,基于调度框架,将调度扩展点的请求转到wasm沙箱实例中执行,方便又安全地支持了用户扩展调度逻辑。同时,wssp支持热更调度逻辑,支持不同的pod使用不同的调度逻辑。
1.一种基于webassembly扩展kubernetes调度器的方法,其特征在于:包括,
2.根据权利要求1所述的一种基于webassembly扩展kubernetes调度器的方法,其特征在于:
3.根据权利要求1所述的一种基于webassembly扩展kubernetes调度器的方法,其特征在于:
4.根据权利要求3所述的一种基于webassembly扩展kubernetes调度器的方法,其特征在于
5.根据权利要求4所述的一种基于webassembly扩展kubernetes调度器的方法,其特征在于:
6.一种基于webassembly扩展kubernetes调度器装置,其特征在于:
7.根据要求6所述的一种基于webassembly扩展kubernetes调度器装置,其特征在于:
8.根据权利要求6所述的一种基于webassembly扩展kubernetes调度器装置,其特征在于:
9.根据权利要求8所述的一种基于webassembly扩展kubernetes调度器装置,其特征在于:
10.根据权利要求9所述的一种基于webassembly扩展kubernetes调度器装置,其特征在于:
