Merge pull request #13081 from danports/price-priority-autoscaler-expanders

Support price and priority cluster-autoscaler expanders
This commit is contained in:
Kubernetes Prow Robot 2022-01-11 02:25:17 -08:00 committed by GitHub
commit 1db71ca34c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 22 additions and 5 deletions

View File

@ -48,6 +48,11 @@ spec:
Read more about cluster autoscaler in the [official documentation](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).
##### Expander strategies
Cluster autoscaler supports several different [expander strategies](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-expanders).
Note that the `priority` expander requires additional configuration through a ConfigMap as described in [its documentation](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/expander/priority/readme.md) - you will need to create this ConfigMap in your cluster before selecting this expander.
##### Disabling cluster autoscaler for a given instance group
{{ kops_feature_table(kops_added_default='1.20') }}

View File

@ -622,7 +622,9 @@ spec:
expander:
description: 'Expander determines the strategy for which instance
group gets expanded. Supported values: least-waste, most-pods,
random. Default: least-waste'
random, price, priority. The price expander is only supported
on GCE. The priority expander requires additional configuration
via a ConfigMap. Default: least-waste'
type: string
image:
description: 'Image is the docker container used. Default: the

View File

@ -960,7 +960,9 @@ type ClusterAutoscalerConfig struct {
// Default: false
Enabled *bool `json:"enabled,omitempty"`
// Expander determines the strategy for which instance group gets expanded.
// Supported values: least-waste, most-pods, random.
// Supported values: least-waste, most-pods, random, price, priority.
// The price expander is only supported on GCE.
// The priority expander requires additional configuration via a ConfigMap.
// Default: least-waste
Expander *string `json:"expander,omitempty"`
// BalanceSimilarNodeGroups makes cluster autoscaler treat similar node groups as one.

View File

@ -980,7 +980,9 @@ type ClusterAutoscalerConfig struct {
// Default: false
Enabled *bool `json:"enabled,omitempty"`
// Expander determines the strategy for which instance group gets expanded.
// Supported values: least-waste, most-pods, random.
// Supported values: least-waste, most-pods, random, price, priority.
// The price expander is only supported on GCE.
// The priority expander requires additional configuration via a ConfigMap.
// Default: least-waste
Expander *string `json:"expander,omitempty"`
// BalanceSimilarNodeGroups makes cluster autoscaler treat similar node groups as one.

View File

@ -957,7 +957,9 @@ type ClusterAutoscalerConfig struct {
// Default: false
Enabled *bool `json:"enabled,omitempty"`
// Expander determines the strategy for which instance group gets expanded.
// Supported values: least-waste, most-pods, random.
// Supported values: least-waste, most-pods, random, price, priority.
// The price expander is only supported on GCE.
// The priority expander requires additional configuration via a ConfigMap.
// Default: least-waste
Expander *string `json:"expander,omitempty"`
// BalanceSimilarNodeGroups makes cluster autoscaler treat similar node groups as one.

View File

@ -1517,7 +1517,11 @@ func validateNodeLocalDNS(spec *kops.ClusterSpec, fldpath *field.Path) field.Err
}
func validateClusterAutoscaler(cluster *kops.Cluster, spec *kops.ClusterAutoscalerConfig, fldPath *field.Path) (allErrs field.ErrorList) {
allErrs = append(allErrs, IsValidValue(fldPath.Child("expander"), spec.Expander, []string{"least-waste", "random", "most-pods"})...)
allErrs = append(allErrs, IsValidValue(fldPath.Child("expander"), spec.Expander, []string{"least-waste", "random", "most-pods", "price", "priority"})...)
if fi.StringValue(spec.Expander) == "price" && kops.CloudProviderID(cluster.Spec.CloudProvider) != kops.CloudProviderGCE {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("expander"), "Cluster autoscaler price expander is only supported on GCE"))
}
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack {
allErrs = append(allErrs, field.Forbidden(fldPath, "Cluster autoscaler is not supported on OpenStack"))