Fission介绍
Fission 是一个构建在 Kubernetes 之上的 FaaS框架。Fission 利用Kubernetes 集群管理、调度、网络管理等,将容器编排功能留给 Kubernetes,而 Fission 就专注于 FaaS 特性。Fission通过函数轻松的在 Kubernetes 上创建服务。Fission工作在源码级别函数和抽象的容器镜像之上,简化了 Kubernetes 的学习曲线,让你不用深入了解 Kubernetes 就能创建出有用的服务。Fission架构
Fission 被设计为一系列的微服务。Controller 负责追踪函数、HTTP 路由、事件触发器和环境镜像。poolmgr 负责管理空闲的环境容器池、将函数加载到这些容器当中、以及杀死空闲的函数实例。Router 接收 HTTP 请求,并将他们路由到函数实例上,如果需要会向 poolmgr 请求新的实例。
Controller 提供 Fission API,所有其他组件通过关注 Controller 来更新。Router 被暴露为 Kubernetes 的服务,可能是 LoadBalancer 类型或 NodePort 类型,依赖于 Kubernetes 集群在哪里托管。
当 Router 获得请求,它会查找缓存,看是否有一个路由过去的服务。如果没有,它会查找匹配请求的函数,并且向 poolmgr 请求一个新的实例。poolmgr 有一个空闲 pods 池,它会选择一个 pod,将函数加载进去(将请求发送到 pod 的容器中),并将 pod 地址返回给 Router。Router 将请求代理到这个pod。这个 pod 也会被缓存给随后的请求,如果空闲了好几分钟,那就会被杀掉。
Fission部署
本文部署的是Fission 0.7.2版本,环境采用的是Centos7。Fission是基于Kubernetes的,所以你需要部署一套Kubernetes,本文采用的是Kubernetes1.7.6版本。
Fission官方提供了Helm的安装包,所以需要先安装Helm。