91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何Knative中的Build、Serving 和 Eventing三大核心組件

發布時間:2021-11-22 16:45:43 來源:億速云 閱讀:197 作者:柒染 欄目:云計算

本篇文章給大家分享的是有關如何Knative中的Build、Serving 和 Eventing三大核心組件,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

如何Knative中的Build、Serving 和 Eventing三大核心組件

作者 | 阿里云智能事業群高級開發工程師 元毅

劃重點


初識 Knative:  跨平臺的 Serverless 編排框架 讓我們對于 Knative 有了初步了解,Knative 主要由 Build、Serving 和 Eventing 三大核心組件構成。Knative 正是依靠這三個核心組件,驅動著 Knative 這艘 Serverless 巨輪前行,本文就來分別介紹一下這三個核心組件。


如何Knative中的Build、Serving 和 Eventing三大核心組件

Build

Knative Build 是基于現有的 Kubernetes 能力之上,提供的一套標準化、可移植、可復用的容器鏡像構建方式。通過在 Kubernetes 上運行復雜的構建任務,Knative Build 使你不必再單獨開發和重復這些鏡像構建過程, 從而通過系統化、工程化的方式,減少了鏡像構建時間及成本。

Build 通過 Kubernetes 自定義資源定義(CRD)實現。 通過 Build 你可以自定義一個從運行到結束的構建流程。例如,可以使用 Knative Build 來獲取、構建和打包代碼。Build 具備以下功能:

  • 支持 Source 源掛載,目前支持的 Source 源包括:

    * git 代碼倉庫

    * 任意容器鏡像

  • 支持通過 BuildTemplate 創建可重復執行構建的模板

  • 支持 K8s ServiceAccount 身份驗證

典型的 Build 示意圖:

如何Knative中的Build、Serving 和 Eventing三大核心組件

雖然目前 Knative Build 并不提供完整的獨立 CI/CD 解決方案,但它卻提供了一個底層的構建模塊,用戶可單獨使用該構建模塊在大型系統中實現集成和利用。

如何Knative中的Build、Serving 和 Eventing三大核心組件

Serving

Knative 作為 Severless 框架最終是用來提供服務的, 那么 Knative Serving 應運而生。

Knative Serving 構建于 Kubernetes 和 Istio 之上,為  Serverless 應用提供部署和服務支持。其特性如下:

  • 快速部署 Serverless 容器

  • 支持自動擴縮容和縮至為 0 實例

  • 基于 Istio 組件,提供路由和網絡編程

  • 支持部署快照

Knative Serving 中定義了以下 CRD 資源:

  • Service: 自動管理工作負載整個生命周期。負責創建 Route、Configuration 以及 Revision 資源。通過 Service 可以指定路由流量使用最新的 Revision 還是固定的 Revision

  • Route:負責映射網絡端點到一個或多個 Revision。可以通過多種方式管理流量,包括灰度流量和重命名路由

  • Configuration: 負責保持 Deployment 的期望狀態,提供了代碼和配置之間清晰的分離,并遵循應用開發的 12 要素。修改一次 Configuration 產生一個 Revision

  • Revision:Revision 資源是對工作負載進行的每個修改的代碼和配置的時間點快照。Revision 是不可變對象,可以長期保留

資源關系圖:

如何Knative中的Build、Serving 和 Eventing三大核心組件


如何Knative中的Build、Serving 和 Eventing三大核心組件

Eventing

Knative Eventing 旨在滿足云原生開發中通用需求, 以提供可組合的方式綁定事件源和事件消費者。其設計目標:

  • Knative Eventing 提供的服務是松散耦合,可獨立開發和部署。服務可跨平臺使用(如 Kubernetes, VMs, SaaS 或者 FaaS)

  • 事件的生產者和事件的消費者是相互獨立的。任何事件的生產者(事件源)可以先于事件的消費者監聽之前產生事件,同樣事件的消費者可以先于事件產生之前監聽事件

  • 支持第三方的服務對接該 Eventing 系統

  • 確保跨服務的互操作性

事件處理示意圖:

如何Knative中的Build、Serving 和 Eventing三大核心組件

如上圖所示,Eventing 主要由事件源(Event Source)、事件處理(Flow)以及事件消費者(Event Consumer)三部分構成。

事件源(Event Source)

當前支持以下幾種類型的事件源:

  • ApiserverSource:每次創建或更新 Kubernetes 資源時,ApiserverSource 都會觸發一個新事件

  • GitHubSource:GitHub 操作時,GitHubSource 會觸發一個新事件

  • GcpPubSubSource: GCP 云平臺 Pub/Sub 服務會觸發一個新事件

  • AwsSqsSource:Aws 云平臺 SQS 服務會觸發一個新事件

  • ContainerSource: ContainerSource 將實例化一個容器,通過該容器產生事件

  • CronJobSource: 通過 CronJob 產生事件

  • KafkaSource: 接收 Kafka 事件并觸發一個新事件

  • CamelSource: 接收 Camel 相關組件事件并觸發一個新事件


事件接收/轉發(Flow)

當前 Knative 支持如下事件接收處理:

  • 直接事件接收

    通過事件源直接轉發到單一事件消費者。支持直接調用 Knative Service 或者 Kubernetes Service 進行消費處理。這樣的場景下,如果調用的服務不可用,事件源負責重試機制處理

  • 通過事件通道(Channel)以及事件訂閱(Subscriptions)轉發事件處理

    這樣的情況下,可以通過 Channel 保證事件不丟失并進行緩沖處理,通過 Subscriptions 訂閱事件以滿足多個消費端處理

  • 通過 brokers 和 triggers 支持事件消費及過濾機制

從 v0.5 開始,Knative Eventing 定義 Broker 和 Trigger 對象,實現了對事件進行過濾(亦如通過 ingress 和 ingress controller 對網絡流量的過濾一樣)通過定義 Broker 創建 Channel,通過 Trigger 創建 Channel 的訂閱(subscription),并產生事件過濾規則。

事件消費者(Event Consumer)

為了滿足將事件發送到不同類型的服務進行消費, Knative Eventing 通過多個 k8s 資源定義了兩個通用的接口:

  • Addressable 接口提供可用于事件接收和發送的 HTTP 請求地址,并通過status.address.hostname字段定義。作為一種特殊情況,Kubernetes Service 對象也可以實現 Addressable 接口

  • Callable 接口接收通過 HTTP 傳遞的事件并轉換事件。可以按照處理來自外部事件源事件的相同方式,對這些返回的事件做進一步處理


當前 Knative 支持通過 Knative Service 或者 Kubernetes Service 進行消費事件。

另外針對事件消費者,如何事先知道哪些事件可以被消費? Knative Eventing 在最新的 0.6 版本中提供 Registry 事件注冊機制, 這樣事件消費者就可以事先通過 Registry 獲得哪些 Broker 中的事件類型可以被消費。

如何Knative中的Build、Serving 和 Eventing三大核心組件

總結

Knative 使用 Build 提供云原生“從源代碼到容器”的鏡像構建能力,通過 Serving 部署容器并提供通用的服務模型,同時以 Eventing 提供事件全局訂閱、傳遞和管理能力,實現事件驅動。這就是 Knative 呈現給我們的標準 Serverless 編排框架。

以上就是如何Knative中的Build、Serving 和 Eventing三大核心組件,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

独山县| 临颍县| 南陵县| 岳阳市| 东乡县| 阿克苏市| 大竹县| 富裕县| 天等县| 三都| 马边| 巴林左旗| 通山县| 眉山市| 宜良县| 库尔勒市| 玛沁县| 固安县| 平谷区| 元氏县| 拉孜县| 丹寨县| 扶绥县| 莱州市| 宁武县| 康定县| 柘城县| 新民市| 改则县| 宁波市| 延长县| 高邮市| 北流市| 成安县| 牡丹江市| 青海省| 怀宁县| 新兴县| 陵水| 盐山县| 垣曲县|