kuberneters02


Kuberneters系列02

1、為什么要使用K8s

陌陌基於K8s和Docker容器管理平台的架構實踐

在使用k8s之前,陌陌在應用發布和運行環境方面遇到的具體問題,如下:

  • 應用發布時間很長,主要是因為發布過程中需要做隔離、恢復等動作,還需要登錄查看實際狀態、日志。
  • 當遇到晚高峰情況這樣的突發狀況,需要緊急擴容。這時業務方會申請機器,可新機需要進行環境初始化、相關配置,這樣導致效率非常低。
  • 應用運行環境的軟件版本不一致,配置復雜,維護成本比較高。
  • 硬件資源利用率不足,總體成本比較高。

針對以上遇到的問題,我們決定對架構進行改造,同時制定了一系列架構改進目標,如下:

  • 提高服務可用性,可管理性。可用性是當某一台機器出現宕機,會自動切換到其他機器。可管理性是在應用需要擴容時,自動化去部署運行環境、相關配置。開發不需要再去考慮服務器的問題。
  • 提高資源隔離性,實現服務混合部署。
  • 應用級別的監控,當機器需要擴容時,自動排查是哪個應用所致。
  • 服務平滑遷移。

綜合這些問題和目標,陌陌選擇使用 Kubernetes來管理 Docker 集群,當 Kubernetes 滿足不了需求時,可在部署平台開發相應的功能來滿足開發查看日志、監控和報警等需求,盡量避免登錄主機和容器。

 

陌陌容器管理平台的架構演進

陌陌從2015年下半年開始對Docker進行調研和實踐,2016年初開始調研k8s,嘗試架構方面的改進工作,基於自研發布系統及K8s、OVS和Docker構建容器管理平台。實現了基於Docker集群的部署系統,便於開發者便捷地部署自己的應用程序。最終達到部署環境干凈一致,可重復部署、迅速擴容和回滾。

如下圖,是容器管理平台的架構圖:

容器管理平台主要功能有集群管理和狀態展示、灰度發布和代碼回退、組件模板、應用管理、鏡像倉庫和權限管理等。它采用前后端分離的架構,前端使用 JS 渲染,后端使用 Python 提供 API。這樣開發者可以快速的進行發布和回退操作。

容器管理平台在應用發布流程,集群調度策略,k8s節點網絡架構,阿里雲支持,基礎監控指標等方面進行了優化改進。

 

應用發布流程

陌陌之前老版本發布系統是串行的,需要單台進行替換。如下圖,是新架構下應用的發布流程:

新的發布系統是用戶提交代碼后,在發布系統選擇要部署的commit,點擊構建以后,系統會自動編譯,打包成鏡像,推送鏡像倉庫。如果構建成功,用戶點擊發布新版本的實例,灰度沒有問題,全量,下線老版本的實例。回退時代碼不需要構建,直接發布老版本實例。在某段時間內,新老版本是同時存在的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM