微服務容器化構建改造(1)--整體方案
阿新 • • 發佈:2018-12-04
涉及技術 Docker + Rancher + SwarmKit + Jenkins
背景:
大規模推進微服務的背景下,大量應用切分粒度更細。為大量應用服務的部署及機器資源的分配使用帶來了繁雜而高昂的成本。 在Serverless大潮下,傳統應用的容器化改造成了標準的跨入門檻。
目標:
- 提高機器使用率。
- 橫向擴充套件能力。機器資源使用可按應用服務切分管理並可快速調整配額(記憶體,CPU,網路,磁碟)
- 可移植能力。封裝應用以及對環境配置的依賴。
- 應用生命週期管理能力。自動化部署,多例項部署,回滾等。能夠精細化,自動化,可感知。
實現方案:
Dokcer進行容器化改造
Docker:是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。
Docker SwarmKit 進行容器編排
Docker SwarmKit:Docker公司開源的Docker叢集管理和編排工具。基於Raft演算法的一致性和任務排程,相對K8S更輕量級,部署成本較低。提供對叢集的管理和服務的編排排程狀態一致性保證。
Rancher 進行容器託管
Rancher:是一個開源的企業級容器管理平臺.提供了全棧式的容器化管理
Dokcer外掛 進行映象打包
Dokcer外掛:Docker外掛為MAVEN構建生命週期提供應用構建並打包映象,打包後PUSH映象到映象私服的能力
Jenkins及Rancher外掛 進行容器指令下發
Jenkins Jenkins-Rancher外掛 通過Jenkins中的Rancher外掛來為應用構建後向Rancher下發服務升級指令
概覽
整個應用容器化過程如下。
- Jenkins發起應用構建指令。
- Maven執行應用中Docker外掛生成映象
- Maven執行應用中Docker外掛Push映象到映象私服
- Jenkins通過Rancher外掛向Rancher下發指令升級服務
- Rancher通過託管的Docker SwarmKit進行服務的升級。從私服拉取映象,重啟容器。
不足
- 目前使用的Rancher 1.6版本不支援對Docker容器run時指定除Rancher管理平臺之外的引數。類似cpus 以及oom-kill-disable之類的引數無數設定
署名
年糕媽媽---子皙