首頁 > 企業動态

盛學(xué)成長(cháng)Kubernetes與DevOps落地(dì)實踐

發布日期:2020-02-24

  伴随着公司業務的(de)快速發展,公司很多業務線的(de)服務架構以及服務運行(xíng)時環境也有(yǒu)了很大變化。之前的(de)資源管理(lǐ)和(hé)應用生産流程主要是半自(zì)動化,不管是服務器相應的(de)資源利用率還是技術人員的(de)個人生産力仍然有(yǒu)很大的(de)提升空間。

  一(yī)、運維面臨的(de)痛點

  1、業務的(de)擴展,團隊服務器資源也越來越多,我們(men)常常會聽到這樣的(de)聲音:“我的(de)服務器怎麽又卡死了?”、“我點擊開始構建後項目就一(yī)直502了?”“幫忙看看,某某項目怎麽又挂掉了無法訪問了,我正在測試呢(ne)?”

  2、在代碼管理(lǐ)方面,沒有(yǒu)較好的(de)命名規範,代碼倉庫沒有(yǒu)友好的(de)UI界面進行(xíng)管理(lǐ),我們(men)常常需要對照一(yī)個或多個複雜的(de)excel表格來找到那些不常使用的(de)或者近期未開發的(de)項目代碼;

  3、本地(dì)手工打包,手動創建虛拟機(jī),手工部署和(hé)升級,這些重複和(hé)低(dī)效率的(de)研發部署模式導緻開發人員不能高(gāo)效的(de)專注于業務需求;

  4、線上業務在運行(xíng)時會出現并發問題,根據怎麽樣的(de)指标、怎樣去(qù)對業務進行(xíng)擴縮容?業務遷移如(rú)何更為(wèi)高(gāo)效、準确和(hé)快速;

  5、在之前項目的(de)運行(xíng)環境中,我們(men)使用了Rancher1.6版本及其自(zì)帶的(de)Cattle作為(wèi)我們(men)的(de)容器平台。由于rancher對docker容器的(de)進一(yī)層封裝,常常會出現很多問題,例如(rú)網絡為(wèi)什麽不通了?dns為(wèi)什麽無法解析等等,這種類似問題的(de)根本原因不得而知。

  二、問題分析

  首先想到能解決其中代碼倉庫管理(lǐ)的(de)辦法就是将原有(yǒu)代碼倉庫遷移到更為(wèi)強大的(de)git上,并且制定統一(yī)的(de)規範準則。

  其次大部分問題的(de)解決辦法最容易想到的(de)就是通過腳本來幫我們(men)做(zuò)一(yī)些手動重複性的(de)工作。沒錯,在前期我們(men)寫了很多腳本,不同服務的(de)運行(xíng)環境随着命名的(de)規範也會變得更加統一(yī)。但是在需求沒辦法确定的(de)情況下,如(rú)何評判腳本的(de)好壞與完整性卻沒有(yǒu)思路,我們(men)隻能做(zuò)到的(de)是腳本如(rú)果遇到某個bug那就去(qù)改一(yī)個版本。

  至于Rancher,我們(men)發現在1.6版本之後便丢掉了原有(yǒu)的(de)編排引擎,轉而擁抱的(de)是更為(wèi)強大的(de)Kubernetes。因此我們(men)決定抛棄Rancher,使用更為(wèi)原生的(de)Kubernetes容器編排。

  三、解決方案

  目前,Kubernetes已經成為(wèi)市(shì)場上事實上領先的(de)容器編排工具,不僅對技術公司如(rú)此,對所有(yǒu)公司都是如(rú)此,因為(wèi)它支持快速且可(kě)預測地(dì)部署應用程序、動态地(dì)伸縮應用程序、無縫地(dì)推出新特性,同時有(yǒu)效地(dì)利用硬件資源。

  如(rú)何用好Kubernetes?應用如(rú)何遷移到k8s?對相應技術人員是一(yī)大挑戰,因為(wèi)它更為(wèi)原生,沒有(yǒu)像Rancher提供的(de)在界面上更為(wèi)便捷的(de)操作。

  最終我們(men)基于現有(yǒu)服務器環境,自(zì)建了多套原生且高(gāo)可(kě)用的(de)Kubernetes集群

1.png

2.png

  應用的(de)改造方面,調研并使用了Minio分布式對象存儲,優化統一(yī)了應用配置方法和(hé)日志輸出規範

  應用的(de)遷移與DevOps工作流的(de)實現,基于Jenkins2.X版本開發了多套更為(wèi)便捷的(de)流水線,真正實現應用的(de)部署通用參數選擇、一(yī)鍵快速部署、回滾、擴縮容等更為(wèi)強大的(de)功能

3.png

4.png

  至今,公司超過80%的(de)項目已經全部遷移且穩定運行(xíng)在新環境下,回顧過去(qù)一(yī)年(nián)多的(de)成果,為(wèi)我們(men)帶來了諸多好處:

  自(zì)動化的(de)集成解放了大量的(de)重複性勞動

  更快的(de)交付效果和(hé)更快的(de)發現并修複問題

  減少了等待時間與人工錯誤

  更為(wèi)持續、穩定的(de)運行(xíng)環境

  。。。。。。

  

  四、下一(yī)步規劃

  暢想未來,在容器化技術及 Kubernetes 統一(yī)的(de)時代,企業應用也逐步向微服務架構轉變,這中間包含着服務注冊、服務發現、服務網關、配置中心、集成框架、分布式事務等等。随着“雲原生”這個概念的(de)誕生和(hé)落地(dì),我們(men)會将更多的(de)工作與業務相結合,實現更多更好更強的(de)服務發布方式,根據更多的(de)數據指标和(hé)服務中鏈路的(de)追蹤來進一(yī)步優化業務,最終實現業務的(de)快速叠代、自(zì)動部署、獨立高(gāo)效。