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),仅供参考

相关新闻

AM62L DDR PHY寄存器配置详解:从PLL校准到信号完整性优化

AM62L DDR PHY寄存器配置详解:从PLL校准到信号完整性优化

1. 项目概述:深入AM62L DDR PHY寄存器配置的核心在嵌入式系统开发,尤其是基于TI AM62L这类高性能Sitara™处理器的项目中,DDR内存子系统的稳定性和性能往往是决定产品成败的关键。很多工程师在拿到TRM(技术参考手册)时…

2026/10/20 2:45:34 阅读更多 →
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/10/17 7:24:33 阅读更多 →
高性能分布式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/10/18 22:44:14 阅读更多 →

最新新闻

AI搜索时代的口碑优化:从口径库到内容证据链的实战指南

AI搜索时代的口碑优化:从口径库到内容证据链的实战指南

在各行业都在谈“数字化”的时候,真正影响消费决策的通道其实已经换了。以前大家搜一个品牌,是翻链接、看标题、挑网站;现在打开对话式AI,直接问一句“这座城有什么值得吃的”“这家店的真实口碑怎么样”,然后就看AI给…

2026/10/21 5:29:11 阅读更多 →
基于 AAS 的 Attack Tree Construction:攻击树建模、路径分析与防御优先级工程实践

基于 AAS 的 Attack Tree Construction:攻击树建模、路径分析与防御优先级工程实践

AI 技能AI 插件人工智能 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600 agentic skills. Includes CLI, local MCP, c…

2026/10/21 5:29:11 阅读更多 →
agentic-awesome-skills 反逆向技术 Skill 深度解析:授权安全边界、反调试/反虚拟机检测与脱壳实战方法论

agentic-awesome-skills 反逆向技术 Skill 深度解析:授权安全边界、反调试/反虚拟机检测与脱壳实战方法论

agentic-awesome-skills 反逆向技术 Skill 深度解析:授权安全边界、反调试/反虚拟机检测与脱壳实战方法论 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, sta…

2026/10/21 5:29:11 阅读更多 →
技能盘点与评估实战:从能力分级到团队技能树构建

技能盘点与评估实战:从能力分级到团队技能树构建

每次做团队能力盘点或者写个人年度总结的时候,我总会下意识地打开某个名为“skills”的文件夹。里面堆着这些年整理过的技能清单、评估表格、学习路径图,还有无数份技术面试的记录。这个不起眼的词,几乎涵盖了技术从业者职业发展里最核心的一…

2026/10/21 5:29:11 阅读更多 →
零散技能如何变成核心竞争力?从技能清单到技能体系

零散技能如何变成核心竞争力?从技能清单到技能体系

直接说结论:“skills”这个词,看起来是个简单的复数名词,但它背后藏着一个几乎所有职场人都会遇到的问题——技能学了一堆,简历上写得密密麻麻,真到用的时候却总觉得哪哪儿都不顺手。我见过太多人把技能当成荣誉清单&a…

2026/10/21 5:29:11 阅读更多 →
代码托管平台访问慢?从DNS到资源加载的全链路优化指南

代码托管平台访问慢?从DNS到资源加载的全链路优化指南

1. 为什么打开代码托管平台会慢:先搞懂瓶颈在哪很多人一遇到页面转圈,第一反应就是“网不行”,然后开始重启路由器、切换网络,折腾半天发现该慢还是慢。我刚开始也这样,后来才意识到,打开这类海外代码托管平…

2026/10/21 5:28:10 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/20 9:50:45 阅读更多 →