mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #81777 from mrkm4ntr/remove-pod-lister
Remove unnecessary factory layer
This commit is contained in:
commit
7351f1acd7
@ -29,7 +29,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/algorithm"
|
|
||||||
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"
|
||||||
schedutil "k8s.io/kubernetes/pkg/scheduler/util"
|
schedutil "k8s.io/kubernetes/pkg/scheduler/util"
|
||||||
@ -45,11 +44,6 @@ type PredicateMetadata interface {
|
|||||||
// PredicateMetadataProducer is a function that computes predicate metadata for a given pod.
|
// PredicateMetadataProducer is a function that computes predicate metadata for a given pod.
|
||||||
type PredicateMetadataProducer func(pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata
|
type PredicateMetadataProducer func(pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata
|
||||||
|
|
||||||
// PredicateMetadataFactory defines a factory of predicate metadata.
|
|
||||||
type PredicateMetadataFactory struct {
|
|
||||||
podLister algorithm.PodLister
|
|
||||||
}
|
|
||||||
|
|
||||||
// AntiAffinityTerm's topology key value used in predicate metadata
|
// AntiAffinityTerm's topology key value used in predicate metadata
|
||||||
type topologyPair struct {
|
type topologyPair struct {
|
||||||
key string
|
key string
|
||||||
@ -190,16 +184,8 @@ func RegisterPredicateMetadataProducerWithExtendedResourceOptions(ignoredExtende
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPredicateMetadataFactory creates a PredicateMetadataFactory.
|
// GetPredicateMetadata returns the predicateMetadata which will be used by various predicates.
|
||||||
func NewPredicateMetadataFactory(podLister algorithm.PodLister) PredicateMetadataProducer {
|
func GetPredicateMetadata(pod *v1.Pod, nodeNameToInfoMap map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata {
|
||||||
factory := &PredicateMetadataFactory{
|
|
||||||
podLister,
|
|
||||||
}
|
|
||||||
return factory.GetMetadata
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMetadata returns the predicateMetadata used which will be used by various predicates.
|
|
||||||
func (pfactory *PredicateMetadataFactory) GetMetadata(pod *v1.Pod, nodeNameToInfoMap map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata {
|
|
||||||
// If we cannot compute metadata, just return nil
|
// If we cannot compute metadata, just return nil
|
||||||
if pod == nil {
|
if pod == nil {
|
||||||
return nil
|
return nil
|
||||||
|
@ -364,8 +364,7 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, precompute := NewServiceAffinityPredicate(lister, st.FakeServiceLister(test.services), FakeNodeListInfo(nodeList), nil)
|
_, precompute := NewServiceAffinityPredicate(lister, st.FakeServiceLister(test.services), FakeNodeListInfo(nodeList), nil)
|
||||||
RegisterPredicateMetadataProducer("ServiceAffinityMetaProducer", precompute)
|
RegisterPredicateMetadataProducer("ServiceAffinityMetaProducer", precompute)
|
||||||
pmf := PredicateMetadataFactory{lister}
|
meta := GetPredicateMetadata(test.pendingPod, nodeInfoMap)
|
||||||
meta := pmf.GetMetadata(test.pendingPod, nodeInfoMap)
|
|
||||||
return meta.(*predicateMetadata), nodeInfoMap
|
return meta.(*predicateMetadata), nodeInfoMap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,12 +93,6 @@ func newResourceOverheadPod(pod *v1.Pod, overhead v1.ResourceList) *v1.Pod {
|
|||||||
pod.Spec.Overhead = overhead
|
pod.Spec.Overhead = overhead
|
||||||
return pod
|
return pod
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPredicateMetadata(p *v1.Pod, nodeInfo map[string]*schedulernodeinfo.NodeInfo) PredicateMetadata {
|
|
||||||
pm := PredicateMetadataFactory{st.FakePodLister{p}}
|
|
||||||
return pm.GetMetadata(p, nodeInfo)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPodFitsResources(t *testing.T) {
|
func TestPodFitsResources(t *testing.T) {
|
||||||
|
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PodOverhead, true)()
|
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PodOverhead, true)()
|
||||||
|
@ -23,10 +23,7 @@ import (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// Register functions that extract metadata used by predicates computations.
|
// Register functions that extract metadata used by predicates computations.
|
||||||
factory.RegisterPredicateMetadataProducerFactory(
|
factory.RegisterPredicateMetadataProducer(predicates.GetPredicateMetadata)
|
||||||
func(args factory.PluginFactoryArgs) predicates.PredicateMetadataProducer {
|
|
||||||
return predicates.NewPredicateMetadataFactory(args.PodLister)
|
|
||||||
})
|
|
||||||
|
|
||||||
// IMPORTANT NOTES for predicate developers:
|
// IMPORTANT NOTES for predicate developers:
|
||||||
// Registers predicates and priorities that are not enabled by default, but user can pick when creating their
|
// Registers predicates and priorities that are not enabled by default, but user can pick when creating their
|
||||||
|
@ -653,7 +653,7 @@ func TestGenericScheduler(t *testing.T) {
|
|||||||
|
|
||||||
predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer
|
predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer
|
||||||
if test.buildPredMeta {
|
if test.buildPredMeta {
|
||||||
predMetaProducer = algorithmpredicates.NewPredicateMetadataFactory(schedulertesting.FakePodLister(test.pods))
|
predMetaProducer = algorithmpredicates.GetPredicateMetadata
|
||||||
}
|
}
|
||||||
scheduler := NewGenericScheduler(
|
scheduler := NewGenericScheduler(
|
||||||
cache,
|
cache,
|
||||||
@ -1054,7 +1054,7 @@ func (n FakeNodeInfo) GetNodeInfo(nodeName string) (*v1.Node, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func PredicateMetadata(p *v1.Pod, nodeInfo map[string]*schedulernodeinfo.NodeInfo) algorithmpredicates.PredicateMetadata {
|
func PredicateMetadata(p *v1.Pod, nodeInfo map[string]*schedulernodeinfo.NodeInfo) algorithmpredicates.PredicateMetadata {
|
||||||
return algorithmpredicates.NewPredicateMetadataFactory(schedulertesting.FakePodLister{p})(p, nodeInfo)
|
return algorithmpredicates.GetPredicateMetadata(p, nodeInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
var smallContainers = []v1.Container{
|
var smallContainers = []v1.Container{
|
||||||
@ -2109,7 +2109,7 @@ func TestPreempt(t *testing.T) {
|
|||||||
}
|
}
|
||||||
predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer
|
predMetaProducer := algorithmpredicates.EmptyPredicateMetadataProducer
|
||||||
if test.buildPredMeta {
|
if test.buildPredMeta {
|
||||||
predMetaProducer = algorithmpredicates.NewPredicateMetadataFactory(schedulertesting.FakePodLister(test.pods))
|
predMetaProducer = algorithmpredicates.GetPredicateMetadata
|
||||||
}
|
}
|
||||||
scheduler := NewGenericScheduler(
|
scheduler := NewGenericScheduler(
|
||||||
cache,
|
cache,
|
||||||
|
@ -475,11 +475,7 @@ func (c *Configurator) getPriorityMetadataProducer() (priorities.PriorityMetadat
|
|||||||
// GetPredicateMetadataProducer returns a function to build Predicate Metadata.
|
// GetPredicateMetadataProducer returns a function to build Predicate Metadata.
|
||||||
// It is used by the scheduler and other components, such as k8s.io/autoscaler/cluster-autoscaler.
|
// It is used by the scheduler and other components, such as k8s.io/autoscaler/cluster-autoscaler.
|
||||||
func (c *Configurator) GetPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error) {
|
func (c *Configurator) GetPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error) {
|
||||||
pluginArgs, err := c.getPluginArgs()
|
return getPredicateMetadataProducer()
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return getPredicateMetadataProducer(*pluginArgs)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPredicates returns the predicate functions.
|
// GetPredicates returns the predicate functions.
|
||||||
|
@ -88,7 +88,7 @@ var (
|
|||||||
|
|
||||||
// Registered metadata producers
|
// Registered metadata producers
|
||||||
priorityMetadataProducer PriorityMetadataProducerFactory
|
priorityMetadataProducer PriorityMetadataProducerFactory
|
||||||
predicateMetadataProducer PredicateMetadataProducerFactory
|
predicateMetadataProducer predicates.PredicateMetadataProducer
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -313,11 +313,11 @@ func RegisterPriorityMetadataProducerFactory(factory PriorityMetadataProducerFac
|
|||||||
priorityMetadataProducer = factory
|
priorityMetadataProducer = factory
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterPredicateMetadataProducerFactory registers a PredicateMetadataProducerFactory.
|
// RegisterPredicateMetadataProducer registers a PredicateMetadataProducer.
|
||||||
func RegisterPredicateMetadataProducerFactory(factory PredicateMetadataProducerFactory) {
|
func RegisterPredicateMetadataProducer(producer predicates.PredicateMetadataProducer) {
|
||||||
schedulerFactoryMutex.Lock()
|
schedulerFactoryMutex.Lock()
|
||||||
defer schedulerFactoryMutex.Unlock()
|
defer schedulerFactoryMutex.Unlock()
|
||||||
predicateMetadataProducer = factory
|
predicateMetadataProducer = producer
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterPriorityFunction registers a priority function with the algorithm registry. Returns the name,
|
// RegisterPriorityFunction registers a priority function with the algorithm registry. Returns the name,
|
||||||
@ -505,14 +505,14 @@ func getPriorityMetadataProducer(args PluginFactoryArgs) (priorities.PriorityMet
|
|||||||
return priorityMetadataProducer(args), nil
|
return priorityMetadataProducer(args), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPredicateMetadataProducer(args PluginFactoryArgs) (predicates.PredicateMetadataProducer, error) {
|
func getPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error) {
|
||||||
schedulerFactoryMutex.Lock()
|
schedulerFactoryMutex.Lock()
|
||||||
defer schedulerFactoryMutex.Unlock()
|
defer schedulerFactoryMutex.Unlock()
|
||||||
|
|
||||||
if predicateMetadataProducer == nil {
|
if predicateMetadataProducer == nil {
|
||||||
return predicates.EmptyPredicateMetadataProducer, nil
|
return predicates.EmptyPredicateMetadataProducer, nil
|
||||||
}
|
}
|
||||||
return predicateMetadataProducer(args), nil
|
return predicateMetadataProducer, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPriorityFunctionConfigs(names sets.String, args PluginFactoryArgs) ([]priorities.PriorityConfig, error) {
|
func getPriorityFunctionConfigs(names sets.String, args PluginFactoryArgs) ([]priorities.PriorityConfig, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user