天天看點

Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 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      

建立成功後如圖所示

Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 Kubeless 平台

安裝和配置 Kubeless

檢視基本資訊:

kubectl get pods -n kubeless      

相關 Pod 資訊如圖所示

Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 Kubeless 平台

檢視 Kubeless 相關 Pod

檢視 Deployment 資訊:

kubectl get deployment -n kubeless      

其相關資訊如圖所示

Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 Kubeless 平台

檢視 Kubeless Deployment 相關資訊

檢視 customresourcedefinition 資訊:

kubectl get customresourcedefinition      
Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 Kubeless 平台

檢視 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      

具體如圖所示

Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 Kubeless 平台

使用 Kubeless 指令行工具

體驗測試

建立測試代碼 helloworld.py :

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

部署項目:

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

部署成功之後,檢視項目資訊:

kubectl get functions      

函數清單如圖所示

Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 Kubeless 平台

檢視函數清單

檢視執行個體函數:

./bundles/kubeless_linux-amd64/kubeless function ls      

函數狀态如圖所示

Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 Kubeless 平台

觸發函數:

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

觸發完成之後,看到輸出結果:

Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 Kubeless 平台

檢視執行個體中輸出的日志,如圖所示

Serverless 工程實踐 | 快速搭建 Kubeless 平台快速搭建 Kubeless 平台

在執行個體中檢視日志

至此,我們在 Kubernetes 叢集上成功地建立了 Kubeless 服務,并順利地體驗了 Kubeless 版的 Hello World 實作。

本文整理自《Serverless 工程實踐 從入門到進階》,關注 Serverless 公衆号,即可免費閱讀部分章節!