https://github.com/123shang60/image-load
在隔离环境k8s交付场景(无外网连接),通过s3存储动态为k8s节点load镜像
https://github.com/123shang60/image-load
docker-image k8s
Last synced: 5 months ago
JSON representation
在隔离环境k8s交付场景(无外网连接),通过s3存储动态为k8s节点load镜像
- Host: GitHub
- URL: https://github.com/123shang60/image-load
- Owner: 123shang60
- License: mit
- Created: 2021-09-20T03:21:38.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-10-05T10:44:09.000Z (over 4 years ago)
- Last Synced: 2024-11-15T04:37:37.862Z (over 1 year ago)
- Topics: docker-image, k8s
- Language: Go
- Homepage:
- Size: 65.4 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# image-load
## 功能
在隔离环境k8s交付场景(无外网连接),通过s3存储动态为k8s节点load镜像
## 架构
server 端:
1. 为 agent 提供注册中心
2. 提交下载导入请求
agent 端:
- 基于 `docker client` 实现 docker 镜像的自动导入
## 调用实例
基于 `image-load-agent.yml` `image-load-server.yml` 进行部署
预先将要加载的 docker 镜像导入到 minio 中
使用如下命令:
```bash
curl --location --request POST 'localhost:8080/load' \
--header 'Content-Type: application/json' \
--data-raw '{
"access_key": "admin",
"secret_key": "123456789",
"end_point": "192.168.31.10:9000",
"bucket": "test",
"item": "alpine.tar"
}'
```
一段时间后执行完毕,得到结果:
```json
[
{
"Name": "agent-local",
"Code": 200,
"Data": "ok!"
}
]
```
## agent 列表获取
```bash
curl --location --request GET '127.0.0.1:8080/nodelist'
```
结果示例:
```json
{
"agent-local": {
"Object": {
"name": "agent-local",
"addr": "127.0.0.1",
"port": "8081"
},
"Expiration": 1632124614618188000
}
}
```
## 已知问题
1. 要求全部 k8s 节点的 docker api 版本必须完全一致,否则 agent 无法工作
## 改进方向
1. 服务内部通信应该基于 websocket 等长连接进行
2. 代码优化,部分重复代码重构