背景
substrate是google开源的一个在k8s上高密度部署agent类工作负载的系统.
传统k8s使用方式使用agent的话,会导致资源的浪费,因为agent类工作负载可能存在空闲时间
substrate通过主动快照和自动恢复,来解决这个问题
仓库地址
github.com/agent-substrate/substrate
模块介绍
atenet
atenet dns
atenet dns作为一个dns控制器会和额外的coredns作为一个pod一起部署,而这个额外的coredns则负责实际的actors.resources.substrate.ate.dev后缀的域名解析
这个dns控制器,负责
1 配置k8s默认coredns的configmap的stubDomains到atenet dns这个svc对应的clusterip,来让actors.resources.substrate.ate.dev后缀的域名转发给atenet dns解析
2 配置这个额外的coredns对actors.resources.substrate.ate.dev后缀的域名解析到atenet router这个svc对应的clusterip
atenet router
作为envoy的ext proc,和envoy作为一个pod提供服务
收到对actor的请求后会请求ateapi的ResumeActor,从响应中提取ateom podip随后通过修改authority header将请求重定向到oteom podip
ateapi
核心控制面api服务,暴露用于管理actor和worker生命周期的grpc端点
atecontroller
调协WorkerPool/ActorTemplate的k8s控制器
atelet
节点级的daemonset,监督物理worker pod,协调快找,管理状态转移
atecontroller
ateom-gvisor/ateom-microvm
ateom-gvisor和ateom-microvm分别是gvisor和kata + cloud-hypervisor 在ateom service的实现
提供
1 RunWorkload
2 CheckpointWorkload
3 RestoreWorkload
kubectl-ate
kubectl的一个插件,用于快速创建actor,pause actor,resume actor等
使用步骤
1 create ns
2 create workerpool && ActorTemplate
3 kubectl ate create atespace(提前安装kubectl-ate)
4 kubectl ate create actor
5 测试
kubectl port-forward -n ate-system svc/atenet-router 8000:80
curl -X POST -H "Host: my-actor.myatespace.actors.resources.substrate.ate.dev" http://localhost:8000