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