Serverless Kubernetes 和 Serverless on Kubernetes 的區別

什麼是 Kubernetes?

Kubernetes 是一個可移植的、可擴展的開源平台,用於管理容器化的工作負載和服務,可促進聲明式配置和自動化。

什麼是 Serverless ?

無服務器是一種雲原生開發模型,可使開發人員專註構建和運行應用,而無需管理服務器。

無服務器方案中仍然有服務器,但它們已從應用開發中抽離了出來。雲服務提供者(如公有雲服務商、組織內部的基礎設施部門等)負責置備、維護和擴展服務器基礎架構等例行工作。開發人員可以簡單地將代碼打包到容器中進行部署。

部署之後,無服務器應用即可響應需求,並根據需要自動擴容。公共雲提供商的無服務器產品通常通過一種事件驅動執行模型來按需計量。因此,當無服務器功能閑置時,不會產生費用。

無服務器與其他雲計算模型的區別在於,它是由雲提供商負責管理雲基礎架構和應用擴展。無服務器應用部署在容器中,這些容器在被調用時會自動按需啟動。

在標準的基礎架構即服務(IaaS)雲計算模型中,用戶需要預先購買容量單元;也就是說,您要先向公共雲提供商支付始終可用的服務器組件的費用,才能運行您的應用。  用戶自行負責在需求高時擴展服務器容量,並在不再需要時縮減容量。即使在應用閑置不用期間,運行該應用所需的雲基礎架構也要保持就緒。

無服務器架構則與之相反,應用僅在需要時啟動。有事件觸發應用代碼運行時,公共雲提供商才會為這一代碼分配資源。該代碼執行結束後,用戶便不再付費。除了成本與效率上的優勢外,無服務器也能將開發人員從應用擴展和服務器置備相關的瑣碎日常任務中解放出來。

使用無服務器時,管理操作系統和文件系統、安全補丁、負載平衡、容量管理、擴展、日誌和監控等例行任務都由雲服務提供商分擔。

什麼是 Serverless Kubernetes?

Serverless Kubernetes 也可以被稱為 Nodeless Kubernetes,是一種特殊的 Kubernetes 集群。它的特殊之處在於:通過 Virtual Kubelet (虛擬 Kubelet)將 Serverless 服務作為 Kubernetes 集群的一個無限 Node 使用,這樣就無需考慮 Node 數量的問題。

什麼是 Serverless on Kubernetes?

作為一種在自動化基礎架構中運行容器化應用的方式,Kubernetes 是運行無服務器環境的熱門選擇。然而,Kubernetes 本身並不足以原生運行無服務器應用。

Knative 是一個開源社區項目,可以添加組件,從而在 Kubernetes 上部署、運行和管理無服務器應用。

利用 Knative 無服務器環境,您可以將代碼部署到 Kubernetes 平台。藉助 Knative,可以將代碼打包為容器鏡像並交給系統,以此來創建相應的服務。代碼僅在需要時才會運行,並由 Knative 來自動啟動和停止實例。

什麼是 Serverless on Serverless Kubernetes?

有意思的來了,你可以在一個 Serverless Kubernetes 集群中部署 Knative,從而構建一個無服務器環境嗎?

答案當然是肯定的啦。這就是「Serverless on Serverless Kubernetes」。

參考