on是一个Serverless开源框架。可以看看它都干了啥。
Fission是基于Kubernetes的,而Kubernetes是基于Docker的容器集群管理系统。
Kubernetes的内容太丰富,简单说来,实体对象有若干节点(Node)包含若干Pod,Pod又包含若干容器(Container),通过Pod上的标签(Label)组合成服务(Service)。
Master包含如下组件:
- apiserver:作为kubernetes系统的入口,封装了核心对象的增删改查操作。它维护的REST对象将持久化到etcd。
- etcd:分布式强一致性的key/value存储
- scheduler:负责集群的资源调度,为新建的pod分配机器。
- controller-manager:负责执行各种控制器,目前有两类:
- endpoint-controller:定期关联service和pod(关联信息由endpoint对象维护),保证service到pod的映射总是最新的。
- replication-controller:定期关联replicationController和pod,保证replicationController定义的复制数量与实际运行pod的数量总是一致的。
Slave Node(称为Minion)包含如下组件:
- kubelet:负责管控docker容器,如启动/停止、监控运行状态等。它会定期从etcd获取分配到本机的pod,并根据pod信息启动或停止相应的容器。同时,它也会接收apiserver的HTTP请求,汇报pod的运行状态。
- proxy:负责为pod提供代理。它会定期从etcd获取所有的service,并根据service信息创建代理。当某个客户pod要访问其他pod时,访问请求会经过本机proxy做转发。
- docker:docker容器引擎
Fission简单说来,就是一个Web应用,Go语言编写,使用gorilla框架。不过它的模板引擎替换成了Kubernetes中的Service。使用k8s.io/client-go/kubernetes接口来操控(k8s就是Kubernetes)。
|