mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-05 07:27:21 +00:00
[PATCH] Fix equiv. cache invalidation of Node condition.
Equivalence cache for CheckNodeConditionPred becomes invalid when Node.Spec.Unschedulable changes. This can happen even if Node.Status.Conditions does not change, so move the logic around. This logic is covered by integration test "test/integration/scheduler".TestUnschedulableNodes but equivalence cache is currently skipped when test pods have no OwnerReference. Add benchmark for equivalence hashing. Change equivalence hash function. This changes the equivalence class hashing function to use as inputs all the Pod fields which are read by FitPredicates. Before we used a combination of OwnerReference and PersistentVolumeClaim info, which was a close approximation. The new method ensures that hashing remains correct regardless of controller behavior. The PVCSet field can be removed from equivalencePod because it is implicitly included in the Volume list. Tests are now broken. Move equivalence class hash code. This moves the equivalence hashing code from algorithm/predicates/utils.go to core/equivalence_cache.go. In the process, making the hashing function and hashing function factory both injectable dependencies is removed. Fix equivalence cache hash tests. Co-authored-by: Jonathan Basseri <misterikkit@google.com> Co-authored-by: Harry Zhang <resouer@gmail.com>
This commit is contained in:
committed by
Harry Zhang
parent
c6d0726df8
commit
f5ab6d5ad4
@@ -77,13 +77,6 @@ func init() {
|
||||
// Fit is determined by node selector query.
|
||||
factory.RegisterFitPredicate(predicates.MatchNodeSelectorPred, predicates.PodMatchNodeSelector)
|
||||
|
||||
// Use equivalence class to speed up heavy predicates phase.
|
||||
factory.RegisterGetEquivalencePodFunction(
|
||||
func(args factory.PluginFactoryArgs) algorithm.GetEquivalencePodFunc {
|
||||
return predicates.NewEquivalencePodGenerator(args.PVCInfo)
|
||||
},
|
||||
)
|
||||
|
||||
// ServiceSpreadingPriority is a priority config factory that spreads pods by minimizing
|
||||
// the number of pods (belonging to the same service) on the same node.
|
||||
// Register the factory so that it's available, but do not include it as part of the default priorities
|
||||
|
||||
Reference in New Issue
Block a user