File tree 4 files changed +1081
-52
lines changed
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 中更新一个
28
28
29
29
### 容器(Container)
30
30
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] 保存容器为镜像
49
40
50
41
### 卷(Volume)
51
42
52
- *
53
- - [x] 创建指定容量大小的 Volume
54
- *
55
- - [x] 删除 Volume
56
- *
57
- - [x] 扩缩容 Volume
43
+ - [x] 创建指定容量大小的 Volume
44
+ - [x] 删除 Volume
45
+ - [x] 扩缩容 Volume
58
46
59
47
### GPU
60
48
61
- *
62
- - [x] 查看 GPU 使用情况
49
+ - [x] 查看 GPU 使用情况
50
+
51
+ ### Port
52
+
53
+ - [x] 查看已使用的 Ports
63
54
64
55
## 快速开始
65
56
@@ -127,13 +118,18 @@ vim etc/config.yaml
127
118
* 创建 Volume 时生成版本号,默认为 0,当 Volume 被更新后,版本号+1。
128
119
129
120
程序关闭后,会将 VersionMap 写入 ETCD,当程序再次启动时,从 ETCD 中拉取数据并初始化。
121
+ * gpuScheduler:分配 GPU 资源的调度器,将容器使用 GPU 的占用情况保存到 gpuStatusMap。
122
+ * gpuStatusMap:
123
+ 维护服务器的 GPU 资源,当程序第一次启动时,调用 detect-gpu 获取全部的 GPU 资源,并初始化 gpuStatusMap,Key 为 GPU 的
124
+ UUID,Value 为 使用情况,0 代表未占用,1 代表已占用。
130
125
131
- * gpuStatusMap:
126
+ 程序关闭后,会将 gpuStatusMap 写入 ETCD,当程序再次启动时,从 ETCD 中拉取数据并初始化。
132
127
133
- 维护服务器的 GPU 资源,当程序第一次启动时,调用 detect-gpu 获取全部的 GPU 资源,并初始化 gpuStatusMap,Key 为 GPU 的
134
- UUID,Value 为 使用情况,0 代表未占用,1 代表已占用。
128
+ * portScheduler:分配 Port 资源的调度器,将容器使用的 Port 资源保存到 usedPortSet。
129
+ * usedPortSet:
130
+ 维护服务器的 Port 资源,已经被占用的 Port 会被加入到这个 Set。
135
131
136
- 程序关闭后,会将 gpuStatusMap 写入 ETCD,当程序再次启动时,从 ETCD 中拉取数据并初始化。
132
+ 程序关闭后,会将 usedPortSet 写入 ETCD,当程序再次启动时,从 ETCD 中拉取数据并初始化。
137
133
138
134
* docker:实际创建 Container、Volume等资源的组件,并安装了 NVIDIA Container Toolkit,拥有调度 GPU 的能力。
139
135
@@ -143,10 +139,10 @@ vim etc/config.yaml
143
139
* /apis/v1/containers
144
140
* /apis/v1/volumes
145
141
* /apis/v1/gpus/gpuStatusMapKey
142
+ * /apis/v1/ports/usedPortSetKey
146
143
* /apis/v1/versions/containerVersionMapKey
147
144
* /apis/v1/versions/volumeVersionMapKey
148
145
149
-
150
146
* dete-gpu:调用 go-nvml 的一个小工具,启动时会提供一个 HTTP 接口用于获取 GPU 信息。
151
147
152
148
### 架构图
Original file line number Diff line number Diff line change 1
1
## 接口示例文档
2
2
3
+ > ⚠️ ** 注意** :该文档为手写的示例文档,主要用于解释接口设计,最新版本的接口文档请导入[[ gpu-docker-api.openapi.json] ( gpu-docker-api.openapi.json )]
4
+
3
5
> ⚠️ ** 注意** :因为使用` RESTful ` 风格的 ` API ` 设计,所以请求接口中会存在 ` Path ` 参数,为了方便书写,例子中的` 请求接口 ` 中使用 ` {Param} ` 的方式来表示。同时会标注,本次请求中使用的 ` {Param} ` 的值
4
6
>
5
7
> ** 📢 关于 Volume 和 Container 的更改操作,如:**
You can’t perform that action at this time.
0 commit comments