初識 Knative:跨平臺的 Serverless 編排框架

01 Knative 是什麼

Knative 是 Google 在 2018 的 Google Cloud Next 大會上發佈的一款基於 Kubernetes 的 Serverless 框架。Knative 一個很重要的目標就是制定雲原生、跨平臺的 Serverless 編排標準。Knative 是通過整合容器構建(或者函數)、工作負載管理(和動態擴縮)以及事件模型這三者來實現的這一 Serverless 標準。

Knative 社區的主要貢獻者有 Google、Pivotal、IBM、Red Hat。可見其陣容強大, CloudFoundry、OpenShift 這些 PAAS 提供商都在積極的參與 Knative 的建設。

02 Knative 出現的背景

在 Knative 之前社區已經有很多 Serverless 解決方案,如下所示這些:

  • kubeless
  • Fission
  • OpenFaaS
  • Apache OpenWhisk

除了上面這些社區的開源解決方案以外各大雲廠商也都有各自的 FAAS 產品的實現比如:

  • AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions
  • 阿里雲的函數計算

業務代碼部署到 Serverless 平臺上就離不開源碼的編譯、部署和事件的管理。然而無論是開源的解決方案還是各公有云的 FAAS 產品,大家的實現方式都各不相同,缺乏統一的標準導致市場呈現碎片化。因此無論選擇哪一個方案都面臨供應商綁定的風險。

沒有統一的標準、市場的碎片化這對雲廠商來說用戶 Serverless 上雲就比較困難,對於 PAAS 提供商來說很難做一個通用的 PAAS 平臺給用戶使用。基於這樣的背景 Google 牽頭聯合 Pivotal、IBM、Red Hat 等發起了 Knative 項目。

我們看一下在 Knative 體系下各個角色的協作關係:

  • Developers

Serverless 服務的開發人員可以直接使用原生的 Kubernetes API 基於 Knative 部署 Serverless 服務

  • Contributors

主要是指社區的貢獻者

  • Operators

Knative 可以被集成到任何支持的環境中,比如:雲廠商、或者企業內部。目前 Knative 是基於 Kubernetes 來實現的,有 Kubernetes 的地方就可以部署 Knative

  • Users

終端用戶通過 Istio 網關訪問服務,或者通過事件系統觸發 Knative 中的 Serverless 服務

03 Knative 核心組件

作爲一個通用的 Serverless 框架 Knative 由三個核心組件組成:

  • Build:提供從源碼到鏡像的通用構建能力
  • Eventing:提供了事件的接入、觸發等一整套事件管理的能力
  • Serving:管理 Serverless 工作負載,可以和事件很好的結合並且提供了基於請求驅動的自動擴縮的能力,而且在沒有服務需要處理的時候可以縮容到零個實例

Build 組件主要負責從代碼倉庫獲取源碼並編譯成鏡像和推送到鏡像倉庫。並且所有這些操作都是在 Kubernetes Pod 中進行的。

Eventing 組件針對 Serverless 事件驅動模式做了一套完整的設計。包括外部事件源的接入、事件註冊和訂閱、以及對事件的過濾等功能。事件模型可以有效的解耦生產者和消費者的依賴關係。生產者可以在消費者啓動之前產生事件,消費者也可以在生產者啓動之前“監聽事件”。

Serving 組件的職責是管理工作負載以對外提供服務。對於 Knative Serving 組件最重要的特性就是自動伸縮的能力,目前伸縮邊界支持從 0 到無限大。Serving 還有一個比較重要的功能就是灰度發佈能力。

Knative 雖然是基於 Kubernetes 實現,不過這並不代表 Kubernetes 的所有功能都能在 Knative 中使用。因爲 Knative 針對 Serverless 場景做了專門的設計,比如一個 Pod 中只能有一個 Container,一個 Container 只能有一個 Port 等。具體這些詳細的內容我們會在後續的文章中陸續介紹。

04 Knative 的優勢

Knative 一方面基於 Kubernetes 實現 Serverless 編排,另外一方面 Knative 還基於 Istio 實現服務的接入、服務路由的管理以及灰度發佈等功能。Knative 是在已有的雲原生基礎之上構建的,有很好的社區基礎。Knative 一經開源就受到了大家的追捧,其中的主要緣由有:

  • Knative 的定位不是 PAAS 而是一個通用的 Serverless 框架,大家可以基於此框架構建自己的 Serverless PAAS
  • Knative 對於 Serverless 架構的設計是標準先行。比如之前的 FAAS 解決方案每一個都有一套自己的事件標準,相互之間無法通用。而 Knative 首先提出了 CloudEvent 這一標準,然後基於此標準進行設計
  • 完備的社區生態:Kubernetes、ServiceMesh 等社區都是 Knative 的支持者
  • 跨平臺:因爲 Knative 是構建在 Kubernetes 之上的,而 Kubernetes 在不同的雲廠商之間幾乎可以提供通用的標準。所以 Knative 也就實現了跨平臺的能力,沒有供應商綁定的風險
  • 完備的 Serverless 模型設計:和之前的 Serverless 解決方案相比 Knative 各方面的設計更加完備。比如:
    • 事件模型非常完備,有註冊、訂閱、以及外部事件系統的接入等等一整套的設計
    • 比如從源碼到鏡像的構建
    • 比如 Serving 可以做到按比例的灰度發佈

關於 Knative 出現的背景、要解決的問題、核心概念以及其優勢就介紹到這裏,後續我們會有一系列的文章由淺入深的來介紹 Knative 的使用以及剖析其內部實現。

作者簡介

阿里雲智能事業羣技術專家 冬島

本文轉載自公衆號阿里巴巴雲原生(ID:Alicloudnative)

原文鏈接

https://mp.weixin.qq.com/s/Lt_3WheDI93WbQbBdOULZw

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章