Commit 2df92ff1 authored by Marcin Wielgus's avatar Marcin Wielgus

Cluster autoscaler friendly scheduling algorithm

parent 2707c46a
......@@ -34,7 +34,8 @@ import (
const (
// GCE instances can have up to 16 PD volumes attached.
DefaultMaxGCEPDVolumes = 16
DefaultMaxGCEPDVolumes = 16
ClusterAutoscalerProvider = "ClusterAutoscalerProvider"
)
// getMaxVols checks the max PD volumes environment variable, otherwise returning a default value
......@@ -54,6 +55,9 @@ func getMaxVols(defaultVal int) int {
func init() {
factory.RegisterAlgorithmProvider(factory.DefaultProvider, defaultPredicates(), defaultPriorities())
// Cluster autoscaler friendly scheduling algorithm.
factory.RegisterAlgorithmProvider(ClusterAutoscalerProvider, defaultPredicates(),
replace(defaultPriorities(), "LeastRequestedPriority", "MostRequestedPriority"))
// EqualPriority is a prioritizer function that gives an equal weight of one to all nodes
// Register the priority function so that its available
// but do not include it as part of the default priorities
......@@ -97,6 +101,15 @@ func init() {
factory.RegisterPriorityFunction("MostRequestedPriority", priorities.MostRequestedPriority, 1)
}
func replace(set sets.String, replaceWhat, replaceWith string) sets.String {
result := sets.NewString(set.List()...)
if result.Has(replaceWhat) {
result.Delete(replaceWhat)
result.Insert(replaceWith)
}
return result
}
func defaultPredicates() sets.String {
return sets.NewString(
// Fit is determined by non-conflicting disk volumes.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment