Knative 是 Google 在 2018 的 Google Cloud Next 大會上發佈的一款基於 Kubernetes 的 Serverless 框架。Knative 一個很重要的目標就是制定雲原生、跨平臺的 Serverless 編排標準。Knative 是經過整合容器構建(或者函數)、工做負載管理(和動態擴縮)以及事件模型這三者來實現的這一 Serverless 標準。Knative 社區的主要貢獻者有 Google、Pivotal、IBM、Red Hat。可見其陣容強大, CloudFoundry、OpenShift 這些 PAAS 提供商都在積極的參與 Knative 的建設。架構
在 Knative 以前社區已經有不少 Serverless 解決方案,以下所示這些:框架
除了上面這些社區的開源解決方案之外各大雲廠商也都有各自的 FAAS 產品的實現好比:less
業務代碼部署到 Serverless 平臺上就離不開源碼的編譯、部署和事件的管理。然而不管是開源的解決方案仍是各公有云的 FAAS 產品你們的實現方式你們都各不相同,缺少統一的標準致使市場呈現碎片化。所以不管選擇哪個方案都面臨供應商綁定的風險。函數
沒有統一的標準、市場的碎片化這對雲廠商來講用戶 Serverless 上雲就比較困難,對於 PAAS 提供商來講很難作一個通用的 PAAS 平臺給用戶使用。基於這樣的背景 Google 牽頭聯合 Pivotal、IBM、Red Hat 等發起了 Knative 項目。ui
咱們看一下在 Knative 體系下各個角色的協做關係:阿里雲
做爲一個通用的 Serverless 框架 Knative 由三個核心組件組成:spa
Build 組件主要負責從代碼倉庫獲取源碼並編譯成鏡像和推送到鏡像倉庫。而且全部這些操做都是在 Kubernetes Pod 中進行的。設計
Eventing 組件針對 Serverless 事件驅動模式作了一套完整的設計。包括外部事件源的接入、事件註冊和訂閱、以及對事件的過濾等功能。事件模型能夠有效的解耦生產者和消費者的依賴關係。生產者能夠在消費者啓動以前產生事件,消費者也能夠在生產者啓動以前「監聽事件」。blog
Serving 組件的職責是管理工做負載以對外提供服務。對於 Knative Serving 組件最重要的特性就是自動伸縮的能力,目前伸縮邊界支持從 0 到無限大。Serving 還有一個比較重要的功能就是灰度發佈能力。事件
Knative 雖然是基於 Kubernetes 實現,不過這並不表明 Kubernetes 的全部功能都能在 Knative 中使用。由於 Knative 針對 Serverless 場景作了專門的設計,如一個 Pod 中只能有一個 Container,一個 Container 只能有一個 Port 等。具體這些詳細的內容咱們會在後續的文章中陸續介紹。
Knative 一方面基於 Kubernetes 實現 Serverless 編排,另一方面 Knative 還基於 Istio 實現服務的接入、服務路由的管理以及度發佈等功能。Knative 是在已有的雲原生基礎之上構建的,有很好的社區基礎。Knative 一經開源就獲得了你們的追捧,其中的主要原因有:
完備的 Serverless 模型設計:和以前的 Serverless 解決方案相比 Knative 各方面的設計更加完備。好比:
關於 Knative 出現的背景、要解決的問題、核心概念以及其優點就介紹到這裏,後續咱們會有一系列的文章由淺入深的來介紹 Knative 的使用以及剖析其內部實現。
原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。