diff --git a/docs/addons.md b/docs/addons.md index 4d85cd0dfb..833ea564b6 100644 --- a/docs/addons.md +++ b/docs/addons.md @@ -46,7 +46,7 @@ spec: memoryRequest: "300Mi" ``` -Read more about cluster autoscaler in the [official documentation](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler). +Read more about cluster autoscaler in the [official documentation](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler). The autoscaler supports five different expander strategies; the `priority` expander requires additional configuration in a ConfigMap as described in [its documentation](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/expander/priority/readme.md). ##### Disabling cluster autoscaler for a given instance group {{ kops_feature_table(kops_added_default='1.20') }} diff --git a/k8s/crds/kops.k8s.io_clusters.yaml b/k8s/crds/kops.k8s.io_clusters.yaml index eff5ec6c5b..aaec658e39 100644 --- a/k8s/crds/kops.k8s.io_clusters.yaml +++ b/k8s/crds/kops.k8s.io_clusters.yaml @@ -622,7 +622,8 @@ 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 priority expander requires additional + configuration via a ConfigMap. Default: least-waste' type: string image: description: 'Image is the docker container used. Default: the diff --git a/pkg/apis/kops/componentconfig.go b/pkg/apis/kops/componentconfig.go index 90d4d7531a..8a0f7ae640 100644 --- a/pkg/apis/kops/componentconfig.go +++ b/pkg/apis/kops/componentconfig.go @@ -958,7 +958,7 @@ 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. // Default: least-waste Expander *string `json:"expander,omitempty"` // BalanceSimilarNodeGroups makes cluster autoscaler treat similar node groups as one. diff --git a/pkg/apis/kops/v1alpha2/componentconfig.go b/pkg/apis/kops/v1alpha2/componentconfig.go index 605dbdd8cd..07901b4f08 100644 --- a/pkg/apis/kops/v1alpha2/componentconfig.go +++ b/pkg/apis/kops/v1alpha2/componentconfig.go @@ -978,7 +978,7 @@ 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. // Default: least-waste Expander *string `json:"expander,omitempty"` // BalanceSimilarNodeGroups makes cluster autoscaler treat similar node groups as one. diff --git a/pkg/apis/kops/v1alpha3/componentconfig.go b/pkg/apis/kops/v1alpha3/componentconfig.go index bfabfa2188..8b10d90507 100644 --- a/pkg/apis/kops/v1alpha3/componentconfig.go +++ b/pkg/apis/kops/v1alpha3/componentconfig.go @@ -955,7 +955,7 @@ 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. // Default: least-waste Expander *string `json:"expander,omitempty"` // BalanceSimilarNodeGroups makes cluster autoscaler treat similar node groups as one. diff --git a/pkg/apis/kops/validation/validation.go b/pkg/apis/kops/validation/validation.go index f984a2fb0d..48d91da58b 100644 --- a/pkg/apis/kops/validation/validation.go +++ b/pkg/apis/kops/validation/validation.go @@ -1492,7 +1492,7 @@ 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 kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack { allErrs = append(allErrs, field.Forbidden(fldPath, "Cluster autoscaler is not supported on OpenStack"))