首页/新闻资讯/正文详情

EulerMaker Runner执行机详解:从注册到任务调度的全流程解析

发布时间:2026/9/27 1:51:36 来源:云帆数科 栏目:资讯中心
EulerMaker Runner执行机详解:从注册到任务调度的全流程解析
EulerMaker Runner执行机详解从注册到任务调度的全流程解析【免费下载链接】EulerMakerA software package build system that completes the build from source code to binary packages and supports developers in customizing OS scenarios.项目地址: https://gitcode.com/openeuler/EulerMaker前往项目官网免费下载https://ar.openeuler.org/ar/EulerMaker Runner执行机是openEuler/EulerMaker软件包构建系统的核心组件负责完成从源代码到二进制包的构建任务支持开发者自定义操作系统场景。本文将详细解析Runner执行机从注册到任务调度的完整工作流程帮助新手用户快速理解其工作原理和使用方法。一、Runner执行机的核心定位与职责Runner执行机在EulerMaker系统中扮演着关键角色它是Job任务的实际执行者。Runner不直接访问etcd或Elasticsearch等存储系统所有资源读写都通过统一API完成其架构如下runner - ebs-gateway - ebs-apiserver - etcd / Elasticsearch其中ebs-gateway负责认证、鉴权、审计和请求转发ebs-apiserver负责资源语义、校验、默认值等处理。Runner的核心职责包括注册Runner创建或更新集群级Runner对象声明执行机类型、架构、主机名、污点等信息上报状态定期更新Runner.status包括phase、资源容量、可调度资源、地址、系统信息和心跳时间监听Job通过全局Job watch获取资源变化只处理status.runner等于自身名称的Job执行Job根据Job spec准备执行环境、提供payload参数、运行任务、收集产物回写结果通过Project API更新Job status推进Job phase/stage/resultRoot/message二、Runner执行机的生命周期管理Runner执行机的生命周期包含多个阶段其状态流转如下Registering - Booting - Idle - Running - Idle | v Offline各阶段的含义如下RegisteringRunner已启动正在创建或更新Runner对象BootingRunner对象已就绪正在初始化执行环境和watch循环IdleRunner可调度当前无运行中JobRunningRunner正在执行一个或多个JobOfflineRunner主动下线或心跳超时不应继续接收新JobRunner执行机通过定期上报心跳来维持其在线状态默认心跳间隔为30秒。心跳内容包括资源容量、可调度资源、地址信息、系统信息等。三、Runner执行机的注册流程Runner执行机的注册过程是其加入EulerMaker集群的第一步主要通过以下步骤完成创建Runner配置Runner启动时需要指定EBS_GATEWAY、EBS_TOKEN、RUNNER_NAME、RUNNER_TYPE、RUNNER_ARCH等配置参数检查Runner是否存在通过API查询是否已存在同名的Runner对象创建或更新Runner对象如果Runner不存在则创建新对象存在则更新现有对象注册过程的核心代码实现位于components/runner/pkg/runner/agent.go文件中关键函数包括register和runnerObject。四、Job任务的调度与执行流程Runner执行机通过全局API watch所有Job但只处理已绑定到自己的对象。典型的Job执行流程如下Runner watch到绑定给自己的Job根据metadata.namespace确定所属Project更新Runner.status.phaseRunning更新Job.status.stageRunning准备执行环境按Job.spec.timeoutSeconds限制执行时间将Job.spec.payload作为YAML参数提供给任务执行入口收集产物得到resultRoot成功时更新Job.status.phaseCompleted、stagePostRun、resultRoot失败时更新Job.status.phaseFailed、message清理环境更新Runner.status为Idle或继续RunningJob执行的核心逻辑在components/runner/pkg/runner/agent.go的runJob函数中实现。五、执行器与容器生命周期管理Runner agent的执行逻辑按kubelet管理Pod的思路拆分具体运行时由executor承接。目前支持的执行器类型包括spec.type执行方式说明dcDocker / 容器环境常规包构建vm虚拟机环境需要更强隔离的构建hw物理机环境需要裸机能力的任务以DC容器运行时为例其容器生命周期管理流程如下解析Job.spec.runtimeSpec得到镜像、网络、权限、工作目录、挂载等容器配置为Job创建本地workDir和resultDir将Job.spec.payload写入workDir/payload.yaml拉取或确认业务镜像可用创建容器挂载workDir、resultDir并写入Job/Project/Runner标识label启动容器由业务入口读取/workspace/payload.yaml并执行任务流式采集或落盘容器日志等待容器退出按退出码决定Job成功或失败超时时先stop超过grace period后kill收集resultDir清理容器和临时目录DC执行器的实现代码位于components/runner/pkg/runner/dc_executor.go文件中。六、Runner执行机的部署与配置Runner作为独立组件容器化部署至少需要以下配置配置说明EBS_GATEWAYgateway地址例如https://ebs-gateway:8443EBS_TOKENRunner访问gateway的认证令牌RUNNER_NAMERunner资源名称默认可使用hostnameRUNNER_TYPERunner类型dc/vm/hwRUNNER_ARCHRunner架构aarch64/x86_64推荐的Docker Compose部署配置示例services: ebs-runner-dc-1: image: ebs-runner:latest environment: EBS_GATEWAY: https://ebs-gateway:8443 EBS_TOKEN: ${RUNNER_TOKEN} RUNNER_NAME: runner-dc-aarch64-01 RUNNER_TYPE: dc RUNNER_ARCH: aarch64 volumes: - /var/run/docker.sock:/var/run/docker.sock - runner-cache:/var/lib/ebs-runner七、故障处理与安全边界Runner执行机具备完善的故障处理机制主要包括场景处理方式gateway不可达watch和心跳失败后指数退避重连watch中断使用上次resourceVersion恢复不可恢复时重新list/watch心跳超时控制器将Runner标记为Offlinescheduler不再选择该RunnerRunner重启重新注册Runner恢复心跳根据现有Job状态决定是否清理或继续Job执行失败更新Job.status.phaseFailed和message并清理本地环境Job超时终止执行进程更新Job为Failed或Aborted状态更新冲突使用apiserver返回的resourceVersion重新读取并重试在安全方面Runner执行机遵循以下原则Runner认证统一经过ebs-gatewayRunner token权限限制为注册/读取自身Runner、更新自身Runner status等必要操作Runner不应拥有直接访问etcd、Elasticsearch的权限DC类型Runner如需挂载Docker socket应通过隔离网络、只读挂载等方式降低风险八、总结EulerMaker Runner执行机是构建系统的核心组件负责从注册到任务执行的全流程管理。通过本文的介绍您应该对Runner的工作原理、生命周期、任务调度流程有了清晰的认识。如需了解更多细节可以参考项目中的设计文档docs/zh/design/runner.md和源代码实现。要开始使用EulerMaker您可以通过以下命令克隆仓库git clone https://gitcode.com/openeuler/EulerMaker希望本文能帮助您更好地理解和使用EulerMaker Runner执行机提升软件包构建效率 【免费下载链接】EulerMakerA software package build system that completes the build from source code to binary packages and supports developers in customizing OS scenarios.项目地址: https://gitcode.com/openeuler/EulerMaker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

LOGITacker主动枚举技术:深度探测Logitech接收器漏洞
LOGITacker主动枚举技术:深度探测Logitech接收器漏洞

LOGITacker主动枚举技术:深度探测Logitech接收器漏洞 【免费下载链接】LOGITacker Enumerate and test Logitech wireless input devices for vulnerabilities with a nRF52840 radio dongle. 项目地址: https://gitcode.com/gh_mirrors/lo/LOGITacker LOGIT… · 2026/9/27 1:51:35

高性能分布式MIoT协议解析架构:实现小米智能家居与Home Assistant的无缝集成方案
高性能分布式MIoT协议解析架构:实现小米智能家居与Home Assistant的无缝集成方案

高性能分布式MIoT协议解析架构:实现小米智能家居与Home Assistant的无缝集成方案 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 在智能家居生态快速发展的… · 2026/9/27 1:51:22

LapisCV完全指南:在VSCode/Typora/Obsidian中创建精美简历
LapisCV完全指南:在VSCode/Typora/Obsidian中创建精美简历

LapisCV完全指南:在VSCode/Typora/Obsidian中创建精美简历 【免费下载链接】LapisCV 📄 使用 VSCode / Typora / Obsidian 和 Markdown 语法制作简介、现代的简历 项目地址: https://gitcode.com/BingyanStudio/LapisCV LapisCV是华中科技大学冰岩… · 2026/7/27 4:56:22

事业单位网站备案流程全解:怎么选对服务商才不踩坑
事业单位网站备案流程全解:怎么选对服务商才不踩坑

事业单位网站备案流程全解:怎么选对服务商才不踩坑 你的网站刚上线不久,突然收到用户反馈打不开,或者页面弹出一堆奇怪的广告链接?这时候别慌,先别急着重启服务器,很多事业单位和国企的新手站长都遇到过这种情况:网站被黑挂马,后台日志里全是陌生的I… · 2026/9/27 1:51:31

爱立信5G面试题PDF深度解析与实战能力校准
爱立信5G面试题PDF深度解析与实战能力校准

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:51:31

北京天通苑网站建设新手入门:3套方案实测避坑
北京天通苑网站建设新手入门:3套方案实测避坑

北京天通苑网站建设新手入门:3套方案实测避坑 网站做好了没人访问,这是北京天通苑很多创业团队负责人最头疼的事。刚花几万块把站弄上线,百度搜不到,微信打不开,客户来了也留不住。别怪自己运气差,大概率是技术选型踩了坑,SEO底层架构没搭对。… · 2026/9/27 1:51:31

车载DoIP诊断:TCP源端口定制的实现与避坑指南
车载DoIP诊断:TCP源端口定制的实现与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:51:13

火绒杀毒软件使用指南:安装配置、自定义规则与避坑实践
火绒杀毒软件使用指南:安装配置、自定义规则与避坑实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:51:13

复旦微FMQL45T900实测:国产FPGA能否替代Xilinx ZYNQ?
复旦微FMQL45T900实测:国产FPGA能否替代Xilinx ZYNQ?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:51:13

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码