File tree Expand file tree Collapse file tree 4 files changed +1081
-52
lines changed Expand file tree Collapse file tree 4 files changed +1081
-52
lines changed Original file line number Diff line number Diff line change @@ -28,38 +28,29 @@ foo-1 来代替 foo-0(foo-0 不会被删除),类似于 K8s 中更新一个
2828
2929### 容器(Container)
3030
31- *
32- - [x] 创建 GPU 容器
33- *
34- - [x] 创建无卡容器
35- *
36- - [x] 升降容器 GPU 配置
37- *
38- - [x] 升降容器 Volume 配置
39- *
40- - [x] 停止容器
41- *
42- - [x] 重启动容器
43- *
44- - [x] 在容器内部执行命令
45- *
46- - [x] 删除容器
47- *
48- - [x] 保存容器为镜像
31+ - [x] 创建 GPU 容器
32+ - [x] 创建无卡容器
33+ - [x] 升降容器 GPU 配置
34+ - [x] 升降容器 Volume 配置
35+ - [x] 停止容器
36+ - [x] 重启容器
37+ - [x] 在容器内部执行命令
38+ - [x] 删除容器
39+ - [x] 保存容器为镜像
4940
5041### 卷(Volume)
5142
52- *
53- - [x] 创建指定容量大小的 Volume
54- *
55- - [x] 删除 Volume
56- *
57- - [x] 扩缩容 Volume
43+ - [x] 创建指定容量大小的 Volume
44+ - [x] 删除 Volume
45+ - [x] 扩缩容 Volume
5846
5947### GPU
6048
61- *
62- - [x] 查看 GPU 使用情况
49+ - [x] 查看 GPU 使用情况
50+
51+ ### Port
52+
53+ - [x] 查看已使用的 Ports
6354
6455## 快速开始
6556
@@ -127,13 +118,18 @@ vim etc/config.yaml
127118 * 创建 Volume 时生成版本号,默认为 0,当 Volume 被更新后,版本号+1。
128119
129120 程序关闭后,会将 VersionMap 写入 ETCD,当程序再次启动时,从 ETCD 中拉取数据并初始化。
121+ * gpuScheduler:分配 GPU 资源的调度器,将容器使用 GPU 的占用情况保存到 gpuStatusMap。
122+ * gpuStatusMap:
123+ 维护服务器的 GPU 资源,当程序第一次启动时,调用 detect-gpu 获取全部的 GPU 资源,并初始化 gpuStatusMap,Key 为 GPU 的
124+ UUID,Value 为 使用情况,0 代表未占用,1 代表已占用。
130125
131- * gpuStatusMap:
126+ 程序关闭后,会将 gpuStatusMap 写入 ETCD,当程序再次启动时,从 ETCD 中拉取数据并初始化。
132127
133- 维护服务器的 GPU 资源,当程序第一次启动时,调用 detect-gpu 获取全部的 GPU 资源,并初始化 gpuStatusMap,Key 为 GPU 的
134- UUID,Value 为 使用情况,0 代表未占用,1 代表已占用。
128+ * portScheduler:分配 Port 资源的调度器,将容器使用的 Port 资源保存到 usedPortSet。
129+ * usedPortSet:
130+ 维护服务器的 Port 资源,已经被占用的 Port 会被加入到这个 Set。
135131
136- 程序关闭后,会将 gpuStatusMap 写入 ETCD,当程序再次启动时,从 ETCD 中拉取数据并初始化。
132+ 程序关闭后,会将 usedPortSet 写入 ETCD,当程序再次启动时,从 ETCD 中拉取数据并初始化。
137133
138134* docker:实际创建 Container、Volume等资源的组件,并安装了 NVIDIA Container Toolkit,拥有调度 GPU 的能力。
139135
@@ -143,10 +139,10 @@ vim etc/config.yaml
143139 * /apis/v1/containers
144140 * /apis/v1/volumes
145141 * /apis/v1/gpus/gpuStatusMapKey
142+ * /apis/v1/ports/usedPortSetKey
146143 * /apis/v1/versions/containerVersionMapKey
147144 * /apis/v1/versions/volumeVersionMapKey
148145
149-
150146* dete-gpu:调用 go-nvml 的一个小工具,启动时会提供一个 HTTP 接口用于获取 GPU 信息。
151147
152148### 架构图
Original file line number Diff line number Diff line change 11## 接口示例文档
22
3+ > ⚠️ ** 注意** :该文档为手写的示例文档,主要用于解释接口设计,最新版本的接口文档请导入[[ gpu-docker-api.openapi.json] ( gpu-docker-api.openapi.json )]
4+
35> ⚠️ ** 注意** :因为使用` RESTful ` 风格的 ` API ` 设计,所以请求接口中会存在 ` Path ` 参数,为了方便书写,例子中的` 请求接口 ` 中使用 ` {Param} ` 的方式来表示。同时会标注,本次请求中使用的 ` {Param} ` 的值
46>
57> ** 📢 关于 Volume 和 Container 的更改操作,如:**
You can’t perform that action at this time.
0 commit comments