自定义指标干扰检测回避和自定义排序的使用同 精确执行回避动作 部分中介绍的流程,此处介绍如何自定义自己的指标参与干扰检测回避流程
为了更好的基于NodeQOS配置的metric进行排序和精准控制,对metric引入属性的概念。
metric的属性包含如下几个,自定义的指标实现这些字段即可:
type metric struct {
Name WaterLineMetric
ActionPriority int
SortAble bool
SortFunc func(pods []podinfo.PodContext)
ThrottleAble bool
ThrottleQuantified bool
ThrottleFunc func(ctx *ExecuteContext, index int, ThrottleDownPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource)
RestoreFunc func(ctx *ExecuteContext, index int, ThrottleUpPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource)
EvictAble bool
EvictQuantified bool
EvictFunc func(wg *sync.WaitGroup, ctx *ExecuteContext, index int, totalReleasedResource *ReleaseResource, EvictPods EvictPods) (errPodKeys []string, released ReleaseResource)
}
用户可以自行定义自己的metric,在构造完成后,通过registerMetricMap()进行注册
针对需要自定义的指标,可以通过实现如下的方法,搭配通用的排序方法即可方便地实现pod的灵活自定义排序,以代表自定义metric指标,代表自定义的针对的排序策略
func <metric>Sorter(pods []podinfo.PodContext) {
orderedBy(classAndPriority, <metric-sort-func>, runningTime).Sort(pods)
}
其中<metric-sort-func>
需要实现如下的排序方法
func (p1, p2 podinfo.PodContext) int32
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )