快速搭建 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 公衆号,即可免費閱讀部分章節!