天天看點

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

一.背景

在春節前後的武漢肺炎疫情的影響下,國家和地方政府紛紛出台春節假期延期政策,鼓勵有條件的企業在家辦公,避免進入人口密集環境。我司北京雲族佳科技有限公司數年來專注于雲工作生态環境的建設與完善,先後推出雲沃客,企業版,黃豆納才,績效監控等雲産品,幫助企業及其成員在不同空間次元下協同開展工作,在雲端最大限度的還原現場工作場景,現雲沃克平台向所有企業無限制免費開放,至官宣疫情結束後90天。歡迎個人和企業使用者入住雲沃克平台。

為了應對突發的流量,我們決定将原來的技術架構予以更新,我們希望新的架構能夠具有以下幾個特征:

1.能夠做到簡裝上陣,開發人員可以更專注于業務的開發,同時系統兼運維工程師負責部署和運維,而無需考慮過于複雜的架構設計。

2.能夠全面的擁抱微服務,我們希望新的架構的各個子產品能獨立上線,部署,和分發

3.其次能夠友善的遷移至公有雲中

4.強大的橫向擴充能力以對應激增流量

很自然的kubernetes(簡稱k8s)成為我們的首選方案

二.k8s簡介

2.1 k8s是什麼

它是谷歌推出的一個全新的基于容器技術的分布式架構領先方案,它是谷歌十幾年來大規模應用容器技術的經驗積累和升華的重要成果,k8s是谷歌嚴格保密十幾年的秘密武器Brog的一個開源實作,這個久負盛名的Brog用于谷歌内部管理大規模的叢集系統,它基于容器技術。随着2015年Brog的論文公開以及k8s的高調宣傳,人們才得以窺視和了解它。

如果我們遵循k8s的設計思想,傳統架構的那些與業務無關的底層代碼和功能,研發人員可以不必再關注,比如我們不用再考慮負載均衡的選型和部署實施問題,不必考慮自行引入或者開發一套服務治理方案,k8s為我們做的已經夠多了,實踐表明,使用k8s能夠減少我們30%的開發成本,使得研發人員更關注與實作業務本身,k8s提供了強大的自動化機制,運維難度和成本都大幅降低。

2.2 将k8s搬到雲端

由于我司的服務大部分都部署在阿裡雲上 ,同時阿裡雲也提供了k8s叢集的功能,現将公司業務搬到k8s上的過程予以記錄。

1.首先建立叢集,在阿裡雲的web頁面點選建立

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐
會看到,阿裡雲提供了多種叢集方式工選擇,其中我們根據自身情況,選擇了标準的托管版本,即是叢集的master節點由ACK(阿裡雲k8s容器服務)托管,而使用者隻需建立node節點即可,
疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

這裡我們選擇建立三個ECS作為工作節點,由于k8s本身不處理網絡細節,它要求所有pod可以直接通信,也就是不能通過NAT轉化,在同一個大二層網絡内通信,是以需要選擇網絡插件作為k8s底層的通信手段,這裡選擇廣泛使用的Flannel插件,指定pod和service的CIDR,如無特殊需求,預設就行,

選擇完畢後,等待一段時間,

在控制台上檢視,叢集已經成功建立。

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐
2.在這個叢集上建立我們的應用,在我們的使用場景中我們主要是提供restful api服務,是以我們選擇無狀态的應用
疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

  1. 這裡可以選擇使用鏡像建立,也可以使用模闆建立,由于我們在測試環境部署過k8s,已經寫好了一些yaml檔案,故而我們選擇使用模闆建立,若是第一次使用k8s,可以使用使用鏡像建立,

deployment的yaml檔案如下

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

點選建立,如無異常,能看到

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

建立成功,同時可以點選編輯,來修改參數,比如限制資源的使用,加入存活和就緒檢查

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

檢視容器組可以看到

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

pod已經成功運作起來,

4.接着我們我們建立service,在service管理頁面點選建立

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

service我們選擇使用内網slb,選擇關聯到的無狀态應用執行個體,添加端口映射清單,點選建立

無異常的化,

疫情期間雲沃客使用阿裡雲k8s動态擴容實踐

我們能得到服務的内網通路方式。将此位址提供給前端通路即可,至此,算是基本将此應用遷移到k8s中了。,通過k8s我們能友善快速的水準擴充,當流量升上來時,我隻用增到副本的數量,反之減少副本的數量,後續會将其他應用陸續遷移到k8s中

2.3後續工作

1.通過ab工具壓測一下此api的性能如何

2.通過jenkins內建打包,部署,更新過程。阿裡雲同時提供了鏡像倉庫工能,制作的鏡像可以存入。

3.發現阿裡雲k8s內建了istio service mesh功能,後期會利用它做一些服務治理的工作,比如流量控制,灰階釋出等。

繼續閱讀