fission sv(玩转FaaS:fission入门实战)

fission是目前流行的FaaS开源项目之一,目前可以支持多种触发如HTTP调用、定时触发以及MQ消息触发。而且还支持多语言如Java、Go、Python。

Fission 是一个构建在 Kubernetes 之上的 开源FaaS框架。Fission 利用Kubernetes 集群管理、调度、网络管理等,将容器编排功能留给 Kubernetes,而 Fission 就专注于 FaaS 特性。Fission通过函数轻松的在 Kubernetes 上创建服务。Fission工作在源码级别函数和抽象的容器镜像之上,简化了 Kubernetes 的学习曲线,让你不用深入了解 Kubernetes 就能创建出有用的服务。
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

安装fission

使用helm安装fission。

# export FISSION_NAMESPACE="fission" # kubectl create namespace $FISSION_NAMESPACE # kubectl create -k "github.com/fission/fission/crds/v1?ref=1.13.0" # helm repo add fission-charts https://fission.github.io/fission-charts/ # helm repo update # helm install --version 1.13.0 --namespace $FISSION_NAMESPACE fission fission-charts/fission-all

安装fission命令行工具

# curl -Lo fission https://github.com/fission/fission/releases/download/1.13.0/fission-1.13.0-linux-amd64 && chmod +x fission && sudo mv fission /usr/local/bin/测试fission

我们创建一个函数测试一下fission。

创建一个nodejs的运行环境 # fission env create --name nodejs --image fission/node-env:latest 编写一个测试函数 # cat hello.js module.exports = async function(context) { return { status: 200, body: "hello, world!n" }; } # 创建函数,使用上面创建的运行环境 # fission function create --name hello --env nodejs --code hello.js #测试函数 # fission function test --name hello Hello, world!

可以看到fission会自动拉起容器执行函数。

# kubectl get pods -n fission-function NAME READY STATUS RESTARTS AGE poolmgr-nodejs-default-13182-6488cc45f-jm9vp 2/2 Running 0 2m poolmgr-nodejs-default-13182-6488cc45f-p6vj6 2/2 Running 0 2m

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友