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

Serverless發表於2021-11-11
簡介:Kubeless 是基於 Kubernetes 的原生無伺服器框架。其允許使用者部署少量的程式碼(函式),而無須擔心底層架構。

快速搭建 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

建立成功後如圖所示

 title=

安裝和配置 Kubeless

檢視基本資訊:

kubectl get pods -n kubeless

相關 Pod 資訊如圖所示

 title=

檢視 Kubeless 相關 Pod

檢視 Deployment 資訊:

kubectl get deployment -n kubeless

其相關資訊如圖所示
 title=檢視 Kubeless Deployment 相關資訊

檢視 customresourcedefinition 資訊:

kubectl get customresourcedefinition

其相關資訊如圖所示

 title=

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

具體如圖所示

 title=使用 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

函式列表如圖所示

 title=

檢視函式列表

檢視例項函式:

./bundles/kubeless_linux-amd64/kubeless function ls

函式狀態如圖所示
 title=

觸發函式:

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

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

 title=

檢視例項中輸出的日誌,如圖所示

 title=

在例項中檢視日誌

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

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

版權宣告:本文內容由阿里雲實名註冊使用者自發貢獻,版權歸原作者所有,阿里雲開發者社群不擁有其著作權,亦不承擔相應法律責任。具體規則請檢視《阿里雲開發者社群使用者服務協議》和《阿里雲開發者社群智慧財產權保護指引》。如果您發現本社群中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社群將立刻刪除涉嫌侵權內容。

相關文章