gpt4 book ai didi

kubernetes - 自定义 Kubernetes HPA 算法

转载 作者:行者123 更新时间:2023-12-01 13:13:42 25 4
gpt4 key购买 nike

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

1/这可能吗?

2/如果不是,并且假设我不介意创建一个容器来代替 HPA 为我执行自动缩放,我应该调用什么 API 来执行相当于 kubectl scale deployments/<name> --replicas=<newDesired> 的操作? ?

这是用例:

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

2/当准备好的消息多于 0 条时 - 我想扩大到准备好的消息数量(或者最大规模,如果它更大)。当正在处理 0 条消息时 - 我想缩小到 0。

准备好消息/正在处理的消息到度量服务器不是问题。

通过“消息准备好”让 HPA 扩展也不是问题。

但是……

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

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

如果我知道要调用的 api(而不是 HPA),我会运行的 node.js 代码:

    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>;
}

最佳答案

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

2) 是的,您可以创建一个自定义 Controller ,使用您自己的算法来完成 HPA 的工作。要通过 Kubernetes API 上下扩展部署,您 manipulate the Scale sub-resource部署。

具体来说,要将 Deployment 扩展到新的副本数量,您可以提出以下请求:

PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale

Scale资源(包含所需的副本数)作为正文参数,如 API 引用中所述。

关于kubernetes - 自定义 Kubernetes HPA 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57926969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com