Knative初识
什么是serverless
serverless的全稱是serverless computing無服務運算,又被稱為函數即服務(faas),是云計算的一種模型,以paas為基礎,無服務器運算提供一個微型的架構,終端客戶不需要部署、配置或管理服務器服務,代碼運行所需要的服務器服務皆由云端平臺來提供,國內外比較出名的產品有Tencent Serverless、AWS Lambda、Microsoft Azure Functions 等
什么是 Knative
knative?是谷歌開源的 serverless 架構方案,旨在提供一套簡單易用的 serverless 方案,把 serverless 標準化。目前參與的公司主要是 Google、Pivotal、IBM、Red Hat,2018年7月24日才剛剛對外發布,當前還處于快速發展的階段,主要是為了解決容器為核心的serverless應用的構建、部署和運行的問題
Knative優勢
開發者只需要編寫代碼或者函數,以及配置文件然后運行build和deploy就能把應用自動部署到集群
其他事情都是Knative平臺自動處理,這些事情包括
- 自動完成代碼到容器的構建
- 把應用(或者函數)和特定的事件進行綁定:當事件發生時,自動觸發應用(或者函數)
- 網絡的路由和流量控制
- 應用的自動伸縮
和標準化的 FaaS 不同,knative 期望能夠運行所有的 workload : traditional application、function、container。
knative 核心概念和原理
為了實現 serverless 應用的管理,knative 把整個系統分成了三個部分
- Build:構建系統,把用戶定義的函數和應用 build 成容器鏡像
- Serving:服務系統,用來配置應用的路由、升級策略、自動擴縮容等功能
- Eventing:事件系統,用來自動完成事件的綁定和觸發
?Build 構建系統
build 的功能是把用戶的代碼自動化構建成容器鏡像,初次聽起來很奇怪,有了 docker 之后有一個 Dockerfile 不就能構建容器了嗎?為什么還需要一個新的 Build 系統?
?Knative 的特別之處在于兩點:一是它的構建完成是在 kubernetes 中進行的,和整個 kubernetes 生態結合更緊密;另外,它旨在提供一個通用的標準化的構建組件,可以作為其他更大系統中的一部分。
正如官方文檔中的說的那樣,更多是為了定義標準化、可移植、可重用、性能高效的構建方法
?Serving:服務系統
?serving 的核心功能是讓應用運行起來提供服務。雖然聽起來很簡單,但這里包括了很多的事情
- 自動化啟動和銷毀容器
- 根據名字生成網絡訪問相關的 service、ingress 等對象
- 監控應用的請求,并自動擴縮容
- 支持藍綠發布、回滾功能,方便應用方法流程
??knative 是建立在 kubernetes 和 istio 平臺之上的,使用 kubernetes 提供的容器管理能力(deployment、replicaset、和 pods等),以及 istio 提供的網絡管理功能(ingress、LB、dynamic route等)
因為 kubernetes 和 istio 本身的概念非常多,理解和管理起來比較困難,knative 在此之上提供了更高一層的抽象(這些對應是基于 kubernetes 的 CRD 實現的)。
Eventing:事件系統
serving 系統實現的功能是讓應用/函數能夠運行起來,并且自動伸縮,那什么時候才會調用應用呢?除了我們熟悉的正常應用調用之外,serverless 最重要的是基于事件的觸發機制,也就是說當某件事發生時,就觸發某個特定的函數。
事件概念的出現,讓函數和具體的調用方能夠解耦。函數部署出來不用關心誰會調用它,而事件源觸發也不用關心誰會處理它。
Knative 目前的狀態
knative 是 2018 年 7月才剛剛對外開放,雖然內部已經開發一段時間,但是目前還處于非常早前的階段(從支持的事件源和 bus就能看出來)。目前代碼還不穩定,很多實現都是 hard-coded。
knative 也是脫產于 google 和 CNCF,因此整個社區運行方式和目標與之前的 kubernetes 以及 istio 非常相似。社區根據組件分成多個 Working Group,每個 Group 獨立負責自己的功能,所有的開源活動(文檔、視頻、代碼)都是開放的。另外,CloudEvents 作為 knative 依賴的標準,目標也是成為 CRI、CNI、CSI 這種類似的標準。
knative 社區目前非常活躍,已?github.com/knative/serving?項目為例,一個月已經有 600+ star,目前有 60+ contributor,900+ commits,而且入門的文檔和教程都已經非常全面。
總結
- 上一篇: 为什么计算机领域没有诺贝尔奖,为什么没有
- 下一篇: saturn pcb toolkit相关