openfaas 是一款開源的faas框架,什麼是faas,faas是Function as a Service的縮寫能夠理解爲功能服務化,FaaS提供了一種比微服務更加服務碎片化的軟件架構範式,可讓開發更關注代碼開發邏輯,而不須要關注代碼架構。openfaas能夠在k8s上運行也能夠在swarm集羣上運行node
兩個安裝着raspbian的樹莓派ABlinux
這個我就再也不詳細講了,很簡單,使用下面命令安裝git
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
github
兩個樹莓派都要安裝web
兩條命令docker
在樹莓派A中啓動集羣json
docker swarm init
瀏覽器
以後把把樹莓派B加入到樹莓派A master節點中bash
docker swarm join --token SWMTKN-1-1vpekrn4tldy8b2b80qgni5ns8ggk3y3lsm022q6b63szhoohg-djfwtkhfb2ileh3fulqo8rgot 10.10.10.108:2377
架構
接着在A節點中輸入
docker node ls
若是有兩個節點,說明集羣初始化成功
這個也很簡單
首先在docker swarm master節點中執行
git clone https://github.com/openfaas/faas && \
cd faas && \
./deploy_stack.sh
複製代碼
執行完成以後就安裝成功了
默認集羣的帳號是admin
密碼在安裝完成時候會有一串祕鑰
若是你安裝完成以後沒注意這串祕鑰也沒有關係,使用下面的方式既可找回
docker exec -it func_faas-swarm.1.sapakfa1baiaf3pqwwrm6xakx /bin/sh
以後查看下面這個文件就能夠了
cat /run/secrets/basic-auth-password
最後咱們安裝faas-cli,faas-cli是控制openfaas的一個cli工具,咱們除了能夠在openfaas提供的web界面上操做openfaas之外,還可使用這個cli工具
curl -sL https://cli.openfaas.com | sudo sh
安裝完成以後再命令行中輸入faas
來驗證是否安裝成功
剛纔說過了,咱們可使用openfaas提供的web界面來操做openfaas,在瀏覽器中輸入你的swarm任何一個節點的ip加端口8080
輸入帳號admin和剛纔的密碼登陸
以後咱們點擊deploy new function來嘗試部署一個function,好比我部署的是nodeinfo這個function,接着點擊nodeinfo這個function,咱們能夠看到下面這些信息
在這裏你能夠修改這個function的副本,能夠看到這個function的執行次數,還能夠點擊url去訪問他,點擊invoke調用這個function
首先使用faas這個命令咱們要登陸到openfaas中
faas login --password 9e3c4697e48463fd215ed07203a0aa4fab2a834b58262c65a81b51d2d21a92d3
以後咱們查看已經部署了的function
faas list
➜ ~ faas list
Function Invocations Replicas
youtube-dl 7 1
nodeinfo 2 1
nslookup 0 1
複製代碼
以後咱們執行nodeinfo這個function
faas-cli invoke nodeinfo
這裏會顯示
➜ ~ faas-cli invoke nodeinfo
Reading from STDIN - hit (Control + D) to stop.
複製代碼
由於這個function咱們不須要任何的參數,因此咱們只須要輸入Control + D就能夠成功的執行這個function
Hostname: 870aa299570a
Platform: linux
Arch: arm
CPU count: 4
Uptime: 111863
複製代碼
或者咱們執行下面的命令也能夠達到相同的效果
echo "" | faas invoke nodeinfo
➜ ~ echo "" | faas invoke nodeinfo
Hostname: cc2d291d748c
Platform: linux
Arch: arm
CPU count: 4
Uptime: 149743
複製代碼
接着咱們刪除nodeinfo這個function
faas remove nodeinfo
建立這個function
faas store deploy NodeInfo -u https://raw.githubusercontent.com/openfaas/store/master/store-armhf.json
我解釋下我爲何要這麼寫,由於咱們是在樹莓派下進行操做,因此咱們全部的軟件都要armhf架構的,若是你直接執行
faas store deploy NodeInfo
可能會下載到x86架構的鏡像,因此咱們要指定store的地址,而這個store是openfaas提供的實例。
歡迎關注Bboysoul的博客www.bboysoul.com
Have Fun