Azure Kubernetes 水平自動擴(kuò)充Pod,azurewave technology incAzure Kubernetes 水平自動擴(kuò)充Pod當(dāng)我們將應(yīng)用部署到AKS中以pod的形式對外提供服務(wù)時,為了確保用戶可以獲得良好的使用體驗,我們需要關(guān)注如下兩種情況:POD因為不明原有掛掉,導(dǎo)致服務(wù)不可用當(dāng)出現(xiàn)大量......
當(dāng)我們將應(yīng)用部署到AKS中以pod的形式對外提供服務(wù)時,為了確保用戶可以獲得良好的使用體驗,我們需要關(guān)注如下兩種情況:
POD因為不明原有掛掉,導(dǎo)致服務(wù)不可用
當(dāng)出現(xiàn)大量用戶訪問時,Pod在高負(fù)荷的情況下能否支撐我們的應(yīng)用
對于Pod的高可用性我們可以使用AKS的deployment控制器來確保Pod可以持續(xù)對外提供服務(wù),但是對于面臨大量用戶訪問時,我們就需要擴(kuò)展我們的資源來滿足業(yè)務(wù)需求。前面的文章中給大家介紹了手動擴(kuò)展pod來滿足業(yè)務(wù)的擴(kuò)展需求,但是相信大家都已經(jīng)意識到了如果我們?nèi)斯けO(jiān)控pods,人工進(jìn)行調(diào)整副本那么這個工作量無疑是巨大的,但kubernetes已經(jīng)有了相應(yīng)的機(jī)制來應(yīng)對了。這就是我們今天要為大家介紹的水平自動擴(kuò)充POD(HPA)HPA全稱Horizontal Pod Autoscaler控制器工作流程
HPA的工作流程如下:
創(chuàng)建HPA資源對象,關(guān)聯(lián)對應(yīng)資源例如Deployment,設(shè)定目標(biāo)CPU使用率閾值,最大,最小replica數(shù)量。前提:pod一定要設(shè)置資源限制,參數(shù)request,HPA才會工作。
HPA控制器每隔15秒鐘(可以通過設(shè)置controller manager的–horizontalpodautoscalersyncperiod參數(shù)設(shè)定,默認(rèn)15s)通過觀測metrics值獲取資源使用信息
HPA控制器將獲取資源使用信息與HPA設(shè)定值進(jìn)行對比,計算出需要調(diào)整的副本數(shù)量
根據(jù)計算結(jié)果調(diào)整副本數(shù)量,使得單個POD的CPU使用率盡量逼近期望值,但不能照顧設(shè)定的最大,最小值。
以上2,3,4周期循環(huán)
說了這么多,下面我們來看下如何配置HPA:在配置HPA之前,我們需要先了解Node節(jié)點的配置情況檢查與配置resource limit使用kubectl get nodes命令檢查node信息(node名稱)使用命令 kubectl describe nodes NODE_NAME 確認(rèn) Node 資源配置的狀態(tài), 因為我們之前沒有配置Resource quata,因此我們需要先設(shè)定好 Resource 限制:打開我們之前創(chuàng)建的yaml文件,修改 Resources 配置, 其中 CPU 配置 Container 只使用 1 個 CPU 單元, Request 限制使用 0.5 個 CPU 單元:修改完成以后使用kubectl apply f FILE_NAME重新部署對應(yīng)POD
設(shè)置水平自動擴(kuò)充HPA使用命令 kubectl autoscale deployment nginxcpupercent=1 min=1 max=10 將自動擴(kuò)充設(shè)定為 CPUpercent 設(shè)定為1%, 并且將 minimum replica 數(shù)設(shè)為 1, maximum replica 數(shù)設(shè)為 10.
配置完成以后我們使用webbench來對我們部署的NGINX網(wǎng)站進(jìn)行壓力測試:使用命令 kubectl get hpa 觀察水平自動擴(kuò)充狀態(tài), 請注意 Target 中有兩個數(shù)字, 是 Current/Target CPU 使用率使用命令 kubectl get deployment 觀察 deployment 數(shù)量有無增加使用命令 kubectl get pod 觀察 pod 數(shù)量有無增加, 并且注意狀態(tài), 如果 1 表示水平自動擴(kuò)充 (hpa) 已經(jīng)成功設(shè)置且生效了
清除資源測試完成以后,我們可以使用kubect delete f FILE_NAME 來刪除對應(yīng)的deployment資源:使用kubectl delete hpa nginx來刪除hpa資源:
特別聲明:以上文章內(nèi)容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部