mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Merge pull request #84197 from ahg-g/ahg-snapshot
move nodeinfo/snapshot.go into its own package
This commit is contained in:
commit
9eb73ee545
@ -21,6 +21,7 @@ go_library(
|
|||||||
"//pkg/scheduler/internal/queue:go_default_library",
|
"//pkg/scheduler/internal/queue:go_default_library",
|
||||||
"//pkg/scheduler/metrics:go_default_library",
|
"//pkg/scheduler/metrics:go_default_library",
|
||||||
"//pkg/scheduler/nodeinfo:go_default_library",
|
"//pkg/scheduler/nodeinfo:go_default_library",
|
||||||
|
"//pkg/scheduler/nodeinfo/snapshot:go_default_library",
|
||||||
"//pkg/scheduler/util:go_default_library",
|
"//pkg/scheduler/util:go_default_library",
|
||||||
"//pkg/scheduler/volumebinder:go_default_library",
|
"//pkg/scheduler/volumebinder:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
|
@ -49,6 +49,7 @@ import (
|
|||||||
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
|
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/metrics"
|
"k8s.io/kubernetes/pkg/scheduler/metrics"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
|
nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/util"
|
"k8s.io/kubernetes/pkg/scheduler/util"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/volumebinder"
|
"k8s.io/kubernetes/pkg/scheduler/volumebinder"
|
||||||
utiltrace "k8s.io/utils/trace"
|
utiltrace "k8s.io/utils/trace"
|
||||||
@ -153,7 +154,7 @@ type genericScheduler struct {
|
|||||||
framework framework.Framework
|
framework framework.Framework
|
||||||
extenders []algorithm.SchedulerExtender
|
extenders []algorithm.SchedulerExtender
|
||||||
alwaysCheckAllPredicates bool
|
alwaysCheckAllPredicates bool
|
||||||
nodeInfoSnapshot *schedulernodeinfo.Snapshot
|
nodeInfoSnapshot *nodeinfosnapshot.Snapshot
|
||||||
volumeBinder *volumebinder.VolumeBinder
|
volumeBinder *volumebinder.VolumeBinder
|
||||||
pvcLister corelisters.PersistentVolumeClaimLister
|
pvcLister corelisters.PersistentVolumeClaimLister
|
||||||
pdbLister policylisters.PodDisruptionBudgetLister
|
pdbLister policylisters.PodDisruptionBudgetLister
|
||||||
|
@ -15,6 +15,7 @@ go_library(
|
|||||||
"//pkg/scheduler/apis/config:go_default_library",
|
"//pkg/scheduler/apis/config:go_default_library",
|
||||||
"//pkg/scheduler/metrics:go_default_library",
|
"//pkg/scheduler/metrics:go_default_library",
|
||||||
"//pkg/scheduler/nodeinfo:go_default_library",
|
"//pkg/scheduler/nodeinfo:go_default_library",
|
||||||
|
"//pkg/scheduler/nodeinfo/snapshot:go_default_library",
|
||||||
"//pkg/scheduler/util:go_default_library",
|
"//pkg/scheduler/util:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
@ -33,6 +33,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/metrics"
|
"k8s.io/kubernetes/pkg/scheduler/metrics"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
|
nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
|
||||||
schedutil "k8s.io/kubernetes/pkg/scheduler/util"
|
schedutil "k8s.io/kubernetes/pkg/scheduler/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -57,7 +58,7 @@ const (
|
|||||||
// plugins.
|
// plugins.
|
||||||
type framework struct {
|
type framework struct {
|
||||||
registry Registry
|
registry Registry
|
||||||
nodeInfoSnapshot *schedulernodeinfo.Snapshot
|
nodeInfoSnapshot *nodeinfosnapshot.Snapshot
|
||||||
waitingPods *waitingPodsMap
|
waitingPods *waitingPodsMap
|
||||||
pluginNameToWeightMap map[string]int
|
pluginNameToWeightMap map[string]int
|
||||||
queueSortPlugins []QueueSortPlugin
|
queueSortPlugins []QueueSortPlugin
|
||||||
@ -138,7 +139,7 @@ func NewFramework(r Registry, plugins *config.Plugins, args []config.PluginConfi
|
|||||||
|
|
||||||
f := &framework{
|
f := &framework{
|
||||||
registry: r,
|
registry: r,
|
||||||
nodeInfoSnapshot: schedulernodeinfo.NewSnapshot(),
|
nodeInfoSnapshot: nodeinfosnapshot.NewSnapshot(),
|
||||||
pluginNameToWeightMap: make(map[string]int),
|
pluginNameToWeightMap: make(map[string]int),
|
||||||
waitingPods: newWaitingPodsMap(),
|
waitingPods: newWaitingPodsMap(),
|
||||||
clientSet: options.clientSet,
|
clientSet: options.clientSet,
|
||||||
@ -594,7 +595,7 @@ func (f *framework) RunPermitPlugins(
|
|||||||
// is taken at the beginning of a scheduling cycle and remains unchanged until a
|
// is taken at the beginning of a scheduling cycle and remains unchanged until a
|
||||||
// pod finishes "Reserve". There is no guarantee that the information remains
|
// pod finishes "Reserve". There is no guarantee that the information remains
|
||||||
// unchanged after "Reserve".
|
// unchanged after "Reserve".
|
||||||
func (f *framework) NodeInfoSnapshot() *schedulernodeinfo.Snapshot {
|
func (f *framework) NodeInfoSnapshot() *nodeinfosnapshot.Snapshot {
|
||||||
return f.nodeInfoSnapshot
|
return f.nodeInfoSnapshot
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ import (
|
|||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
|
nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NodeScoreList declares a list of nodes and their scores.
|
// NodeScoreList declares a list of nodes and their scores.
|
||||||
@ -458,7 +459,7 @@ type FrameworkHandle interface {
|
|||||||
// cycle(permit/pre-bind/bind/post-bind/un-reserve plugin) should not use it,
|
// cycle(permit/pre-bind/bind/post-bind/un-reserve plugin) should not use it,
|
||||||
// otherwise a concurrent read/write error might occur, they should use scheduler
|
// otherwise a concurrent read/write error might occur, they should use scheduler
|
||||||
// cache instead.
|
// cache instead.
|
||||||
NodeInfoSnapshot() *schedulernodeinfo.Snapshot
|
NodeInfoSnapshot() *nodeinfosnapshot.Snapshot
|
||||||
|
|
||||||
// IterateOverWaitingPods acquires a read lock and iterates over the WaitingPods map.
|
// IterateOverWaitingPods acquires a read lock and iterates over the WaitingPods map.
|
||||||
IterateOverWaitingPods(callback func(WaitingPod))
|
IterateOverWaitingPods(callback func(WaitingPod))
|
||||||
|
2
pkg/scheduler/internal/cache/BUILD
vendored
2
pkg/scheduler/internal/cache/BUILD
vendored
@ -13,6 +13,7 @@ go_library(
|
|||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/scheduler/listers:go_default_library",
|
"//pkg/scheduler/listers:go_default_library",
|
||||||
"//pkg/scheduler/nodeinfo:go_default_library",
|
"//pkg/scheduler/nodeinfo:go_default_library",
|
||||||
|
"//pkg/scheduler/nodeinfo/snapshot:go_default_library",
|
||||||
"//pkg/util/node:go_default_library",
|
"//pkg/util/node:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
@ -34,6 +35,7 @@ go_test(
|
|||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/scheduler/algorithm/priorities/util:go_default_library",
|
"//pkg/scheduler/algorithm/priorities/util:go_default_library",
|
||||||
"//pkg/scheduler/nodeinfo:go_default_library",
|
"//pkg/scheduler/nodeinfo:go_default_library",
|
||||||
|
"//pkg/scheduler/nodeinfo/snapshot:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
3
pkg/scheduler/internal/cache/cache.go
vendored
3
pkg/scheduler/internal/cache/cache.go
vendored
@ -30,6 +30,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
|
schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
|
nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -199,7 +200,7 @@ func (cache *schedulerCache) Snapshot() *Snapshot {
|
|||||||
// beginning of every scheduling cycle.
|
// beginning of every scheduling cycle.
|
||||||
// This function tracks generation number of NodeInfo and updates only the
|
// This function tracks generation number of NodeInfo and updates only the
|
||||||
// entries of an existing snapshot that have changed after the snapshot was taken.
|
// entries of an existing snapshot that have changed after the snapshot was taken.
|
||||||
func (cache *schedulerCache) UpdateNodeInfoSnapshot(nodeSnapshot *schedulernodeinfo.Snapshot) error {
|
func (cache *schedulerCache) UpdateNodeInfoSnapshot(nodeSnapshot *nodeinfosnapshot.Snapshot) error {
|
||||||
cache.mu.Lock()
|
cache.mu.Lock()
|
||||||
defer cache.mu.Unlock()
|
defer cache.mu.Unlock()
|
||||||
balancedVolumesEnabled := utilfeature.DefaultFeatureGate.Enabled(features.BalanceAttachedNodeVolumes)
|
balancedVolumesEnabled := utilfeature.DefaultFeatureGate.Enabled(features.BalanceAttachedNodeVolumes)
|
||||||
|
11
pkg/scheduler/internal/cache/cache_test.go
vendored
11
pkg/scheduler/internal/cache/cache_test.go
vendored
@ -32,6 +32,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
priorityutil "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util"
|
priorityutil "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
|
nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
|
||||||
)
|
)
|
||||||
|
|
||||||
func deepEqualWithoutGeneration(t *testing.T, testcase int, actual *nodeInfoListItem, expected *schedulernodeinfo.NodeInfo) {
|
func deepEqualWithoutGeneration(t *testing.T, testcase int, actual *nodeInfoListItem, expected *schedulernodeinfo.NodeInfo) {
|
||||||
@ -1076,7 +1077,7 @@ func TestNodeOperators(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Case 2: dump cached nodes successfully.
|
// Case 2: dump cached nodes successfully.
|
||||||
cachedNodes := schedulernodeinfo.NewSnapshot()
|
cachedNodes := nodeinfosnapshot.NewSnapshot()
|
||||||
cache.UpdateNodeInfoSnapshot(cachedNodes)
|
cache.UpdateNodeInfoSnapshot(cachedNodes)
|
||||||
newNode, found := cachedNodes.NodeInfoMap[node.Name]
|
newNode, found := cachedNodes.NodeInfoMap[node.Name]
|
||||||
if !found || len(cachedNodes.NodeInfoMap) != 1 {
|
if !found || len(cachedNodes.NodeInfoMap) != 1 {
|
||||||
@ -1179,7 +1180,7 @@ func TestSchedulerCache_UpdateNodeInfoSnapshot(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var cache *schedulerCache
|
var cache *schedulerCache
|
||||||
var snapshot *schedulernodeinfo.Snapshot
|
var snapshot *nodeinfosnapshot.Snapshot
|
||||||
type operation = func()
|
type operation = func()
|
||||||
|
|
||||||
addNode := func(i int) operation {
|
addNode := func(i int) operation {
|
||||||
@ -1332,7 +1333,7 @@ func TestSchedulerCache_UpdateNodeInfoSnapshot(t *testing.T) {
|
|||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
cache = newSchedulerCache(time.Second, time.Second, nil)
|
cache = newSchedulerCache(time.Second, time.Second, nil)
|
||||||
snapshot = schedulernodeinfo.NewSnapshot()
|
snapshot = nodeinfosnapshot.NewSnapshot()
|
||||||
|
|
||||||
for _, op := range test.operations {
|
for _, op := range test.operations {
|
||||||
op()
|
op()
|
||||||
@ -1363,7 +1364,7 @@ func TestSchedulerCache_UpdateNodeInfoSnapshot(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func compareCacheWithNodeInfoSnapshot(cache *schedulerCache, snapshot *schedulernodeinfo.Snapshot) error {
|
func compareCacheWithNodeInfoSnapshot(cache *schedulerCache, snapshot *nodeinfosnapshot.Snapshot) error {
|
||||||
if len(snapshot.NodeInfoMap) != len(cache.nodes) {
|
if len(snapshot.NodeInfoMap) != len(cache.nodes) {
|
||||||
return fmt.Errorf("unexpected number of nodes in the snapshot. Expected: %v, got: %v", len(cache.nodes), len(snapshot.NodeInfoMap))
|
return fmt.Errorf("unexpected number of nodes in the snapshot. Expected: %v, got: %v", len(cache.nodes), len(snapshot.NodeInfoMap))
|
||||||
}
|
}
|
||||||
@ -1381,7 +1382,7 @@ func BenchmarkUpdate1kNodes30kPods(b *testing.B) {
|
|||||||
cache := setupCacheOf1kNodes30kPods(b)
|
cache := setupCacheOf1kNodes30kPods(b)
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
for n := 0; n < b.N; n++ {
|
for n := 0; n < b.N; n++ {
|
||||||
cachedNodes := schedulernodeinfo.NewSnapshot()
|
cachedNodes := nodeinfosnapshot.NewSnapshot()
|
||||||
cache.UpdateNodeInfoSnapshot(cachedNodes)
|
cache.UpdateNodeInfoSnapshot(cachedNodes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
pkg/scheduler/internal/cache/fake/BUILD
vendored
2
pkg/scheduler/internal/cache/fake/BUILD
vendored
@ -8,7 +8,7 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//pkg/scheduler/internal/cache:go_default_library",
|
"//pkg/scheduler/internal/cache:go_default_library",
|
||||||
"//pkg/scheduler/listers:go_default_library",
|
"//pkg/scheduler/listers:go_default_library",
|
||||||
"//pkg/scheduler/nodeinfo:go_default_library",
|
"//pkg/scheduler/nodeinfo/snapshot:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
],
|
],
|
||||||
|
@ -21,7 +21,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
|
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
|
||||||
schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
|
schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Cache is used for testing
|
// Cache is used for testing
|
||||||
@ -76,7 +76,7 @@ func (c *Cache) UpdateNode(oldNode, newNode *v1.Node) error { return nil }
|
|||||||
func (c *Cache) RemoveNode(node *v1.Node) error { return nil }
|
func (c *Cache) RemoveNode(node *v1.Node) error { return nil }
|
||||||
|
|
||||||
// UpdateNodeInfoSnapshot is a fake method for testing.
|
// UpdateNodeInfoSnapshot is a fake method for testing.
|
||||||
func (c *Cache) UpdateNodeInfoSnapshot(nodeSnapshot *schedulernodeinfo.Snapshot) error {
|
func (c *Cache) UpdateNodeInfoSnapshot(nodeSnapshot *nodeinfosnapshot.Snapshot) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3
pkg/scheduler/internal/cache/interface.go
vendored
3
pkg/scheduler/internal/cache/interface.go
vendored
@ -20,6 +20,7 @@ import (
|
|||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
|
schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
|
nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Cache collects pods' information and provides node-level aggregated information.
|
// Cache collects pods' information and provides node-level aggregated information.
|
||||||
@ -99,7 +100,7 @@ type Cache interface {
|
|||||||
// UpdateNodeInfoSnapshot updates the passed infoSnapshot to the current contents of Cache.
|
// UpdateNodeInfoSnapshot updates the passed infoSnapshot to the current contents of Cache.
|
||||||
// The node info contains aggregated information of pods scheduled (including assumed to be)
|
// The node info contains aggregated information of pods scheduled (including assumed to be)
|
||||||
// on this node.
|
// on this node.
|
||||||
UpdateNodeInfoSnapshot(nodeSnapshot *schedulernodeinfo.Snapshot) error
|
UpdateNodeInfoSnapshot(nodeSnapshot *nodeinfosnapshot.Snapshot) error
|
||||||
|
|
||||||
// GetNodeInfo returns the node object with node string.
|
// GetNodeInfo returns the node object with node string.
|
||||||
GetNodeInfo(nodeName string) (*v1.Node, error)
|
GetNodeInfo(nodeName string) (*v1.Node, error)
|
||||||
|
@ -39,6 +39,7 @@ go_test(
|
|||||||
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
||||||
"//pkg/scheduler/metrics:go_default_library",
|
"//pkg/scheduler/metrics:go_default_library",
|
||||||
"//pkg/scheduler/nodeinfo:go_default_library",
|
"//pkg/scheduler/nodeinfo:go_default_library",
|
||||||
|
"//pkg/scheduler/nodeinfo/snapshot:go_default_library",
|
||||||
"//pkg/scheduler/util:go_default_library",
|
"//pkg/scheduler/util:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
@ -37,6 +37,7 @@ import (
|
|||||||
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/metrics"
|
"k8s.io/kubernetes/pkg/scheduler/metrics"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
|
nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/util"
|
"k8s.io/kubernetes/pkg/scheduler/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -181,7 +182,7 @@ func (f *fakeFramework) ListPlugins() map[string][]config.Plugin {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*fakeFramework) NodeInfoSnapshot() *schedulernodeinfo.Snapshot {
|
func (*fakeFramework) NodeInfoSnapshot() *nodeinfosnapshot.Snapshot {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ go_library(
|
|||||||
srcs = [
|
srcs = [
|
||||||
"host_ports.go",
|
"host_ports.go",
|
||||||
"node_info.go",
|
"node_info.go",
|
||||||
"snapshot.go",
|
|
||||||
"util.go",
|
"util.go",
|
||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/scheduler/nodeinfo",
|
importpath = "k8s.io/kubernetes/pkg/scheduler/nodeinfo",
|
||||||
@ -51,7 +50,10 @@ filegroup(
|
|||||||
|
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "all-srcs",
|
name = "all-srcs",
|
||||||
srcs = [":package-srcs"],
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//pkg/scheduler/nodeinfo/snapshot:all-srcs",
|
||||||
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
)
|
)
|
||||||
|
26
pkg/scheduler/nodeinfo/snapshot/BUILD
Normal file
26
pkg/scheduler/nodeinfo/snapshot/BUILD
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["snapshot.go"],
|
||||||
|
importpath = "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//pkg/scheduler/nodeinfo:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
@ -18,22 +18,23 @@ package nodeinfo
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Snapshot is a snapshot of cache NodeInfo and NodeTree order. The scheduler takes a
|
// Snapshot is a snapshot of cache NodeInfo and NodeTree order. The scheduler takes a
|
||||||
// snapshot at the beginning of each scheduling cycle and uses it for its operations in that cycle.
|
// snapshot at the beginning of each scheduling cycle and uses it for its operations in that cycle.
|
||||||
type Snapshot struct {
|
type Snapshot struct {
|
||||||
// NodeInfoMap a map of node name to a snapshot of its NodeInfo.
|
// NodeInfoMap a map of node name to a snapshot of its NodeInfo.
|
||||||
NodeInfoMap map[string]*NodeInfo
|
NodeInfoMap map[string]*schedulernodeinfo.NodeInfo
|
||||||
// NodeInfoList is the list of nodes as ordered in the cache's nodeTree.
|
// NodeInfoList is the list of nodes as ordered in the cache's nodeTree.
|
||||||
NodeInfoList []*NodeInfo
|
NodeInfoList []*schedulernodeinfo.NodeInfo
|
||||||
Generation int64
|
Generation int64
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewSnapshot initializes a Snapshot struct and returns it.
|
// NewSnapshot initializes a Snapshot struct and returns it.
|
||||||
func NewSnapshot() *Snapshot {
|
func NewSnapshot() *Snapshot {
|
||||||
return &Snapshot{
|
return &Snapshot{
|
||||||
NodeInfoMap: make(map[string]*NodeInfo),
|
NodeInfoMap: make(map[string]*schedulernodeinfo.NodeInfo),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,8 +42,8 @@ func NewSnapshot() *Snapshot {
|
|||||||
func (s *Snapshot) ListNodes() []*v1.Node {
|
func (s *Snapshot) ListNodes() []*v1.Node {
|
||||||
nodes := make([]*v1.Node, 0, len(s.NodeInfoMap))
|
nodes := make([]*v1.Node, 0, len(s.NodeInfoMap))
|
||||||
for _, n := range s.NodeInfoList {
|
for _, n := range s.NodeInfoList {
|
||||||
if n != nil && n.node != nil {
|
if n.Node() != nil {
|
||||||
nodes = append(nodes, n.node)
|
nodes = append(nodes, n.Node())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nodes
|
return nodes
|
Loading…
Reference in New Issue
Block a user