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