基于Kubernetes的框架和应用系列之一:Kubernetes无服务方案kubeless

 

一、前言

云计算架构最新的一次演进应该是面向serverless(无服务架构)方向,几大世界级公有云厂商都提供了具有竞争力的产品:

  • AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions
  • 阿里云Function Compute

无服务架构将进一步降低云计算的接入门槛,降低对云计算使用者在基础设施技术栈层面的要求,创造真正的云原生的开发、部署、运营生态。

 

CNCF对于无服务架构的定义如下:

Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.

如下正是改定义所描述的无服务架构的三大特点:

根据文章《The Leading Open Source Serverless Solutions for Kubernetes》的描述,当前比较热门的基于Kubernetes的serverless方案如下:

uploading.4e448015.gif转存失败重新上传取消uploading.4e448015.gif转存失败重新上传取消serverless-on-kubernetes-2019-logos.pnguploading.4e448015.gif转存失败重新上传取消

其中Knative是Google押注的亲儿子。

下文在kubernetes安装kubeless来尝鲜基于容器云的无服务计算。

转载自https://blog.csdn.net/cloudvtech

 

二、kubeless的安装

2.1 kubeless基础

kubeless现在是bitnami驱动的产品,主要包括如下功能:

  • Support for Python, Node.js, Ruby, PHP, Golang, .NET, Ballerina and custom runtimes
  • CLI compliant with AWS Lambda CLI
  • Event triggers using Kafka messaging system and HTTP events
  • Prometheus monitoring of functions calls and function latency by default
  • Serverless Framework plugin

其架构如下:

Kubeless使用CRD提供function compute服务,kubeless controller监听CRD来启动POD运行on-demond的无服务计算请求所需的runtime并且将用户的function代码注入到runtime。

2.2 获取安装包

export RELEASE=$(curl -s https://api.github.com/repos/kubeless/kubeless/releases/latest | grep tag_name | cut -d '"' -f 4)

wget https://github.com/kubeless/kubeless/releases/download/$RELEASE/kubeless-$RELEASE.yaml

curl -OL https://github.com/kubeless/kubeless/releases/download/$RELEASE/kubeless_$OS-amd64.zip &&   unzip kubeless_$OS-amd64.zip

2.3 安装controller

kubectl create ns kubeless

kubectl apply -f kubeless-v1.0.0-alpha.8.yaml

[root@k8s-master-01 config]# kubectl get pods -n kubeless

NAME                                                                      READY     STATUS    RESTARTS   AGE

kubeless-controller-manager-66868fb689-cmv9c   3/3             Running    0                   1h

2.4 安装web UI

kubectl create -f https://raw.githubusercontent.com/kubeless/kubeless-ui/master/k8s.yaml

[root@k8s-master-01 config]# kubectl get pods -n kubeless

NAME                                           READY     STATUS    RESTARTS   AGE

kubeless-controller-manager-66868fb689-cmv9c   3/3       Running   0          1h

ui-6d868664c5-wc6cd                            2/2       Running   0          45m

转载自https://blog.csdn.net/cloudvtech

三、在kubeless运行无服务计算代码

 3.1 在本地编写代码pi.py

import math
def pi(event, context):
        print event
 	print '\nComputing Pi v.01\n'
 	
 	a = 1.0
 	b = 1.0/math.sqrt(2)
 	t = 1.0/4.0
 	p = 1.0
 		
 	for i in range(int(10)):
 		at = (a+b)/2
 		bt = math.sqrt(a*b)
 		tt = t - p*(a-at)**2
 		pt = 2*p
 		
 		a = at;b = bt;t = tt;p = pt
 		
 	my_pi = (a+b)**2/(4*t)
 	accuracy = 100*(math.pi-my_pi)/my_pi
 		
 	print "Pi is approximately: " + str(my_pi)
 	print "Accuracy with math.pi: " + str(accuracy)
 	return str(my_pi)

3.2 部署代码

./kubeless function deploy pi --runtime python2.7 --from-file  pi.py --handler pi.pi

kubectl get pod -o wide | grep ^pi

pi-75b9754485-vp47f                                1/1       Running                 0          11m       10.244.89.131    k8s-node-03   <none>

3.3 运行Faas

curl -L --data '1000' --header "Content-Type:application/txt" 10.244.89.131:8080/

3.14159265359

3.4 通过web UI查看

转载自https://blog.csdn.net/cloudvtech

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值