Serverless 工程实践 | 快速搭建 Kubeless 平台
快速搭建 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 服务的创建:
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
查看 Kubeless 相关 Pod 信息如图所示。
查看 Deployment 信息:
kubectl get deployment -n kubeless
查看 Kubeless Deployment 相关信息如图所示。
查看 customresourcedefinition 信息:
kubectl get customresourcedefinition
查看 customresourcedefinition 信息其相关信息如图所示。
下载命令行工具
下载 Kubeless 工具,并解压:
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']
部署项目:
./bundles/kubeless_linux-amd64/kubeless function deploy hello-world --runtimepython3.6 --from-file helloworld.py --handler helloworld.hello
部署成功之后,查看项目信息:
kubectl get functions
函数列表如图所示。
查看实例函数:
./bundles/kubeless_linux-amd64/kubeless function ls
函数状态如图所示。
查看函数状态触发函数:
./bundles/kubeless_linux-amd64/kubeless function call hello-world --data 'Helloworld!'
触发完成之后,看到输出结果:
查看实例中输出的日志,如图所示。
在实例中查看日志至此,我们在 Kubernetes 集群上成功地创建了 Kubeless 服务,并顺利地体验了 Kubeless 版的 Hello World 实现。
评论