K8S水平伸缩器 - 自动伸缩微服务实例数量
作者:justmine
頭條號:大數據達摩院
微信公眾號:大數據處理系統
創作不易,在滿足創作共用版權協議的基礎上可以轉載,但請以超鏈接形式注明出處。
為了方便大家閱讀,可以關注頭條號或微信公眾號,后續所有的文章將在移動端首發,想學習更多云原生知識,請關注我。
前言
k8s已經成為了容器管理和編排的標準,當應用容器化到K8S后,如何根據服務器資源自動伸縮應用,以應對任何的突發流量。
請考慮如何實現以下應用場景?
當服務器高負載時,自動擴容應用服務運行數量;當服務器低負載時,自動縮減應用服務運行數量,以實現“合適規模”的應用部署,從而更好地利用集群資源。
本篇就來演示K8S如何實現上面的場景。
準備工作
安裝metrics-server
項目地址:
https://github.com/kubernetes-sigs/metrics-server
Kubernetes Metrics Server 是集群中資源使用情況數據的聚合器。
下載
wget https://github.com/kubernetes-sigs/metrics-server/archive/v0.3.6.tar.gz && tar -xzf v0.3.6.tar.gz;
部署
# Kubernetes 1.7$ kubectl create -f metrics-server-0.3.6/deploy/1.7/# Kubernetes > 1.8$ kubectl create -f metrics-server-0.3.6/deploy/1.8+/驗證
kubectl get deployment metrics-server -n kube-system
演示
1、創建一個簡單的 Apache Web 服務器應用程序
kubectl run httpd --image=httpd --requests=cpu=100m --limits=cpu=200m --expose --port=80
向此Apache Web服務器Pod提供100 millicpu和200 MB內存,并在端口80上提供服務。
2、為 httpd 部署創建 Horizontal Pod Autoscaler 資源。
kubectl autoscale deployment httpd --cpu-percent=50 --min=1 --max=10
為Apache Web服務器創建50%CPU利用率的Autoscaler,并設置伸縮參數,如下:
min(下限)=1:當平均CPU負載低于50%時,Autoscaler嘗試減少部署中的Pod數量,最低1個。
max(上限)=10:當平均CPU負載大于50%時,Autoscaler嘗試增加部署中的Pod數量,最高10個。
查看Autoscaler詳細信息,如下:
命令:kubectl describe hpa/httpd
3、模擬高負載
向Apache Web服務器并發50萬請求,命令如下:
kubectl run apache-bench -i --tty --rm --image=httpd -- ab -n 500000 -c 1000 http://httpd.default.svc.cluster.local/
輸出:
4、查看Apache Web服務器整個自動伸縮過程
kubectl get horizontalpodautoscaler.autoscaling/httpd --watch
從上面可以看出,當服務器高負載時,Pod數量從1擴容到了10;當服務器低負載時,Pod數量從10又縮減到了1,這就是K8S的水平伸縮過程,也是K8S相對于傳統部署方式的突出優勢。
總結
本篇演示了K8S的水平伸縮,這種伸縮方式非常適合于無狀態服務,那么問題來了,如下:
如何伸縮有狀態服務呢?
答案:使用K8S的垂直伸縮器。
當K8S集群資源不夠,如何進行集群級別的伸縮呢?
答案:使用K8S的集群伸縮器。
欲知后事如何,請關注下回演示。
工欲善其事,必先利其器,K8S還有很多超能力,想學習更多K8S知識,及相關實踐,可以關注我。
參考
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/autoscaling/horizontal-pod-autoscaler.md
https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/horizontal-pod-autoscaler.html
總結
以上是生活随笔為你收集整理的K8S水平伸缩器 - 自动伸缩微服务实例数量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dynatrace成功扩展kuberne
- 下一篇: SqlServer 利用游标批量更新数据