mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 21:17:23 +00:00
merge packages of scheduler/core and scheduler
Signed-off-by: Jerry Ge <jerry.ge@arm.com>
This commit is contained in:
parent
39e951a08d
commit
570365178a
@ -188,7 +188,7 @@ func (c *Configurator) create() (*Scheduler, error) {
|
|||||||
)
|
)
|
||||||
debugger.ListenForSignal(c.StopEverything)
|
debugger.ListenForSignal(c.StopEverything)
|
||||||
|
|
||||||
algo := core.NewGenericScheduler(
|
algo := NewGenericScheduler(
|
||||||
c.schedulerCache,
|
c.schedulerCache,
|
||||||
c.nodeInfoSnapshot,
|
c.nodeInfoSnapshot,
|
||||||
c.percentageOfNodesToScore,
|
c.percentageOfNodesToScore,
|
||||||
@ -374,7 +374,7 @@ func dedupPluginConfigs(pc []schedulerapi.PluginConfig) ([]schedulerapi.PluginCo
|
|||||||
func MakeDefaultErrorFunc(client clientset.Interface, podLister corelisters.PodLister, podQueue internalqueue.SchedulingQueue, schedulerCache internalcache.Cache) func(*framework.QueuedPodInfo, error) {
|
func MakeDefaultErrorFunc(client clientset.Interface, podLister corelisters.PodLister, podQueue internalqueue.SchedulingQueue, schedulerCache internalcache.Cache) func(*framework.QueuedPodInfo, error) {
|
||||||
return func(podInfo *framework.QueuedPodInfo, err error) {
|
return func(podInfo *framework.QueuedPodInfo, err error) {
|
||||||
pod := podInfo.Pod
|
pod := podInfo.Pod
|
||||||
if err == core.ErrNoNodesAvailable {
|
if err == ErrNoNodesAvailable {
|
||||||
klog.V(2).InfoS("Unable to schedule pod; no nodes are registered to the cluster; waiting", "pod", klog.KObj(pod))
|
klog.V(2).InfoS("Unable to schedule pod; no nodes are registered to the cluster; waiting", "pod", klog.KObj(pod))
|
||||||
} else if fitError, ok := err.(*framework.FitError); ok {
|
} else if fitError, ok := err.(*framework.FitError); ok {
|
||||||
// Inject UnschedulablePlugins to PodInfo, which will be used later for moving Pods between queues efficiently.
|
// Inject UnschedulablePlugins to PodInfo, which will be used later for moving Pods between queues efficiently.
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package core
|
package scheduler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package core
|
package scheduler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
@ -45,7 +45,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/core"
|
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework"
|
"k8s.io/kubernetes/pkg/scheduler/framework"
|
||||||
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
|
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
|
||||||
frameworkruntime "k8s.io/kubernetes/pkg/scheduler/framework/runtime"
|
frameworkruntime "k8s.io/kubernetes/pkg/scheduler/framework/runtime"
|
||||||
@ -71,7 +70,7 @@ type Scheduler struct {
|
|||||||
// by NodeLister and Algorithm.
|
// by NodeLister and Algorithm.
|
||||||
SchedulerCache internalcache.Cache
|
SchedulerCache internalcache.Cache
|
||||||
|
|
||||||
Algorithm core.ScheduleAlgorithm
|
Algorithm ScheduleAlgorithm
|
||||||
|
|
||||||
Extenders []framework.Extender
|
Extenders []framework.Extender
|
||||||
|
|
||||||
@ -548,7 +547,7 @@ func (sched *Scheduler) scheduleOne(ctx context.Context) {
|
|||||||
// succeeds, the pod should get counted as a success the next time we try to
|
// succeeds, the pod should get counted as a success the next time we try to
|
||||||
// schedule it. (hopefully)
|
// schedule it. (hopefully)
|
||||||
metrics.PodUnschedulable(fwk.ProfileName(), metrics.SinceInSeconds(start))
|
metrics.PodUnschedulable(fwk.ProfileName(), metrics.SinceInSeconds(start))
|
||||||
} else if err == core.ErrNoNodesAvailable {
|
} else if err == ErrNoNodesAvailable {
|
||||||
// No nodes available is counted as unschedulable rather than an error.
|
// No nodes available is counted as unschedulable rather than an error.
|
||||||
metrics.PodUnschedulable(fwk.ProfileName(), metrics.SinceInSeconds(start))
|
metrics.PodUnschedulable(fwk.ProfileName(), metrics.SinceInSeconds(start))
|
||||||
} else {
|
} else {
|
||||||
|
@ -49,7 +49,6 @@ import (
|
|||||||
"k8s.io/client-go/tools/events"
|
"k8s.io/client-go/tools/events"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/scheduling"
|
"k8s.io/kubernetes/pkg/controller/volume/scheduling"
|
||||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/core"
|
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework"
|
"k8s.io/kubernetes/pkg/scheduler/framework"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
|
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature"
|
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature"
|
||||||
@ -110,11 +109,11 @@ func podWithResources(id, desiredHost string, limits v1.ResourceList, requests v
|
|||||||
}
|
}
|
||||||
|
|
||||||
type mockScheduler struct {
|
type mockScheduler struct {
|
||||||
result core.ScheduleResult
|
result ScheduleResult
|
||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (es mockScheduler) Schedule(ctx context.Context, extenders []framework.Extender, fwk framework.Framework, state *framework.CycleState, pod *v1.Pod) (core.ScheduleResult, error) {
|
func (es mockScheduler) Schedule(ctx context.Context, extenders []framework.Extender, fwk framework.Framework, state *framework.CycleState, pod *v1.Pod) (ScheduleResult, error) {
|
||||||
return es.result, es.err
|
return es.result, es.err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,7 +310,7 @@ func TestSchedulerScheduleOne(t *testing.T) {
|
|||||||
name string
|
name string
|
||||||
injectBindError error
|
injectBindError error
|
||||||
sendPod *v1.Pod
|
sendPod *v1.Pod
|
||||||
algo core.ScheduleAlgorithm
|
algo ScheduleAlgorithm
|
||||||
registerPluginFuncs []st.RegisterPluginFunc
|
registerPluginFuncs []st.RegisterPluginFunc
|
||||||
expectErrorPod *v1.Pod
|
expectErrorPod *v1.Pod
|
||||||
expectForgetPod *v1.Pod
|
expectForgetPod *v1.Pod
|
||||||
@ -323,7 +322,7 @@ func TestSchedulerScheduleOne(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "error reserve pod",
|
name: "error reserve pod",
|
||||||
sendPod: podWithID("foo", ""),
|
sendPod: podWithID("foo", ""),
|
||||||
algo: mockScheduler{core.ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
algo: mockScheduler{ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
||||||
registerPluginFuncs: []st.RegisterPluginFunc{
|
registerPluginFuncs: []st.RegisterPluginFunc{
|
||||||
st.RegisterReservePlugin("FakeReserve", st.NewFakeReservePlugin(framework.NewStatus(framework.Error, "reserve error"))),
|
st.RegisterReservePlugin("FakeReserve", st.NewFakeReservePlugin(framework.NewStatus(framework.Error, "reserve error"))),
|
||||||
},
|
},
|
||||||
@ -336,7 +335,7 @@ func TestSchedulerScheduleOne(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "error permit pod",
|
name: "error permit pod",
|
||||||
sendPod: podWithID("foo", ""),
|
sendPod: podWithID("foo", ""),
|
||||||
algo: mockScheduler{core.ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
algo: mockScheduler{ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
||||||
registerPluginFuncs: []st.RegisterPluginFunc{
|
registerPluginFuncs: []st.RegisterPluginFunc{
|
||||||
st.RegisterPermitPlugin("FakePermit", st.NewFakePermitPlugin(framework.NewStatus(framework.Error, "permit error"), time.Minute)),
|
st.RegisterPermitPlugin("FakePermit", st.NewFakePermitPlugin(framework.NewStatus(framework.Error, "permit error"), time.Minute)),
|
||||||
},
|
},
|
||||||
@ -349,7 +348,7 @@ func TestSchedulerScheduleOne(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "error prebind pod",
|
name: "error prebind pod",
|
||||||
sendPod: podWithID("foo", ""),
|
sendPod: podWithID("foo", ""),
|
||||||
algo: mockScheduler{core.ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
algo: mockScheduler{ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
||||||
registerPluginFuncs: []st.RegisterPluginFunc{
|
registerPluginFuncs: []st.RegisterPluginFunc{
|
||||||
st.RegisterPreBindPlugin("FakePreBind", st.NewFakePreBindPlugin(framework.AsStatus(preBindErr))),
|
st.RegisterPreBindPlugin("FakePreBind", st.NewFakePreBindPlugin(framework.AsStatus(preBindErr))),
|
||||||
},
|
},
|
||||||
@ -362,7 +361,7 @@ func TestSchedulerScheduleOne(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "bind assumed pod scheduled",
|
name: "bind assumed pod scheduled",
|
||||||
sendPod: podWithID("foo", ""),
|
sendPod: podWithID("foo", ""),
|
||||||
algo: mockScheduler{core.ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
algo: mockScheduler{ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
||||||
expectBind: &v1.Binding{ObjectMeta: metav1.ObjectMeta{Name: "foo", UID: types.UID("foo")}, Target: v1.ObjectReference{Kind: "Node", Name: testNode.Name}},
|
expectBind: &v1.Binding{ObjectMeta: metav1.ObjectMeta{Name: "foo", UID: types.UID("foo")}, Target: v1.ObjectReference{Kind: "Node", Name: testNode.Name}},
|
||||||
expectAssumedPod: podWithID("foo", testNode.Name),
|
expectAssumedPod: podWithID("foo", testNode.Name),
|
||||||
eventReason: "Scheduled",
|
eventReason: "Scheduled",
|
||||||
@ -370,7 +369,7 @@ func TestSchedulerScheduleOne(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "error pod failed scheduling",
|
name: "error pod failed scheduling",
|
||||||
sendPod: podWithID("foo", ""),
|
sendPod: podWithID("foo", ""),
|
||||||
algo: mockScheduler{core.ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, errS},
|
algo: mockScheduler{ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, errS},
|
||||||
expectError: errS,
|
expectError: errS,
|
||||||
expectErrorPod: podWithID("foo", ""),
|
expectErrorPod: podWithID("foo", ""),
|
||||||
eventReason: "FailedScheduling",
|
eventReason: "FailedScheduling",
|
||||||
@ -378,7 +377,7 @@ func TestSchedulerScheduleOne(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "error bind forget pod failed scheduling",
|
name: "error bind forget pod failed scheduling",
|
||||||
sendPod: podWithID("foo", ""),
|
sendPod: podWithID("foo", ""),
|
||||||
algo: mockScheduler{core.ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
algo: mockScheduler{ScheduleResult{SuggestedHost: testNode.Name, EvaluatedNodes: 1, FeasibleNodes: 1}, nil},
|
||||||
expectBind: &v1.Binding{ObjectMeta: metav1.ObjectMeta{Name: "foo", UID: types.UID("foo")}, Target: v1.ObjectReference{Kind: "Node", Name: testNode.Name}},
|
expectBind: &v1.Binding{ObjectMeta: metav1.ObjectMeta{Name: "foo", UID: types.UID("foo")}, Target: v1.ObjectReference{Kind: "Node", Name: testNode.Name}},
|
||||||
expectAssumedPod: podWithID("foo", testNode.Name),
|
expectAssumedPod: podWithID("foo", testNode.Name),
|
||||||
injectBindError: errB,
|
injectBindError: errB,
|
||||||
@ -390,7 +389,7 @@ func TestSchedulerScheduleOne(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "deleting pod",
|
name: "deleting pod",
|
||||||
sendPod: deletingPod("foo"),
|
sendPod: deletingPod("foo"),
|
||||||
algo: mockScheduler{core.ScheduleResult{}, nil},
|
algo: mockScheduler{ScheduleResult{}, nil},
|
||||||
eventReason: "FailedScheduling",
|
eventReason: "FailedScheduling",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -928,7 +927,7 @@ func setupTestScheduler(queuedPodStore *clientcache.FIFO, scache internalcache.C
|
|||||||
frameworkruntime.WithPodNominator(internalqueue.NewPodNominator(informerFactory.Core().V1().Pods().Lister())),
|
frameworkruntime.WithPodNominator(internalqueue.NewPodNominator(informerFactory.Core().V1().Pods().Lister())),
|
||||||
)
|
)
|
||||||
|
|
||||||
algo := core.NewGenericScheduler(
|
algo := NewGenericScheduler(
|
||||||
scache,
|
scache,
|
||||||
internalcache.NewEmptySnapshot(),
|
internalcache.NewEmptySnapshot(),
|
||||||
schedulerapi.DefaultPercentageOfNodesToScore,
|
schedulerapi.DefaultPercentageOfNodesToScore,
|
||||||
@ -1274,7 +1273,7 @@ func TestSchedulerBinding(t *testing.T) {
|
|||||||
stop := make(chan struct{})
|
stop := make(chan struct{})
|
||||||
defer close(stop)
|
defer close(stop)
|
||||||
scache := internalcache.New(100*time.Millisecond, stop)
|
scache := internalcache.New(100*time.Millisecond, stop)
|
||||||
algo := core.NewGenericScheduler(
|
algo := NewGenericScheduler(
|
||||||
scache,
|
scache,
|
||||||
nil,
|
nil,
|
||||||
0,
|
0,
|
||||||
|
Loading…
Reference in New Issue
Block a user