《Kubernetes知识篇:Kubernetes资源自动伸缩的三种方法》

文章目录2.3、VPA 2.4、KPA三、部署-服务四、HPA实现pod自动扩缩容 五、VPA实现pod自动扩缩容 六、KPA实现pod自动扩缩容总结:整理不易,如果对你有帮助,可否点赞关注一下?
一、背景
弹性伸缩是根据用户的业务需求和策略,自动“调整”其“弹性资源”的管理服务 。通过弹性伸缩功能,用户可设置定时、周期或监控策略,恰到好处地增加或减少“弹性资源”,并完成实例配置,保证业务平稳健康运行 。
二、K8S中自动伸缩的方案
在的生态中,在多个维度、多个层次提供了不同的组件来满足不同的伸缩场景 。
1、CA( ):Node级别自动扩/缩容-组件
2、HPA( Pod ):Pod个数自动扩/缩容
3、VPA( Pod ):Pod配置自动扩/缩容,主要是CPU、内存,addon-组件
2.1、CA 2.2、HPA 2.2.1、简介
scale命令可以来实现Pod的扩缩容功能,但是需要手动操作,面对线上环境的各种复杂情况,我们需要能够做到自动化的去感知业务,来自动进行扩缩容 。为此,提供了这样的一个资源对象:Pod (Pod水平自动伸缩),简称HPA,HPA通过监控分析一些控制器控制的所有Pod的负载变化情况来确定是否需要调整Pod的副本数量 。
1、Pod水平自动扩缩( Pod ) 可以基于CPU利用率自动扩缩r、、 和中的Pod数量 。除了CPU利用率,也可以基于其他应程序提供的自定义度量指标来执行自动扩缩 。Pod自动扩缩不适用于无法扩缩的对象,比如 。
2、Pod水平自动扩缩特性由API 资源和控制器实现 。资源决定了控制器的行为 。控制器会周期性地调整副本控制器或中的副本数量,以使得类似Pod平均CPU利用率、平均内存利用率这类观测到的度量值与用户所设定的目标值匹配 。
3、Pod水平自动扩缩器的实现是一个控制回路,由kube--控制器管理器的 ---pod--sync- 参数指定周期(默认值为 15 秒) 。
2.2.2、API版本
HPA的API有三个版本,通过 api- | grep 可看到,如下图所示:
【《Kubernetes知识篇:Kubernetes资源自动伸缩的三种方法》】补充说明:
1、/v1只支持基于CPU指标的缩放
2、/支持内存和自定义指标的缩放
3、/支持内存、自定义指标和、(额外指标)的缩放,但是目前也仅仅是处于beta阶段
2.3、VPA 2.3.1、简介
Pod (VPA):垂直Pod自动扩缩容,用户无需为其pod中的容器设置最新的资源 。配置后,它将根据使用情况自动设置,从而允许在节点上进行适当的调度,以便为每个pod提供适当的资源量 。
2.3.2、工作原理
VPA会自动计算这些Pod中容器的流程以及当前的CPU和内存使用情况,并使用这些数据来决定优化的资源限制和请求,以确保这些Pod始终处于较高的资源利用率的状态 。例如你有一个Pod使用了CPU的50%,但只请求10% 。VPA会认定该Pod消耗的CPU多于请求的CPU,那么它会使工作负载例如会重启Pod来生效新的推荐值,从而实现垂直的资源扩缩容 。
这里有几个点需要注意:
1、VPA目前还处于测试阶段,并未大规模生产使用
2、VPA 在伸缩的过程中是通过重启 Pod 来生效调整和 Limit 的值的,那么很多业务能否支持优雅的重启需要根据实际的情况来判断是否可以接受
3、VPA 扩容的上限便是 Pod 所在 Node 的物理资源大小,所以推荐与节点的自动扩缩容( )一起使用来解决这个问题
4、VPA 与 HPA 不建议一起使用,否则会出现一些预期外的情况
2.4、KPA 2.4.1、简介2.4.2、工作原理三、部署-服务

《Kubernetes知识篇:Kubernetes资源自动伸缩的三种方法》

文章插图
使用HPA之前,需要安装-或者,这样才可以获取节点和pod的资源使用情况 。检查-和是否可用最简单的办法是使用top命令,查看是否可以获取到pod的资源使用情况 。