文章总结: Go项目实战专栏介绍从零开发类似Kubernetes的编排器,涵盖任务框架、工作节点、管理器、调度器等核心组件,适合学习大型Go项目组织和容器技术,专栏已更新完毕,可通过知识星球加入阅读。 综合评分: 40 文章分类: 实战经验,软文广告
Go项目实战:用Go从零写一个编排器(类Kubernetes)
CppGuide
2026年3月24日 12:31 上海
#
如果你正在寻找Go语言方面的相关的实战项目,那么推荐一下这个专栏《用Go从零写一个编排器(类Kubernetes)》。
本专栏带领着大家使用Go语言从零一步一步地开发一个类似于Kubernetes的编排器。
通过这个项目,你不仅能学到大型Go项目如何组织安排的,同时也能学到容器相关的技术,更不用说各种设计理念和开发技巧了。
专栏详细目录如下(已更新完毕):
第一部分 引言
第1章 什么是编排器?
1.1 为什么要从头实现一个编排器?
1.2 (并不那么)美好的往昔
1.3 什么是容器,它与虚拟机有何不同?
1.4 什么是编排器?
1.5 编排系统的组件
- 任务(Task)
- 作业(Job)
- 调度器(Scheduler)
- 管理器(Manager)
- 工作节点(Worker)
- 集群(Cluster)
- 命令行界面(Command-line interface)
1.6 认识Cube
1.7 我们将使用哪些工具?
1.8 关于硬件的一点说明
1.9 我们不会实现或讨论的内容
- 分布式计算
- 服务发现
- 高可用性
- 负载均衡
- 安全性
第2章 从概念模型到框架代码
2.1 任务框架
2.2 工作节点框架
2.3 管理器框架
2.4 调度器框架
2.5 其他框架
2.6 测试我们的框架
第3章 完善任务框架
3.1 Docker:从命令行启动、停止和检查容器
3.2 Docker:从API启动、停止和检查容器
3.3 任务配置
3.4 启动和停止任务
第二部分 工作节点
第4章 Cube的工作节点,团结起来!
4.1 Cube工作节点
4.2 任务和Docker
4.3 队列的作用
4.4 数据库(DB,Database)的作用
4.5 统计任务数量
4.6 实现工作节点的方法
- 实现StopTask方法
- 实现StartTask方法
- 关于任务状态的插曲
- 实现RunTask方法
4.7 整合所有内容
第5章 工作节点的API
5.1 工作节点API概述
5.2 数据格式、请求和响应
5.3 API结构体
5.4 处理请求
5.5 提供API服务
5.6 整合所有内容
第6章 指标
6.1 我们应该收集哪些指标?
6.2 从/proc文件系统获取的指标
6.3 使用goprocinfo收集指标
6.4 在API上公开指标
6.5 整合所有内容
第三部分 管理器
第7章 管理器登场
7.1 Cube管理器
- 构成管理器的组件
7.2 Manager结构体
7.3 实现管理器的方法
- 实现SelectWorker方法
- 实现SendWork方法
- 实现UpdateTasks方法
- 向管理器添加任务
- 创建管理器
7.4 关于故障和弹性的插曲
7.5 整合所有内容
第8章 管理器的API
8.1 管理器API概述
8.2 路由
8.3 数据格式、请求和响应
8.4 API结构体
8.5 处理请求
8.6 提供API服务
8.7 进行一些重构以简化工作
8.8 整合所有内容
第9章 可能会出什么问题?
9.1 新场景概述
9.2 故障场景
- 应用程序启动失败
- 应用程序错误
- 由于资源问题导致任务启动失败
- 由于Docker守护进程崩溃和重启导致任务失败
- 由于机器崩溃和重启导致任务失败
- 工作节点故障
- 管理器故障
9.3 恢复选项
- 从应用程序故障中恢复
- 从环境故障中恢复
- 从任务级故障中恢复
- 从工作节点故障中恢复
- 从管理器故障中恢复
9.4 实现健康检查
- 在工作节点上检查任务
- 在工作节点上实现任务更新
- 健康检查和重启
9.5 整合所有内容
第四部分 重构
第10章 实现更复杂的调度器
10.1 调度问题
10.2 调度考虑因素
10.3 调度器接口
10.4 使轮询调度器适配调度器接口
10.5 使用新的调度器接口
- 向Manager结构体添加新字段
- 修改New辅助函数
10.6 你注意到这个错误了吗?
10.7 整合所有内容
10.8 E-PVM调度器
- 理论
- 实践
10.9 完成Node实现
10.10 使用E-PVM调度器
第11章 实现任务的持久化存储
11.1 存储问题
11.2 Store接口
11.3 实现任务的内存存储
11.4 实现任务事件的内存存储
11.5 重构管理器以使用新的内存存储
11.6 重构工作节点
11.7 整合所有内容
11.8 引入BoltDB
11.9 实现持久化任务存储
11.10 实现持久化任务事件存储
11.11 用持久化存储替换内存存储
第五部分 命令行界面(CLI,Command-Line Interface)
第12章 构建命令行界面
12.1 命令行界面的核心组件
12.2 介绍Cobra框架
12.3 设置我们的Cobra应用程序
12.4 理解新的main.go
12.5 理解root.go
12.6 实现worker命令
12.7 实现manager命令
12.8 实现run命令
12.9 实现stop命令
12.10 实现status命令
12.11 实现node命令
第13章 接下来做什么?
13.1 研究Kubernetes及相关工具
13.2 管理器 - 工作节点模式和工作流系统
13.3 管理器 - 工作节点模式和集成系统
13.4 结束语
附录 环境搭建
#
如果你想阅读这个专栏,请移步我的知识星球,加入星球后,看置顶帖子即可阅读。
小方说服务器开发知识星球详细介绍点击这里。
如果你还不是球友,可以通过下面的优惠券扫码加入(立即优惠40):
老球友续费扫码如下(半价基础上再优惠20):
推荐阅读
-
写给学历不好但想毕业开个好头的你
-
《用C++17从零开发一个调试器》新专栏上线
-
《Linux 5.x内核开发与调试 完全指南》 专栏已上线
-
《C++20完全指南》发布于cppguide.cn
-
使用 C++20 从零构建一个完整的低延迟交易系统
-
用C/C++从零写一个C语言编译器
-
Go项目实战:使用Go从零开发一个解释器
-
Go项目实战:使用Go从零开发一个编译器
-
交易系统开发岗位求职与面试指南
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:CppGuide 《Go项目实战:用Go从零写一个编排器(类Kubernetes)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论