Knative简介
knative簡介
- Knative簡介
- 1.Knative定義
- 2.Knative的主要功能
- 3.Knative的核心組件
- 3.1 Tekton Pipelines組件(Build組件)
- 3.2 Serving
- 3.3 Eventing
- 4. 總結
- 5. 參考
Knative簡介
1.Knative定義
knative基于 Kubernetes 的平臺,用于部署和管理現代無服務器工作負載
Knative 的目標是在基于 Kubernetes 之上為整個開發生命周期提供幫助。它的具體實現方式是:首先使你作為開發人員能夠以你想要的語言和以你想要的方式來編寫代碼,其次幫助你構建和打包應用程序,最后幫助你運行和伸縮應用程序。
Knative 主要由 Build、Serving 和 Eventing 三大核心組件構成。Knative 正是依靠這三個核心組件,驅動著 Knative 這艘ServerLess巨輪前行。
友情鏈接:serverLess介紹
2.Knative的主要功能
- 在幾秒鐘內建立可擴展、安全、無狀態的服務。
- 針對常見應用用例的具有更高級別抽象的重點 API。
- 可插拔組件讓您可以使用自己的日志記錄和監控、網絡和服務網格。
- 在 Kubernetes 運行的任何地方運行 Knative,無需擔心供應商鎖定。
- 無縫開發者體驗,支持 GitOps、DockerOps、ManualOps 等。
- 支持許多常用工具和框架,例如 Django、Ruby on Rails、Spring 等。
3.Knative的核心組件
3.1 Tekton Pipelines組件(Build組件)
通過靈活的插件化的構建系統將用戶源代碼構建成容器。
提示:原生的knative-build組件棄用,官方推薦使用Tekton Pipelines作為構建組件。
Tekton Pipelines 項目定義了一組 Kubernetes自定義資源,用作構建塊,您可以從中組裝 CI/CD 管道。安裝后,Tekton Pipelines 可通過 Kubernetes CLI (kubectl) 和 API 調用使用,就像 Pod 和其他資源一樣。它提供的一套標準化、可移植、可復用的容器鏡像構建方式,通過系統化、工程化的方式,減少了鏡像構建時間及成本。
Tekton Pipelines 是云原生的:
- 在 Kubernetes 上運行
- 將 Kubernetes 集群作為第一類類型
- 使用容器作為構建塊
Tekton 管道解耦:
- 一個 Pipeline 可用于部署到任何 k8s 集群
- 組成流水線的任務可以很容易地單獨運行
- 可以在不同資源運行之間輕松交換,如git、repos。
Tekton 管道類型為:
- 類型化資源的概念意味著對于諸如 an 之類的資源Image,實現可以很容易地換出(例如,使用 kaniko與 buildkit 構建)
3.2 Serving
基于負載自動伸縮,包括在沒有負載時縮減到零。允許你為多個修訂版本(revision)應用創建流量策略,從而能夠通過 URL輕松路由到目標應用程序。
Knative 作為 Severless 框架最終是用來提供服務的, 那么 Knative Serving 應運而生。
其特性如下:
- 快速部署無服務器容器。
- 自動縮放包括將 pod 縮放到零。
- 支持多個網絡層,例如 Ambassador、Contour、Kourier、Gloo 和 Istio,以便集成到現有環境中。
- 已部署代碼和配置的時間點快照。
Knative Serving 中定義了以下 CRD 資源:
- Service: 自動管理工作負載整個生命周期。負責創建 Route、Configuration 以及 Revision 資源,以確保您的應用程序為服務的每次更新提供路由、配置和新修訂。通過 Service 可以指定將流量路由到最新版本或固定版本。
- Route:負責映射網絡端點到一個或多個 Revision。可以通過多種方式管理流量,包括灰度發布和重命名路由。
- Configuration: 負責保持 Deployment 的期望狀態,提供了代碼和配置之間提供了清晰的分離,并遵循十二因素應用程序方法。修改一次 Configuration 產生一個 Revision。
- Revision:Revision 是對工作負載所做的每次修改的代碼和配置的時間點快照。修訂是不可變的對象,只要有用就可以保留。Knative Serving Revisions 可以根據傳入的流量自動放大和縮小。
友情鏈接:knative-serving資源詳解
友情鏈接:knative-serving安裝
3.3 Eventing
使得生產和消費事件變得容易。抽象出事件源,并允許操作人員使用自己選擇的消息傳遞層。
Knative Eventing 提供了將事件從事件生成器路由到接收器的工具,使開發人員能夠在他們的應用程序中使用事件驅動架構。旨在滿足云原生開發中通用需求, 以提供可組合的方式綁定事件源和事件消費者。其設計目標:
- Knative Eventing 提供的服務是松散耦合,可獨立開發和部署。服務可跨平臺使用(如 Kubernetes, VMs, SaaS 或者 FaaS)
- 事件的生產者和事件的消費者是相互獨立的。任何事件的生產者(事件源)可以先于事件的消費者監聽之前產生事件,同樣事件的消費者可以先于事件產生之前監聽事件
- 支持第三方的服務對接該 Eventing 系統
- 確保跨服務的互操作性
Knative Eventing 使用標準的 HTTP POST 請求在事件生產者和接收器之間發送和接收事件。這些事件符合CloudEvents 規范,支持以任何編程語言創建、解析、發送和接收事件。
如上圖所示,Eventing 主要由事件源(Event Source)、事件處理(Flow)以及事件消費者(Event Consumer)三部分構成。
友情鏈接: knative-eventing資源詳解
4. 總結
Knative 使用 Build 提供云原生“從源代碼到容器”的鏡像構建能力,通過 Serving 部署容器并提供通用的服務模型,同時以 Eventing 提供事件全局訂閱、傳遞和管理能力,實現事件驅動。這就是 Knative 呈現給我們的標準 Serverless 編排框架。
5. 參考
Knative核心概念介紹
Knative官網
總結
- 上一篇: 如何有效的记忆和提取记忆
- 下一篇: 程序员的读书方法和反思方法!!:我们该如