現(xiàn)在稍微有點規(guī)模公司都是基于docker容器化部署技巧,K8s現(xiàn)在主流,應(yīng)用最廣的容器集群管理技術(shù)。
k8s全稱kubernetes(首字母為 k、首字母與尾字母之間有 8 個字符、尾字母為 s,所以簡稱 k8s),基于Docker容器集群環(huán)境管理問題,是谷歌保密十幾年的秘密武器----Borg系統(tǒng)的一個開源版本,于2014年9月發(fā)布第一個版本,2015年7月發(fā)布第一個正式版本。
k8s定位是實現(xiàn)集群環(huán)境下資源管理的容器自動化管理,主要提供了如下的主要功能:
自我修復(fù):一旦某一個容器崩潰,能夠在1秒中左右迅速啟動新的容器
彈性伸縮:可以根據(jù)需要,自動對集群中正在運行的容器數(shù)量進行調(diào)整
服務(wù)發(fā)現(xiàn):服務(wù)可以通過自動發(fā)現(xiàn)的形式找到它所依賴的服務(wù)
負(fù)載均衡:如果一個服務(wù)起動了多個容器,能夠自動實現(xiàn)請求的負(fù)載均衡
版本回退:如果發(fā)現(xiàn)新發(fā)布的程序版本有問題,可以立即回退到原來的版本
存儲編排:可以根據(jù)容器自身的需求自動創(chuàng)建存儲卷
一般我們對目標(biāo)環(huán)境壓測時候,指標(biāo)滿不足不了需求,最常見的處理方式就是擴容機器,不過業(yè)務(wù)訪問有高峰期,日常期,高峰期需要10個業(yè)務(wù)集群,日常期需要6個業(yè)務(wù)集群即可,還有流量激增問題,如何根據(jù)線上機器壓力動態(tài)擴容業(yè)務(wù)集群規(guī)模,或者縮容,是一個非常實用的技巧,這里推薦k8s的hpa控制器。
hap 全稱HorizontalPodAutoscaler
上面是k8s HPA 功能實現(xiàn)圖, Deployment, pod 是k8s入門基礎(chǔ)知識,不在本文介紹范圍,可自己查找資料學(xué)習(xí),或者參加vip課程會帶著大家詳細(xì)學(xué)習(xí)。
HAP實現(xiàn)首先要檢查 metrics-server是否安裝
可以使用?kubectl get po -n kube-system?查看安裝情況
如果有metrics-servcie相關(guān)pod說明安裝成功
metrics-server支持節(jié)點資源利用率監(jiān)控
接下來最核心的編排工作,由于文件太長,保留了核心配置說明,對cpu,memory做了上限制設(shè)置,這里為了快速實現(xiàn),設(shè)置規(guī)則是如果發(fā)現(xiàn)pod節(jié)點cpu超過10%,自動擴容,最大擴容10個
部署完成 可以看到HorizontalPodAutoscaler控制器,當(dāng)前資源利用率0%,目標(biāo)超過10%,就開始自動擴容
使用jmeter壓測,這時候發(fā)現(xiàn)節(jié)點使用率 超過10%,顯示976%,一個節(jié)點最大利用100%,應(yīng)該是擴容了10個節(jié)點
使用kubectl get po -n dev,看到當(dāng)前擴容情況,目標(biāo)完成
接下來測一下縮容情況:
關(guān)閉jmeter壓測,壓力變小,等待一會時間,會自動縮容,如下圖,nginx集群又恢復(fù)到1個節(jié)點