Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义Kubernetes HPA算法

自定义Kubernetes HPA算法
EN

Stack Overflow用户
提问于 2019-09-13 16:03:08
回答 1查看 464关注 0票数 3

我正在尝试不仅通过自定义指标,而且通过与here描述的算法不同的算法来水平自动缩放工作负载

1/这可能吗?

2/如果不是,假设我不介意创建一个容器来为我做自动伸缩,而不是HPA,我应该调用什么接口来做与kubectl scale deployments/<name> --replicas=<newDesired>等效的工作?

以下是用例:

1/工作负载使用队列中的单个请求,处理它们,完成后删除它处理的项目,并使用下一条消息。

2/当有超过0条准备好的消息时-我希望扩展到准备好的消息数量(如果它更大,则扩展到最大规模)。当有0条消息被处理时-我想缩小到0。

将消息准备就绪/正在处理的消息发送到metrics服务器不是问题。

让HPA通过“消息就绪”进行扩展也不是问题。

但是..。

HPA算法逐渐扩展..。当我在队列中放置10个项目时-它首先是4,然后是8,然后是10。

它还会逐渐缩小,当它缩小时,它可以终止正在处理的pod -从而增加“就绪”并导致规模扩大。

如果我知道要调用的node.js代码(HPA的整数),我就会运行它:

代码语言:javascript
运行
AI代码解释
复制
    let desiredToSet = 0;
    if (!readyMessages && !processingMessages) {
      //if we have nothing in queue and all workers completed their work - we can scale down to minimum
      //we like it better than reducing slowly as this way we are not risking killing a worker that's working
      desiredToSet = config.minDesired;
    }
    else {
      //messages ready in the queue, increase number of workers up to max allowed
      desiredToSet = Math.max(Math.min(readyMessages + processingMessages, config.maxDesired), currentDeploymentReplicas);
    }
    //no point in sending a request to change, if nothing changed
    if (desiredToSet !== currentDeploymentReplicas) {
      <api to set desiredToSet of deployment to come here>;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-13 18:18:23

1)我认为这是不可能的。HPA控制器内置在Kubernetes中,我不认为它的算法可以扩展/替换。

2)可以,您可以创建一个自定义控制器,使用您自己的算法来完成HPA的工作。要通过Kubernetes API向上和向下扩展部署,您需要对部署执行manipulate the Scale sub-resource

具体地说,要将部署扩展到新数量的副本,您需要发出以下请求:

代码语言:javascript
运行
AI代码解释
复制
PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale

使用Scale资源(包含所需的副本计数)作为主体参数,如API参考中所述。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57926969

复制
相关文章
【操作指南】压测机器购买
Jmeter Suite是一套分布式的压测服务,需要有1台或者多台机器组成的K8S集群进行部署。所以在部署压测服务之前,请先自行购买机器。
Nanako
2021/01/21
5480
【操作指南】压测机器购买
3 元购买 Wafer1 指南
Jason
2017/12/12
2.2K0
3 元购买 Wafer1 指南
OCR技术的昨天今天和明天!2023年最全OCR技术指南!
OCR是一项科技革新,通过自动化大幅减少人工录入的过程,帮助用户从图像或扫描文档中提取文字,并将这些文字转换为计算机可读格式。这一功能在许多需要进一步处理数据的场景中,如身份验证、费用管理、自动报销、业务办理等都显得尤为实用。现如今,OCR解决方案会结合AI(人工智能)和ML(机器学习)技术,以自动化处理过程并提升数据提取的准确性。本文将介绍该技术的前世今生,一览该技术的阶段性发展:传统OCR技术统治的过去,深度学习OCR技术闪光的现在,预训练OCR大模型呼之欲出的未来!
合合技术团队
2023/07/13
2.8K0
OCR技术的昨天今天和明天!2023年最全OCR技术指南!
django-模板之自定义模板路径(一)
一般情况下我们的模板路径是位于app下的templates,我们可以根据实际情况自己定义模板的路径。
西西嘛呦
2020/08/26
1.5K0
自定义GridView分页模板
GridView较之DataGrid提供了更加强大、更加完善的功能,而且具备了丰富的可扩展功能,可以使用GridView提供的pagertemplate自定义分页模板:
Java架构师必看
2021/03/22
9950
Typecho 创建自定义模板
方法一 直接在当前模板目录下建立一个名为 category 的目录,然后在里面放上以你需要单独做模板分类的缩略名为文件名的 php 文件,比如 default.php,这样,在访问缩略名为default的分类时,它会自动调用这个模板。 方法二 在模板文件中使用 is 语法判断页面
团团生活志
2022/08/16
9550
vscode/webstorm自定义vue模板
在进行vue项目时,我们需要对编译器进一步配置来支持vue文件以及相关模板语法的高亮显示等。本文列出关于webstorm和vscode两种常用编译器的模板语法配置。
流眸
2020/06/02
2.4K0
vscode/webstorm自定义vue模板
夜莺自定义告警模板
要实现上面的需求很简单,夜莺监控的数据库表alert_cur_event保存了我们所需要的当前未处理的告警总数,而且夜莺监控也提供了查询未处理告警的面板,而对于告警恢复时候的值我们只需要根据自定义的恢复promql即可查询。
没有故事的陈师傅
2023/09/06
9740
夜莺自定义告警模板
MVEL2.x模板指南
MVEL 2.0提供了一个新的,更强大的,统一的模板引擎,汇集了1.2中引入的许多模板概念。 不幸的是,1.2中的模板引擎的架构不足以用于常规维护,并且决定从头开始完全重写模板引擎。
Abalone
2022/07/14
2.1K0
19.9 添加自定义模板
添加自定义模板 可以自定义一个常用模板,方便给新增主机添加监控项目 自定义aming模板 把其他自带模板里面的某些监控项目(比如cpu、内存等)复制到aming模板里 定义触发器 添加图形 自动发现,
运维小白
2018/02/07
8590
19.9 添加自定义模板
【SeeMusic】购买付费版本 ( 进入购买页面 | 购买流程 )
【SeeMusic】下载安装并注册 SeeMusic 软件 【SeeMusic】购买付费版本 ( 进入购买页面 | 购买流程 )
韩曙亮
2023/03/29
10.6K0
【SeeMusic】购买付费版本 ( 进入购买页面 | 购买流程 )
Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中。 1 2 3 4 def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse
用户1214487
2018/01/24
2.7K0
【kubernetes】新版helm3的三大概念+快速指南+自定义charts模板
chart看作linux中rpm包,repository看作repo仓库,release就是我们的yum install安装启动后的软件。
秋意零
2022/05/12
1.7K0
【kubernetes】新版helm3的三大概念+快速指南+自定义charts模板
入门指南:Node/JavaScript中的模板引擎
在本文中,我们将介绍如何用Node.js和Express来使用 Handlebars 模板引擎。还会介绍什么是模板引擎,以及如何使用把 Handlebars 建服务器端渲染(SSR) web应用程序。
前端小智@大迁世界
2020/10/28
2K0
入门指南:Node/JavaScript中的模板引擎
信息竞赛进阶指南--搜索相关(模板)
// 深度优先遍历框架 void dfs(int x) { v[x] = 1; for (int i = head[x]; i; i = next[i]) { int y = ver[i]; if (v[y]) continue; dfs(y); } } // DFS序 void dfs(int x) { a[++m] = x; v[x] = 1; for (int i = head[x]; i; i = next[i]) { int y = ver[i]; if (v[
风骨散人Chiam
2020/10/28
5940
[UWP 自定义控件]了解模板化控件(9):UI指南
TemplateSettings提供一组只读属性,用于在新建ControlTemplate时使用这些约定的属性。
dino.c
2019/01/18
1.3K0
[UWP 自定义控件]了解模板化控件(9):UI指南
Grafana使用zabbix自定义模板
前面讲解了如何创建template(传送门),下面讲解使用创建好的template创建一个panel。 Add row->Graph 新建一个graph,title命名为$group $host $item
我是李超人
2020/08/21
1.3K0
Grafana使用zabbix自定义模板
dedecms如何自定义专题模板
很多人看到别人的网站也是用dedecms建的,但是他们的专题做得很漂亮,也在想如何自定义dedecms专题模板呢?
ytkah
2022/03/14
8K0
spring security自定义指南
AuthenticationManager接口有个实现ProviderManager相当于一个provider chain,它里头有个List providers,通过provider来实现认证。
code4it
2018/09/17
1.6K0
点击加载更多

相似问题

Kubernetes HPA自定义伸缩规则

15

Kubernetes HPA行为

123

Kubernetes HPA实现细节

10

Kubernetes HPA禁用缩放

30

为什么Kubernetes HPA转换自定义指标?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档