K8S水平伸缩器 - 自动伸缩微服务实例数量

栏目: IT技术 · 发布时间: 4年前

内容简介:作者:justmine头条号:大数据达摩院微信公众号:大数据处理系统

作者: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

K8S水平伸缩器 - 自动伸缩微服务实例数量

3、模拟高负载

向Apache Web服务器并发50万请求,命令如下:

kubectl run apache-bench -i --tty --rm --image=httpd -- ab -n 500000 -c 1000 http://httpd.default.svc.cluster.local/

输出:

K8S水平伸缩器 - 自动伸缩微服务实例数量

4、查看Apache Web服务器整个自动伸缩过程

kubectl get horizontalpodautoscaler.autoscaling/httpd --watch

K8S水平伸缩器 - 自动伸缩微服务实例数量

从上面可以看出,当服务器高负载时,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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

玻璃笼子

玻璃笼子

[美]尼古拉斯·卡尔 / 杨柳 / 中信出版社 / 2015-11 / 49.00元

这是一本关于自动化的书,它提醒我们自动化对人类的影响,人们心安理得享受技术带来的便利却忽视了,它已经渗透进了生活和工作改变了我们的思维和认知方式。商家在设计程序和应用时,早就把他们的想法埋入了编程和APP中。 卡尔的作品无疑是给我们这个时代灌入了的一剂清醒药。他独特的思考问题角度,犀利甚至略为偏激 的言论再加上丰富的*前沿的科技案例会让人读起来畅快淋漓,且醍醐灌顶,意识到自动化等高科技潜移默......一起来看看 《玻璃笼子》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具