Knative是一款基於Kubernetes的Serverless架構,支援基於請求的自動彈性、在沒有流量時將執行個體數量自動縮容至零、版本管理與灰階發布等能力。在完全相容社區Knative和Kubernetes API的基礎上,ACK Knative進行了多維度能力增強,例如通過保留執行個體降低冷啟動時間、基於AHPA實現彈性預測等。
為什麼要在Kubernetes叢集中使用Knative
Knative介紹
Knative是一款基於Kubernetes叢集的Serverless架構,提供雲原生、跨平台的Serverless編排標準。Knative通過整合容器構建、工作負載管理以及事件模型來實現這一Serverless標準。優勢如下。
更聚焦於商務邏輯:Knative通過簡單的應用配置、自動擴縮容等手段讓開發人員聚焦於商務邏輯,降低營運負擔、減少對底層資源的關注。
標準化:將業務代碼部署到Serverless平台時,需要考慮源碼的編譯、部署和事件的管理。目前社區和雲廠商提供的Serverless解決方案和FaaS方案標準不一。Knative提供了一個標準、通用的Serverless架構。
例如,如需在Knative中實現事件驅動,您可以編寫對應的YAML檔案(CR)並在叢集中部署,無需與雲產品做深度綁定,便於跨平台遷移。
使用門檻低:Knative支援將代碼自動打包為容器鏡像並發布為服務,也支援將函數快捷地部署到Kubernetes叢集中,以容器的方式運行。
自動彈性及版本管理:Knative支援在沒有流量時自動將執行個體數量縮容至零,從而節省資源,還提供版本管理、灰階發布等功能。
事件驅動:Knative提供了完整的事件模型,便於接入外部系統的事件,並將事件路由到適當的服務或函數進行處理。
關於Knative應用程式模型(Knative Service)的介紹,請參見Knative應用程式模型介紹。
核心組件
Knative包括以下核心組件,分別執行不同的功能。
Knative Serving:管理Serverless工作負載,提供了應用部署、多版本管理、基於請求的自動彈性、灰階發布等能力,而且在沒有業務流量時可以將應用執行個體縮容至零。
Knative Eventing:提供了事件來源的接入、事件註冊和訂閱、以及事件過濾等一整套事件管理的能力。事件模型可以有效地解耦生產者和消費者的依賴關係。
Knative Functions: 提供了一個簡單的方式來建立、構建和部署Knative服務。您無需深入瞭解底層技術棧(例如Kubernetes、容器、Knative),通過使用Knative Functions,即可將無狀態、事件驅動的函數作為Knative服務部署到Kubernetes叢集中。
為什麼要使用ACK Knative
在完全相容社區Knative並提供標準Kubernetes API介面的基礎上,ACK Knative進一步強化產品化能力並提供了更豐富的產品方案。
產品化能力:提供了產品化一鍵部署能力,您無需購買資源搭建系統。同時提供產品控制台,支援白屏化操作,降低Kubernetes叢集和Knative的使用門檻。
簡化營運:
核心組件託管:在ACK叢集中,Knative的核心組件Knative Serving和Knative Eventing均由ACK建立和託管,無需您承擔資源費用,且提供高可用保障。
網關託管:ACK Knative提供ALB、ASM和Kourier網關。除社區相容的Kourier外,其餘雲產品網關的Controller均由ACK建立,提供全託管、免營運的網關服務。
生態整合:無縫整合了阿里雲的計算(ECI、ECS、ACS)、可觀測(Log ServiceSLS、Prometheus)、應用整合(EventBridge)等產品,無需自行採購伺服器,也無需自建服務,便能在Knative服務中實現日誌與監控警示、持續傳遞、事件驅動等能力。
更豐富的功能特性:在社區Knative的基礎上,ACK Knative結合實際業務情境提供了開箱即用的、更為豐富的產品方案。例如以下方案。
保留執行個體:為延遲敏感應用保留一個低成本常駐執行個體,緩解社區Knative“縮容至0”策略帶來的冷啟動延遲,以提升服務響應速度,有效控制資源成本。
Knative自動調整: 提供開箱即用的基於請求的自動彈性 KPA(Knative Pod Autoscaler),同時也支援HPA,您還可以為Knative服務配置AHPA(Advanced Horizontal Pod Autoscaler)彈效能力。如果您的應用所需資源具備周期性變化,推薦您使用AHPA進行彈性預測,提前預熱所需的資源,緩解使用Knative時遇到的冷啟動問題。
關於ACK Knative和社區Knative對比的更多資訊,請參見阿里雲Knative和開源Knative對比。
使用情境
ACK Knative的典型使用情境如下。
業務情境 | 說明 |
Web服務的託管 |
|
Serverless應用 |
|
AI情境 |
|
事件驅動情境 | Knative Eventing提供了完整的事件模型,簡化了接入外部系統的事件的流程。例如,IoT裝置可以將感應器資料發送到Knative服務中,ACK Knative可以配置對應的事件來源用於接收資料,並觸發相應的處理邏輯,例如資料存放區、即時分析、監控警示等。 |
使用流程
ACK Knative的使用流程如下圖所示。
流程 | 說明 |
適用範圍 | 1.22及以上版本的ACK託管叢集。如需升級,請參見手動升級叢集。 |
已部署ACK Knative,安裝Knative Serving組件,請參見部署與管理Knative組件。 | |
已完成網關選型並部署網,請參見為Knative選擇網關。 | |
服務部署與管理 | 指定使用的資源類型: |
自動調整:
| |
版本管理與灰階發布:
| |
Knative服務的訪問:
| |
進階功能 | 事件驅動:Knative Eventing提供完整、系統的Serverless事件驅動模式,包括外來事件源的接入、事件流轉和訂閱、以及對事件的過濾等功能。請參見Knative事件驅動。 |
Knative Functions:簡化在Kubernetes叢集中建立、部署和調用函數的流程,請參見部署Knative Functions。 | |
AI推理服務:
| |
服務網格:在Knative服務中整合服務網格ASM,以實現複雜的流量管理並增強服務安全性。 | |
可觀測性與成本管理 | 日誌採集:基於SLS無侵入式地完成日誌資料擷取、消費、投遞以及查詢分析等功能,請參見在Knative上實現日誌採集。 |
監控大盤:把Knative接入阿里雲Prometheus監控,查看Knative的響應延遲、請求並發數等資料,請參見查看Knative服務監控大盤。 | |
監控警示:使用SLS建立日誌警示監控規則,請參見為Knative服務開啟監控警示。 | |
成本洞察:作為企業IT成本管理員,可以為Knative服務啟用成本洞察功能,瞭解Knative服務的資源使用量及成本分布,請參見啟用Knative服務成本洞察。 |
計費說明
在ACK叢集中使用ACK Knative時,ACK Knative本身不收取管理費用,但在使用過程中產生的叢集管理費用、所建立的雲端服務器、Server Load Balancer執行個體、NAT Gateway等,按照相應資源的價格計費。更多資訊,請參見ACK叢集的計費概述、雲產品資源費用。
常見問題
如您在使用ACK Knative時遇到問題,可以先參見Knative FAQ自排查。
如果您在使用Knative的過程中有任何疑問或建議,歡迎您搜尋釘群號23302777加入釘群。
相關文檔
請及時升級Knative Serving組件,以便享受最新的功能特性和缺陷修複,請參見Knative版本發布說明、升級Knative Serving組件。
Knative官方文檔提供了一個線上書店應用程式教程,帶您體驗使用Knative構建、部署和監控應用程式的各個步驟,請參見Knative Bookstore Tutorial。