天天看點

Serverless 工程實踐 | 零基礎上手 Knative 應用

Knative 是一款基于 Kubernetes 的 Serverless 架構。其目标是制定雲原生、跨平台的 Serverless 編排标準。本文将介紹零基礎的同學如何上手 Knative 應用。

作者|劉宇

前言:Knative 是一款基于 Kubernetes 的 Serverless 架構。其目标是制定雲原生、跨平台的 Serverless 編排标準。

Knative 通過整合容器建構(或者函數)、工作負載管理(動态擴縮)以及事件模型這三者實作其 Serverless 标準。

在 Knative 體系架構下,各角色的協作關系如下圖所示。

開發者是指 Serverless 服務的開發人員可以直接使用原生 Kubernetes API 基于 Knative 部署 Serverless 服務。

貢獻者主要是指社群的貢獻者。

Knative 可以被內建到支援的環境中,例如雲廠商或者企業内部。目前,Knative 是基于Kubernetes來實作的,是以可以認為有 Kubernetes 的地方就可以部署 Knative。

使用者指終端使用者,其通過Istio網關通路服務或者事件系統觸發 Knative 中的 Serverless 服務。

作為一個通用的 Serverless 架構,Knative 由 3 個核心元件組成。

Tekton:提供從源碼到鏡像的通用建構能力。Tekton 元件主要負責從代碼倉庫擷取源碼并編譯成鏡像,推送到鏡像倉庫。所有這些操作都是在 Kubernetes Pod 中進行的。

Eventing:提供事件的接入、觸發等一整套事件管理能力。Eventing 元件針對 Serverless 事件驅動模式做了一套完整的設計,包括外部事件源的接入、事件注冊、訂閱以及事件過濾等功能。事件模型可以有效地解耦生産者和消費者的依賴關系。生産者可以在消費者啟動之前生成事件,消費者也可以在生産者啟動之前監聽事件。

Serverless 工程實踐 | 零基礎上手 Knative 應用

在 Knative 體系架構下各角色的協作關系

Serving:管理 Serverless 工作負載,可以和事件很好地結合,并且提供了基于請求驅動的自動伸縮能力,而且在沒有服務需要處理的時候可以縮容到零。Serving 元件的職責是管理工作負載以對外提供服務。Serving 元件最重要的特性就是自動伸縮的能力。目前,其伸縮邊界無限制。Serving 還具有灰階釋出能力。

本文将會以在阿裡雲部署 Kantive 服務為例,詳細說明如何部署 Knative 相關服務。首先,登入到容器服務管理控制台,如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

阿裡雲容器服務管理控制台

如沒有叢集,可以先選擇建立叢集,如下圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

配置與建立叢集

建立叢集比較緩慢,耐心等待叢集建立完成,成功之後如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

叢集建立成功示意圖

進入叢集之後,選擇左側的“應用”,找到 “Knative” 并點選“一鍵部署”,如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

建立 Knative 應用

稍等片刻,Knative 安裝完成之後,可以看到核心元件已經處于“已部署”狀态,如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

Knative 應用部署完成

至此,我們完成了 Knative 的部署。

首先需要建立一個 EIP,并将其綁定到 API Server 服務上,如下圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

圖為 API Server 綁定 EIP

完成之後,進行 Serverless 應用的測試。選擇應用中的 “Kantive 應用”,并且在服務管理中選擇“使用模闆建立”,如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

快速建立示例應用

建立完成之後,可以看到控制台已經出現一個 Serverless 應用,如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

示例應用建立成功

此時,我們可以點選應用名稱檢視該應用的詳情,如下圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

檢視示例應用詳情

為了便于測試,可以在本地設定 Host:

101.200.87.158 helloworld-go.default.example.com

設定完成之後,在浏覽器中打開系統配置設定的域名,可以看到已經輸出預期的結果,如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

浏覽器測試示例應用

至此,我們完成了一個基于 Knative 的 Serverless 應用的部署和測試。

此時,我們還可以通過 CloudShell 進行叢集的管理等。在叢集清單頁面,選擇通過 CloudShell 進行管理,如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

叢集管理清單

通過 CloudShell 管理已建立的叢集,如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

CloudShell 視窗

執行指令:

kubectl get knative

可以看到,剛部署的 Knative 應用,如圖所示。

Serverless 工程實踐 | 零基礎上手 Knative 應用

CloudShell 檢視 Knative 應用

關于作者:劉宇(江昱)國防科技大學電子資訊專業在讀博士,阿裡雲 Serverless 産品經理,阿裡雲 Serverless 雲布道師,CIO 學院特聘講師。

繼續閱讀