Open KofClubs opened 2 years ago
类比 Kubernetes 把 pod 调度到 node 上,这个调度器将根据需求方对资源的要求,把服务部署到最优容器上。
资源定义文件可以类比 Kubernetes 对象,我将做大量简化。 例如下列资源定义文件,要求把名为 userdb 的服务部署到标签匹配 mysql 或 gorm 的容器并冗余部署2个副本,这个服务要求宿主机至少提供2 GB 存储空间,最好超过4 GB,另外,它将占用主机的 2022 端口。
name: userdb
kind: deploy
predicates:
matchLabels: [mysql, gorm]
storage: 2 GB
priorities:
storage: 4 GB
requirements:
container_port: 80
host_port: 2022
replicas: 2
调度器将选择最优的容器,根据这个服务的 Dockerfile
把服务部署上去。
选择器将根据资源定义文件的断言(predicates)选择符合要求的容器,打分器将对这些符合要求的容器根据资源定义文件的优先级(priorities)打分,最终把服务部署到分数最高的容器上。
我实现了容器对主机发布端口,支持这样的 YAML 文件,即 test/dao_2048.yml
:
name: dao-2048-test
kind: deploy
predicate:
repository: ghcr.io/daocloud/dao-2048
priority:
tag: 1.1.0-alpha.6
requirement:
host_port: 8080
container_port: 80
它表示部署(deploy
)名为 dao-2048-test
的服务,容器名必须是 ghcr.io/daocloud/dao-2048
,版本号最好是 1.1.0-alpha.6
,容器将暴露 80
端口,并发布到主机的 8080
端口。他跟运行下列命令是等效的:
$ docker run -d -p 8080:80 ghcr.io/daocloud/dao-2048:1.1.0-alpha.6
构建和运行方法如下:
$ go build main.go
$ ./main deploy -f test/dao_2048.yml
最终,运行 docker stop
停止容器。
@hillmoonbird @dongliangCai
@KofClubs @hillmoonbird 提供负载自主可控高性能区块链的容器基础设施,主要功能是: