GetResourceReplicas
2023-02-07 11:21:12 6 举报
AI智能生成
hpa核心算法
作者其他创作
大纲/内容
metrics, timestamp, err := c.metricsClient.GetResourceMetric(resource, namespace, selector, container)<br> <font color="#b71c1c">获取指标以及时间</font>
podList, err := c.podLister.Pods(namespace).List(selector)<br> <font color="#b71c1c">获取工作负载所有关联pod</font>
readyPodCount, unreadyPods, missingPods, ignoredPods := groupPods(podList, metrics, resource, c.cpuInitializationPeriod, c.delayOfInitialReadinessStatus)<br> removeMetricsForPods(metrics, ignoredPods)<br> removeMetricsForPods(metrics, unreadyPods)<br> <font color="#b71c1c">对pod进行分组,readyPodCount, unreadyPods, missingPods, ignoredPods并从指标中去除ignoredPods,unreadyPods</font>
requests, err := calculatePodRequests(podList, container, resource)<br> <font color="#b71c1c">计算所有pod的request用量</font><br>
usageRatio, utilization, rawUtilization, err := metricsclient.GetResourceUtilizationRatio(metrics, requests, targetUtilization)<br><font color="#b71c1c">获取使用比率,当前资源利用率,平均使用量(基于request计算)</font>
rebalanceIgnored := len(unreadyPods) > 0 && usageRatio > 1.0 <font color="#b71c1c">未就绪pod大于0,并且usageRatio>1.0。可以忽略伸缩。等待就绪pod完成,会重新计算指标,避免频繁扩容</font>
if !rebalanceIgnored && len(missingPods) == 0 {<br> if math.Abs(1.0-usageRatio) <= c.tolerance {<br> // return the current replicas if the change would be too small<br> return currentReplicas, utilization, rawUtilization, timestamp, nil<br> }<br><br> // if we don't have any unready or missing pods, we can calculate the new replica count now<br> return int32(math.Ceil(usageRatio * float64(readyPodCount))), utilization, rawUtilization, timestamp, nil<br> }
...
收藏
收藏
0 条评论
下一页
为你推荐
查看更多