forked from kubernetes/kubernetes
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'gtest/tke/v1.20.6' into 'tke/v1.20.6' (merge request !458)
feat(*): support batch schedule on eklet ip resource MR 描述 / 目的: 虚拟节点支持批量调度,IP资源感知 关联 issue: Fixes # 特性合入tke分支,注意事项及测试case: http://tapd.oa.com/eks/prong/stories/view/1020426016865778281 该特性已在eks项目中发布,具体实现及设计方案: http://tapd.oa.com/eks/prong/stories/view/1020426016863511325 代码审查须知: 无 MR 是否对用户有影响?: 无
- Loading branch information
Showing
8 changed files
with
232 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
57 changes: 57 additions & 0 deletions
57
pkg/scheduler/framework/plugins/fitipresource/fit_ip_resource.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
package fitipresource | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
v1 "k8s.io/api/core/v1" | ||
"k8s.io/apimachinery/pkg/runtime" | ||
"k8s.io/klog/v2" | ||
"k8s.io/kubernetes/pkg/scheduler/framework" | ||
"k8s.io/kubernetes/pkg/scheduler/util" | ||
) | ||
|
||
const ( | ||
// Name is the name of the plugin used in the plugin registry and configurations. | ||
Name = "FitIPResource" | ||
) | ||
|
||
type FitIPResource struct { | ||
} | ||
|
||
var _ framework.FilterPlugin = &FitIPResource{} | ||
|
||
// Name returns name of the plugin. It is used in logs, etc. | ||
func (f *FitIPResource) Name() string { | ||
return Name | ||
} | ||
|
||
// Filter invoked at the filter extension point. | ||
func (f *FitIPResource) Filter(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status { | ||
node := nodeInfo.Node() | ||
if node == nil { | ||
return framework.NewStatus(framework.Error, fmt.Sprintf("node not found")) | ||
} | ||
if !util.IsEkletNode(node) { | ||
// 不是eklet节点,调度器放过 | ||
return nil | ||
} | ||
klog.V(4).Infof("Run filter FitIPResource for pod %s on eklet node \"%s\".", pod.Name, node.Name) | ||
|
||
allowedIPCount, exists := util.AllowedIPCount(node) | ||
if !exists { // when eklet doesn't work immediately, skip this policy | ||
klog.V(4).Infof("pod \"%s/%s\" skip filter FitIPResource on node \"%s\" because no available-ip-count label on node now.", pod.Namespace, pod.Name, node.Name) | ||
return nil | ||
} | ||
|
||
usedIPResource := nodeInfo.UsedIPResource() | ||
klog.V(4).Infof("node %s consume ip resource %d, allowedIPCount %d", node.Name, usedIPResource, allowedIPCount) | ||
if allowedIPCount <= usedIPResource { | ||
return framework.NewStatus(framework.UnschedulableAndUnresolvable, fmt.Sprintf("Insufficient ip resource")) | ||
} | ||
return nil | ||
} | ||
|
||
// New initializes a new plugin and returns it. | ||
func New(_ runtime.Object, _ framework.Handle) (framework.Plugin, error) { | ||
return &FitIPResource{}, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.