趣談健康 · 程式 ·

玩轉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是目前流行的FaaS開源項目之一,目前可以支持多

下面我們實戰安裝使用一些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.jsmodule.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 helloHello, world!

可以看到fission會自動拉起容器執行函數。

# kubectl get pods -n fission-functionNAME READY STATUS RESTARTS AGEpoolmgr-nodejs-default-13182-6488cc45f-jm9vp 2/2 Running 0 2mpoolmgr-nodejs-default-13182-6488cc45f-p6vj6 2/2 Running 0 2m
聲明:文章觀點僅代表作者本人,PTTZH僅提供信息發布平台存儲空間服務。
喔!快樂的時光竟然這麼快就過⋯
繼續其他精彩內容吧!
more