博客 / 詳情

返回

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

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事件驅動模式做了一套完整的設計,包括外部事件源的接入、事件註冊、訂閲以及事件過濾等功能。事件模型可以有效地解耦生產者和消費者的依賴關係。生產者可以在消費者啓動之前生成事件,消費者也可以在生產者啓動之前監聽事件。

image.png

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

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

Knative部署

本節將會以在阿里雲部署Kantive服務為例,詳細説明如何部署Knative相關服務。
首先,登錄到容器服務管理控制枱,如圖所示為阿里雲容器服務管理控制枱。
image.png

如沒有集羣,可以先選擇創建集羣,如圖所示為配置與創建集羣。

image.png

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

image.png

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

image.png

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

image.png

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

體驗測試


首先需要創建一個EIP,並將其綁定到API Server服務上,如圖所示為API Server綁定EIP。
image.png

完成之後,進行Serverless應用的測試。選擇應用中的“Kantive應用”,並且在服務管理中選擇“使用模板創建”,如圖快速創建示例應用所示。

image.png

創建完成之後,可以看到控制枱已經出現一個Serverless應用,如圖所示為示例應用創建成功。

image.png

此時,我們可以點擊應用名稱查看該應用的詳情,如圖所示為查看示例應用詳情。

image.png

為了便於測試,可以在本地設置Host:

101.200.87.158 helloworld-go.default.example.com

設置完成之後,在瀏覽器中打開系統分配的域名,可以看到已經輸出預期的結果,如圖所示:瀏覽器測試示例應用。
image.png

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

此時,我們還可以通過CloudShell進行集羣的管理等。在集羣列表頁面,選擇通過CloudShell進行管理,如圖集羣管理列表所示。
image.png

通過CloudShell管理已創建的集羣,如圖CloudShell窗口。

image.png

執行指令:

kubectl get knative

可以看到,剛部署的Knative應用,如圖CloudShell查看Knative應用所示。
image.png

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.