📄️ 项目概述
2023年《SE3356 云操作系统设计与实践》课程第一小组项目,简易的Kubernetes容器编排工具,通过go语言实现。
📄️ 答辩问题解释
答辩问题的解释
📄️ 项目管理
项目管理
📄️ 组件详情
项目组件的详情
📄️ Pod抽象实现
Pod抽象
📄️ Service抽象实现
- 在Kubernetes中,应用在集群中作为一个或多个Pod运行, Service则是一种暴露网络应用的方法。在我们的设计里,Service被设计为一个apiObject, 用户可以通过 Kubectl apply Servicefile.yaml 的声明式的方法创建一个Service。
📄️ DNS与转发
为了实现通过域名直接访问minik8s上service的功能,我们需要实现DNS与转发功能。这一部分由DNSController与Kubeproxy协作完成。
📄️ ReplicaSet和AutoScale实现
ReplicaSet抽象
📄️ GPU任务
GPU Job
📄️ Serverless实现
Serveless功能点主要实现了两个抽象:Function和Workflow抽象,Function对应的是用户自己定义的python函数,而Workflow对应的是讲若干个Funcion组合起来,组成的一个工作流。工作流支持判断节点对于输出的结果进行判断,也支持路径的二分叉。
📄️ 容错
我们的容错性体现在以下两个方面
📄️ API-Server接口表
API Server是minik8s控制平面的核心。主要负责和ETCD存贮打交道,并提供一些核心的APIObject的API,供其他组件使用。在设计API Server的时候,我们主要考虑了两个特性,一个是状态和期望分离的情况,另外一个是Etcd的路径和API分离。