k8s-弹性伸缩

一、HPA工作机制

HPA(Horizontal Pod Autoscaler)是用来控制Pod水平伸缩的控制器,HPA周期性检查Pod的度量数据,计算满足HPA资源所配置的目标数值所需的副本数量,进而调整目标资源(如Deployment)的replicas字段。

HPA:根据度量值计算Pod的数量。可以配置单个和多个度量指标,配置单个度量指标时,只需要对Pod的当前度量数据求和,除以期望目标值,然后向上取整,就能得到期望的副本数。例如有一个Deployment控制有3个Pod,每个Pod的CPU使用率是70%、50%、90%,而HPA中配置的期望值是50%,计算期望副本数=(70 + 50 + 90)/50 = 4.2,向上取整得到5,即期望副本数就是5。

二、使用示例

创建一个HPA,期望CPU的利用率为70%,副本数的范围是1-10。

创建后HPA查看。

可以看到,TARGETS的期望值是70%,而实际是0%,这就意味着HPA会做出缩容动作,期望副本数量=(0+0+0+0)/70=0,但是由于最小副本数为1,所以Pod数量会调整为1。等待一段时间,可以看到Pod数量变为1。

查看HPA详情,可以在Events里面看到这样一条记录。这表示HPA在21秒前成功的执行了缩容动作,新的Pod数量为1,原因是所有度量数量都比目标值低。

复制代码
$ kubectl describe hpa scale


如果再查看Deployment的详情,可以在Events里面看到这样一条记录。这表示Deployment的副本数量被设置为1了,跟HPA中看到的一致。
$ kubectl describe deploy nginx-deployment

三、Cluster AutoScaler

Cluster Autoscaler是Kubernetes提供的集群节点弹性伸缩组件,根据Pod调度状态及资源使用情况对集群的节点进行自动扩容缩容。

相关推荐
是小小张呀17 分钟前
WSL Ubuntu修改主机名重启后失效解决方案
linux
一个有温度的技术博主1 小时前
Redis系列三:在linux上安装Redis
linux·数据库·redis
vanvivo1 小时前
Nginx中如何配置WebSocket代理?
运维·websocket·nginx
m0_694845571 小时前
Oh My Zsh 使用指南:Zsh 终端配置与插件管理教程
服务器·前端·小程序·开源·github
阿常呓语1 小时前
Linux命令 date详解
linux·运维·服务器·linux command
xlp666hub1 小时前
【Linux驱动实战】:最简单的内核模块
linux·面试
虾..1 小时前
Linux HTTP服务器
linux·服务器·http
Java小白笔记2 小时前
Nginx中配置IP白名单动态刷新
运维·tcp/ip·nginx
小尔¥2 小时前
Nginx性能优化与监控
运维·nginx·性能优化
margu_1682 小时前
【Docker】nscenter命令详解
运维·docker·容器