Serverless 工程实践|快速搭建 Kubeless 平台

网络
Kubeless 是基于 Kubernetes 的原生无服务器框架。其允许用户部署少量的代码(函数),而无须担心底层架构。它被部署在 Kubernetes 集群之上,并充分利用 Kubernetes 的特性及资源类型,可以克隆 AWS Lambda、Azure Functions、Google Cloud Functions 上的内容。

快速搭建 Kubeless 平台

Kubeless 简介

Kubeless 是基于 Kubernetes 的原生无服务器框架。其允许用户部署少量的代码(函数),而无须担心底层架构。它被部署在 Kubernetes 集群之上,并充分利用 Kubernetes 的特性及资源类型,可以克隆 AWS Lambda、Azure Functions、Google Cloud Functions 上的内容。

Kubeless 主要特点可以总结为以下几个方面。

支持 Python、Node.js、Ruby、PHP、Go、.NET、Ballerina 语言编写和自定义运行时。
Kubeless CLI 符合 AWS Lambda CLI。
事件触发器使用 Kafka 消息系统和 HTTP 触发器。
Prometheus 默认监视函数的调用和延时。
支持 Serverless 框架插件。

由于 Kubeless 的功能特性是建立在 Kubernetes 之上的,因此对于熟悉 Kubernetes 的人来说非常容易部署 Kubeless。其主要实现是将用户编写的函数在 Kubernetes 中转变为 CRD(Custom Resource Definition,自定义资源),并以容器的方式运行在集群中。

Kubeless 部署

在已有的 Kubernetes 集群上进行 Kubeless 服务的创建:

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

创建成功后如图所示

安装和配置 Kubeless

查看基本信息:

kubectl get pods -n kubeless

相关 Pod 信息如图所示

查看 Kubeless 相关 Pod

查看 Deployment 信息:

kubectl get deployment -n kubeless

其相关信息如图所示

查看 Kubeless Deployment 相关信息

查看 customresourcedefinition 信息:

kubectl get customresourcedefinition

其相关信息如图所示

查看 customresourcedefinition 信息

下载命令行工具

下载 Kubeless 工具,并解压:

  1. export OS=$(uname -s| tr '[:upper:]' '[:lower:]')curl -OL https://github.com/kubeless/kubeless/releases/download/$RELEASE/kubeless_   $OS-amd64.zipunzip kubeless_$OS-amd64.zip 

解压之后查看:

./bundles/kubeless_linux-amd64/kubeless

具体如图所示

使用 Kubeless 命令行工具

体验测试

创建测试代码 helloworld.py :

def hello(event, context): print(event) return event['data']

部署项目:

  1. ./bundles/kubeless_linux-amd64/kubeless function deploy hello-world --runtime   python3.6 --from-file helloworld.py --handler helloworld.hello 

部署成功之后,查看项目信息:

kubectl get functions

函数列表如图所示

查看函数列表

查看实例函数:

./bundles/kubeless_linux-amd64/kubeless function ls

函数状态如图所示

触发函数:

  1. ./bundles/kubeless_linux-amd64/kubeless function call hello-world --data 'Hello   world!' 

触发完成之后,看到输出结果:

查看实例中输出的日志,如图所示

在实例中查看日志

至此,我们在 Kubernetes 集群上成功地创建了 Kubeless 服务,并顺利地体验了 Kubeless 版的 Hello World 实现。

责任编辑:梁菲 来源: 阿里云云栖号
相关推荐

2021-10-13 09:45:54

Serverless 应用调试

2021-09-18 10:23:43

Serverless

2021-09-08 10:12:39

Serverless 云计算

2021-09-06 16:00:39

Serverless当当Knative

2010-12-08 09:03:40

SQLiteAndroid

2017-05-29 08:18:11

Serverless架构软件系统

2021-10-15 10:00:31

Serverless Knative

2023-08-03 07:35:10

kubernetes云原生

2020-11-20 08:15:40

Grafana + P

2009-09-23 15:19:35

互联网

2018-07-19 10:35:12

机器学习数据平台

2018-08-03 15:47:00

iOS框架开发

2021-01-14 09:13:49

前端趋势Serverless

2023-03-31 11:38:01

平台研发团队工程

2021-08-06 06:44:01

Serverless无服务器计算云服务

2020-05-09 09:04:23

Serverless运维测试

2010-11-25 16:18:47

2020-06-18 14:20:52

零代码开发明道云

2021-10-19 10:52:06

Serverless阿里云

2019-03-14 11:02:21

Serverless前端工程师Ajax
点赞
收藏

51CTO技术栈公众号