博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于K8S部署fission函数即服务
阅读量:6843 次
发布时间:2019-06-26

本文共 2932 字,大约阅读时间需要 9 分钟。

Fission简介

Fission 是一个类似AWS lamba的一个服务,其Github地址:

相似的同类产品有kubeless,knative,都是属于,其中可以在katacoda.com优先体验下。

相比kubeless在部署和使用上相对简单,而比较受关注的,还处于孵化阶段,目前暂没办法进行比较。
基于K8S部署fission函数即服务

Faas的优势

用户可以运行任意语言编写的代码

可以运行任意时间
可以在任何地方运行
利用已有服务或者第三方资源
几秒内完成执行

部署fission函数即服务

拉取相关docker镜像

{docker pull fission/fission-bundledocker pull fission/fetcherdocker pull fission/alpinecurldocker pull fission/pre-upgrade-checksdocker pull nats-streamingdocker pull fission/fluentddocker pull tutum/influxdbdocker pull fission/node-env}

部署fission

helm install --namespace fission --set serviceType=NodePort,routerServiceType=NodePort http://7j1x5e.com1.z0.glb.clouddn.com/fission-all-0.9.2.0.tgz

安装客户端

curl -Lo fission https://github.com/fission/fission/releases/download/0.9.2/fission-cli-linux && chmod +x fission && sudo mv fission /usr/local/bin/

创建node容器

fission env create --name nodejs --image fission/node-env

加载运行weather.js

wget https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/weather.js[root@master ~]# fission function create --name weather --env nodejs --code weather.jsfunction 'weather' created

创建js里面的函数

[root@master ~]#  fission route create --method POST --url /weather --function weathertrigger '222c1052-9c19-4e88-a544-a55bdaf18b99' created

测试函数

[root@master ~]# curl -qs -H "Content-Type: application/json" -X POST -d '{"location":"Sieteiglesias, Spain"}' http://127.0.0.1:31314/weather|jq{  "text": "It is 17 celsius degrees in Sieteiglesias, Spain and Partly Cloudy"}

测试国内的天气

[root@master ~]# curl -qs -H "Content-Type: application/json" -X POST -d '{"location":"xiamen, China"}' http://127.0.0.1:31314/weather|jq{  "text": "It is 28 celsius degrees in xiamen, China and Mostly Cloudy"}

来看下 weather.js

[root@master ~]# cat weather.js'use strict';const rp = require('request-promise-native');module.exports = async function (context) {    const stringBody = JSON.stringify(context.request.body);    const body = JSON.parse(stringBody);    const location = body.location;    if (!location) {        return {            status: 400,            body: {                text: 'You must provide a location.'            }        };    }    try {        const response = await rp(`https://query.yahooapis.com/v1/public/yql?q=select item.condition from weather.forecast where woeid in (select woeid from geo.places(1) where text="${location}") and u="c"&format=json`);        const condition = JSON.parse(response).query.results.channel.item.condition;        const text = condition.text;        const temperature = condition.temp;        return {            status: 200,            body: {                text: `It is ${temperature} celsius degrees in ${location} and ${text}`            },            headers: {                'Content-Type': 'application/json'            }        };    } catch (e) {        console.error(e);        return {            status: 500,            body: e        };    }}

转载于:https://blog.51cto.com/13922668/2159680

你可能感兴趣的文章
磁盘配额满与用户权限的更改
查看>>
ORACLE 数据类型
查看>>
KeyMob移动广告聚合平台为开发者提供最全面的保障
查看>>
钱sir 高数:一元函数积分学
查看>>
修改Windows server 2008远程桌面连接数量
查看>>
Excel文件导入异常-输入流无法识别
查看>>
我的友情链接
查看>>
CentOS6.4下YUM安装MySQL和JDK和Tomcat
查看>>
LVS解析及NAT、DR模型配置详解
查看>>
上期ctp期货API android 客户端
查看>>
puppet实战(一):文件同步+更改文件属性
查看>>
最简单的git部署方案
查看>>
js获取url参数值
查看>>
让MAC的终端显示颜色
查看>>
android开发-----message
查看>>
SVN分支/合并原理及最佳实践 (很实用,很不错哦)
查看>>
Hyper-V 3.0功能部署PART 8:计划故障转移
查看>>
Android--Button,ImageButton组件
查看>>
介绍MyBatis代码生成网站(六) --- SQL方法的选择
查看>>
2015年4月9日 大师 ▪ 计 (第四季) | VMware 技术支持日 上海站
查看>>