k8s雲集羣混搭模式,可能幫你節省50%以上的服務成本

如今大部分中小企業或團隊都是使用雲平臺來部署本身的服務,如阿里雲,亞馬遜雲等。通常來講,業務的負載都具有必定的規律,好比天天集中在某幾個小時,或呈現時間段週期性波峯、波谷交替的現象,以下圖
node

若是使用ECS來部署服務,則可能大部分時間ECS的資源沒有獲得充分利用,形成成本浪費,尤爲對於像GPU之類成本較高的資源就更加了。這個時候,咱們能夠考慮使用雲集羣的混搭模式來節約成本。服務器

 

業務場景

假設有一個這樣的業務場景,包括以下特色及要求:微信

  1. 整個系統包括業務服務與兩層視覺服務負載均衡

  2. 各層服務之間調用需作負載均衡less

  3. 天天的業務量主要集中在上午幾個小時阿里雲

  4. 平時業務量較低時仍要保證服務可用命令行

  5. 儘量下降成本,尤爲是GPU服務器成本(GPU貴啊)blog

 

 

k8s雲集羣混搭模式

如今各大雲平臺都已經提供容器雲服務,如阿里雲有基於ECI(彈性容器實例)的Serverless Kubernetes集羣服務,基於ECS節點不須要提供master的Kubernetes託管版集羣服務,及本身提供master的Kubernetes專有版集羣服務等。爲了迎合相似上述業務場景的需求,也提供了Kubernetes + virtual node(虛擬節點)的混合集羣服務,以下圖所示內存

其中的虛擬節點基於ECI支持多種功能,如GPU容器實例、大規格容器實例等,加強了Kubernetes集羣的彈性,使集羣不侷限於ECS節點的資源,作到彈性無限擴容。資源

 

部署方案

結合前面的業務場景,咱們能夠採用k8s的混合集羣服務來部署咱們的項目,以下圖

 

實現步驟:

  1. 建立Kubernetes託管版集羣

  2. 加入已有ECS節點

  3. 添加一個虛擬節點,經過添加應用 ack-virtual-node 來實現

  4. 分別建立無狀態的業務Deployment、AI-1 Deployment、AI-2 Deployment(對應三層服務)

  5. 分別在業務Deployment上建立公網SLB,AI-1 Deployment、AI-2 Deployment上建立內網SLB

  6. 分別在各Deployment上根據CPU或內存使用閾值配置彈性水平伸縮HPA

  7. 根據須要能夠在某個或某些Deployment上配置定時伸縮,經過添加應用 ack-kubernetes-cronhpa-controller 來實現
     

由於水平伸縮通常須要必定時間,延遲可能會對業務形成影響,因此在業務負載比較規律的時候,能夠經過定時伸縮(就是定時擴展到多少個容器,再定時收縮到多少個容器)來改善;目前定時伸縮配置的查看與更新只能經過kubectl命令行進行。

總結

  按照官方文檔的計費方式,一個普通的2核8G的ECS一年大概費用是2600左右,若是經過容器服務的方式(按秒計費),假設天天起8小時,則一年大概費用1550左右,若是業務負載再集中到幾個小時,費用會更低,對於比較稀缺又昂貴的GPU服務就更加了。可是若是服務所有按容器24小時租賃,其成本就又比ECS貴了(一年約4600),因此在平時業務負載較低的時候,能夠將容器調度到ECS上保障服務的提供,業務負載高時,經過HPA或cronHPA的方式動態伸縮到虛擬節點上。對於業務負載具備必定規律的服務來講,採用這種混搭的部署方式將極大地下降你的雲服務成本。不過目前k8s雲集羣服務應該推出時間不久,產品的易用性還比較低,對不具有必定容器與編排基礎的人使用門檻相對較高。

 

歡迎關注個人微信公衆號:jboost-ksxy (一個不僅有實戰乾貨的技術公衆號,及時獲取更新內容)
———————————————————————————————————————————————————————————————
微信公衆號

相關文章
相關標籤/搜索