K8S HPA在CRD Operator中的应用
K8S HPA在Trino Operator中的应用
HPA(Horizontal Pod Autoscaler)
水平扩缩意味着对增加的负载的响应是部署更多的 Pod。 这与“垂直(Vertical)”扩缩不同,对于 Kubernetes, 垂直扩缩意味着将更多资源(例如:内存或 CPU)分配给已经为工作负载运行的 Pod。
https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/
官方HPA文档里并没有说明HPA对CRD(自定义资源)的支持。仅支持K8S自带Deployment 或者 StatefulSet等资源。
https://github.com/apache/flink-kubernetes-operator/blob/main/examples/hpa/basic-hpa.yaml
后来在社区里发现,有人使用HPA来扩缩CRD
仔细翻阅CRD的文档,里面说明了关于HPA的支持。
主要是暴露Selector、Replicas字段。
现状
防止用户方手动调节与平台方自动调节冲突,将副本数的控制权收敛到HPA,用户可调整Min来间接控制副本数
应用形式
指标
目前版本支持CPU、Memory的利用率
扩缩容行为
可根据个数或者百分比进行缩放,会计算其速率,取最大的。
例如:
当节点副本数为10,按个数会扩2个,按百分比会扩1个,HPA会选择扩2个。
当节点副本数为40,按个数会扩2个,按百分比会扩4个,HPA会选择扩4个。
应用
原有的HPA基于Request(下限)来计算利用率。而目前云平台的浮动配置普遍,上下限四倍配比。
Request、Limit本身是优化资源利用率。而HPA自身基于Request(下限)的与我们的理念冲突,
目前平台层会在中间做一层转化,使其基于limit进行扩缩容,例如:
request {"cpu":"1","memory":"4Gi"}
limit {"cpu":"10","memory":"40Gi"}
用户侧以limit为指标,设置 60%
平台侧会放大同样的比例以request为指标,用户侧会以limit为指标,设置 为600%
这样即利用的Request、Limit对资源的利用率提升,也充分利用了HPA的资源利用率的提升。
注意事项
因容忍度的存在,HPA 存在扩容死区
现象:当 Request(下限)=Limit (上限)时,期望利用率超过 90%时,无法正常扩容。
原因剖析:HPA 中存在容忍度(默认为 10%),指标变化幅度小于容忍度时,HPA 会忽略本次扩/缩动作。若当期望利用率为 90%时,则实际利用率在 81%-99%之间,都会被 HPA 忽略。
避坑指南:当 Request(下限)=Limit (上限)时,避免设置过高的期望利用率,一来避免扩容死区;二来被动扩容有一定的迟滞时间,留下更多的缓冲余量以应对突增流量。
HPA的应用有可能导致更多不可控性
精彩分享 | 欢乐游戏 Istio 云原生服务网格三年实践思考
部署形式
__EOF__

本文链接:https://www.cnblogs.com/LiPengFeiii/p/17673583.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2021-09-02 JVM 内存模型