首页 公告 项目 RSS

树莓派上安装openfaas和初体验

July 22, 2020 本文有 1263 个字 需要花费 3 分钟阅读

什么是openfaas

openfaas 是一款开源的faas框架,什么是faas,faas是Function as a Service的缩写可以理解为功能服务化,FaaS提供了一种比微服务更加服务碎片化的软件架构范式,可以让开发更关注代码开发逻辑,而不需要关注代码架构。openfaas可以在k8s上运行也可以在swarm集群上运行

实验环境

两个安装着raspbian的树莓派AB

安装docker容器

这个我就不再详细讲了,很简单,使用下面命令安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

两个树莓派都要安装

初始化swarm集群

两条命令

在树莓派A中启动集群

docker swarm init

之后把把树莓派B加入到树莓派A master节点中

docker swarm join --token SWMTKN-1-1vpekrn4tldy8b2b80qgni5ns8ggk3y3lsm022q6b63szhoohg-djfwtkhfb2ileh3fulqo8rgot 10.10.10.108:2377

接着在A节点中输入

docker node ls

如果有两个节点,说明集群初始化成功

安装openfaas

这个也很简单

首先在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来验证是否安装成功

web 界面初体验

刚才说过了,我们可以使用openfaas提供的web界面来操作openfaas,在浏览器中输入你的swarm任何一个节点的ip加端口8080

输入账号admin和刚才的密码登录

之后我们点击deploy new function来尝试部署一个function,比如我部署的是nodeinfo这个function,接着点击nodeinfo这个function,我们可以看到下面这些信息

在这里你可以修改这个function的副本,可以看到这个function的执行次数,还可以点击url去访问他,点击invoke调用这个function

cli初体验

首先使用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提供的实例。

欢迎关注我的博客www.bboy.app

Have Fun