簡介: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
建立成功後如圖所示
安裝和配置 Kubeless
檢視基本資訊:
kubectl get pods -n kubeless
相關 Pod 資訊如圖所示
檢視 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 --runtime python3.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 'Hello world!'
觸發完成之後,看到輸出結果:
檢視例項中輸出的日誌,如圖所示
在例項中檢視日誌
至此,我們在 Kubernetes 叢集上成功地建立了 Kubeless 服務,並順利地體驗了 Kubeless 版的 Hello World 實現。
本文整理自《Serverless 工程實踐 從入門到進階》,關注 Serverless 公眾號,即可免費閱讀部分章節!
版權宣告:本文內容由阿里雲實名註冊使用者自發貢獻,版權歸原作者所有,阿里雲開發者社群不擁有其著作權,亦不承擔相應法律責任。具體規則請檢視《阿里雲開發者社群使用者服務協議》和《阿里雲開發者社群智慧財產權保護指引》。如果您發現本社群中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社群將立刻刪除涉嫌侵權內容。