阿里云 Serverless Kubernetes 的落地实践分享
簡介:Serverless Kubernetes 基于 Kubernetes 之上,提供按需使用、節點免運維的 Serverless 能力,讓開發者真正實現通過 Kubernetes 標準化 API 進行 Serverless 應用編程,值得關注。
作者 | 元毅(阿里云容器平臺高級開發工程師)
微信搜索關注 Serverless 公眾號,后臺回復 深圳 可獲取本文 PPT
導讀
Kubernetes 作為當今云原生業界標準,具備良好的生態以及跨云廠商能力。Kubernetes 很好的抽象了 IaaS 資源交付標準,使得云資源交付變的更簡單,與此同時越來越多的用戶期望能夠聚焦于業務自身,做到面向應用交付,Serverless 理念也因此而生。
那么如何通過原生 Kubernetes 提供 Serverless 能力?如何借力豐富的云原生社區生態?本文給大家介紹一下我們在 Serverless Kubernetes 上的落地實踐。本文將從以下 3 個方面展開介紹:
- 為什么要做Serverless Kubernetes
- 如何實現Serverless Kubernetes
- Serverless Kubernetes 落地實踐
Serverless Kubernetes 初衷
1、 Kubernetes
眾所周知,Kubernetes 是一款開源容器化編排系統,用戶使用 Kubernetes 可以做到降低運維成本、提高運維效率,并且提供標準化 API,某種意義就是避免被云廠商綁定,進而形成了以 Kubernetes 為核心的云原生生態。可以說 Kubernetes 已然成為了云原生業界事實標準。
2、Serverless 與 Kubernetes
那么我們回到 Serverless 上面來,Serverless 的核心理念在于讓開發者更聚焦業務邏輯,減少對基礎設施的關注。那么我們如何在云原生業界標準之上做 Serverless,Kubernetes 是否也能做到更專注于應用業務邏輯。
3、Kubernetes 做 Serverless 的優勢
在看一下 Kubernetes 做 Serverless 有什么優勢前,我們先來看一下 Kubernetes 特性包括哪些:
- 容器化
- 統一 IaaS 資源交付
- CI/CD 持續集成部署
- 跨云廠商
- 豐富的生態
- 面向應用管理
對應于 Serverless 來說:
- 事件驅動:Kubernetes 支持 job 類型、并圍繞 Kubernetes 提供豐富的事件源
- 按需使用:Kubernetes 本身支持 hpa 彈性能力
- 免運維、高可用:Kubernetes 可以通過容器化、統一資源交付很好的支持。
結合這些來看 Kubernetes 實現 serverless,具備天然優勢。
如何實現 Serverless Kubernetes
在 Kubernetes 上實現 Serverless 主要做到一下兩點:
- 向下如何讓用戶減少對基礎設施的關注;
- 向上如何更聚焦業務應用。
這里我們通過 Serverless Framework ,聚焦業務應用,進一步抽象 Kubernetes 資源,提供按需使用自動彈性的能力。通過 IaaS 資源免運維,減少對基礎設施的關注,做到節點免運維。
那么 IaaS 資源免運維,我們又是如何做的呢?
1、減少對基礎設置的關注:IaaS 免運維
原生的 Kubernetes 節點資源需要用戶自行維護,為了降低用戶維護節點成本,我們提供了托管節點池,幫助用戶維護節點的生命周期,但用戶還是需要對托管節點池策略進行維護,更近一步在 Serverless Kubernetes 中通過虛擬節點結合彈性容器實例 ECI,讓用戶徹底擺脫對 IaaS 的運維。
Serverless Kubernetes IaaS 資源免運維包括:
- 基于容器,安全隔離、高移植
- 無服務器管理:無需容量規劃,對服務器免運維
- 彈性擴容:秒級擴容,無限容器
- 按需付費,更高資源利用率
向下我們通過虛擬節點結合 ECI 實現了 IaaS 資源免運維,那么向上如何聚焦業務邏輯呢?其實就是以應用為核心。
2、聚焦業務邏輯:以應用為核心
圍繞應用來看,無非我們要解這些問題:
- 應用部署
- 灰度發布
- 流量管理
- 自動彈性
- 可觀測性以及應用的多版本管理
那么有開箱即用的方案去解嗎?答案是 Knative。
3、Knative 是什么
Knative 是基于 Kubernetes 之上提供的一款開源 Serverless 應用框架,幫助用戶部署和管理現代化的 Serverless 工作負載,打造企業級 Serverless 平臺。
Knative 具備如下優勢:
- 在幾秒鐘內建立可擴展、安全、無狀態的服務。
- 具有更高級別 Kubernetes 應用抽象的 API。
- 可插拔組件,讓您可以使用自己的日志記錄和監控、網絡和服務網格。
- 在 Kubernetes 運行的任何地方都可以運行 Knative,無需擔心供應商鎖定。
- 開發者無縫體驗,支持 GitOps、DockerOps、ManualOps 等。
- 支持常用工具和框架,例如 Django、Ruby on Rails、Spring 等。
Knative 主要包括 2 大核心模塊:Serving 和 Eventing
Serving 提供了 Service 應用模型,支持基于流量的灰度發布、版本管理、縮容到 0 以及自動彈性。
Eventing 提供事件驅動能力。支持豐富的事件源,以及用于事件流轉、過濾的 Broker/Trigger 模型。
4、為什么是 Knative
那么我們為什么選擇 Knative 呢?
根據 CNCF 2020 中國云原生調查報告,Knative 已經成為 Kubernetes 上最廣泛安裝的無服務器。
另外 Knative 社區近期也發起了一項統計:當前哪些云廠商或企業在提供或者使用 Knative。我們可以看到,幾乎所有的大廠都支持或者集成 Knative, 如阿里云、谷歌云、IBM、Red Hat 等,并且大部分都提供了生產級別能力(Production),這些跡象表明越來越多的用戶擁抱 Knative。
此外近期 Knative 已申請成為 CNCF 孵化項目,這無疑讓 Knative 開發者為之興奮。
5、Knative 落地挑戰、應對與效果
從開源到產品化落地,必然會面對一些挑戰。Knative 產品化落地主要面對如下挑戰:
- 管控組件多,運維復雜
- 0 到 1 冷啟動問題
- 流量請求 1 對 1 分發
那么我們如何來應對呢?
我們提供組件托管,幫助用戶節省資源及運維成本;當請求為 0 時,縮容到低規格保留實例,實現請求 0 到 1 免冷啟動,做到成本可控;提供自研事件網關,做到流量的精準控制。
Serverless Kubernetes 落地實踐
1、落地方案
結合上述介紹,向上通過 Serverless Framewok Knative 更聚焦業務應用,向下通過虛擬節點減少對基礎設施的關注。這就是我們Serverless Kubernetes 落地方案:圍繞 Kubernetes api, 下線集成云產品的能力,包括消息事件、彈性容器實例以及日志監控等。向上通過 Knative 圍繞應用為核心,提供事件驅動、自動彈性等能力等。
2、典型應用場景
最后我們來看一下目前有哪些落地場景,典型的應用場景及行業領域如圖:
3、落地實踐:異構資源,按需使用
(1) 客戶痛點
用戶希望通過 Serverless 技術按需使用資源,節省資源使用成本,簡化運維部署 。另外有 GPU 的業務訴求。希望使用容器化的 Serverless ,支持使用 GPU 資源,同時簡化應用運維部署(盡可能少的操作 Kubernetes deployment/svc/ingress/hpa等資源),IaaS 資源免運維。
(2) 解決方案
使用 Knative + ASK 作為 Serverless 架構。數據采集之后,通過服務網關訪問數據處理服務,數據處理服務根據請求量按需自動擴縮容。
4、落地實踐:事件驅動,精準分發
某客戶直播系統支持用戶在線互動。消息數據的處理主要有以下技術挑戰:
- 業務彈性波動,消息并發高。
- 互動實時響應,低延遲。
客戶選擇阿里云的 Knative 服務進行數據的彈性處理。應用實例數隨著業務波峰波谷實時擴容和縮容,真正做到了按需使用,實時彈性的云計算能力。整個過程完全自動化,極大的減少了業務開發人員在基礎設施上的心智負擔。
總結
我們回顧一下本文介紹的主要內容:
首先介紹了為什么在 Kubernetes 提供 Serverless:
- Kubernetes 已成為云原生業界標準
- 面向標準 Kubernetes API 進行 Serverless 編程
然后我們如何實現 Serverless ?Kubernetes:
- IaaS 節點免運維
- Serverless Framework (Knative)
最后介紹了 2 個落地實踐場景:
- 異構資源,按需使用
- 事件驅動,精準分發
一句話:Serverless Kubernetes 基于 Kubernetes 之上,提供按需使用、節點免運維的 Serverless 能力,讓開發者真正實現通過 Kubernetes 標準化 API 進行 Serverless 應用編程,值得關注。
原文鏈接
本文為阿里云原創內容,未經允許不得轉載。?
總結
以上是生活随笔為你收集整理的阿里云 Serverless Kubernetes 的落地实践分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据领域的专精特新“小巨人”中科闻歌
- 下一篇: 庖丁解牛|图解 MySQL 8.0 优化