From 8672d9b2194d3bcc83bdfb395fa632cfda7dcecb Mon Sep 17 00:00:00 2001 From: Dan Ports Date: Wed, 5 Jan 2022 22:39:21 -0500 Subject: [PATCH] Fix CRDs, clarify docs, and add cloud provider check for price expander. --- docs/addons.md | 2 +- k8s/crds/kops.k8s.io_clusters.yaml | 2 +- pkg/apis/kops/componentconfig.go | 1 + pkg/apis/kops/v1alpha2/componentconfig.go | 1 + pkg/apis/kops/v1alpha3/componentconfig.go | 1 + pkg/apis/kops/validation/validation.go | 4 ++++ 6 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/addons.md b/docs/addons.md index f76ee08530..d27dfedb64 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). 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). +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) - please ensure that you have deployed this ConfigMap before enabling the `priority` expander. ##### 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 209ed02716..999d9ebec6 100644 --- a/k8s/crds/kops.k8s.io_clusters.yaml +++ b/k8s/crds/kops.k8s.io_clusters.yaml @@ -622,7 +622,7 @@ spec: expander: description: 'Expander determines the strategy for which instance group gets expanded. Supported values: least-waste, most-pods, - random, price, priority. The priority expander requires additional + random, price, priority. The priority expander requires additional configuration via a ConfigMap. Default: least-waste' type: string image: diff --git a/pkg/apis/kops/componentconfig.go b/pkg/apis/kops/componentconfig.go index 27b33c7dd8..80a2c6dff5 100644 --- a/pkg/apis/kops/componentconfig.go +++ b/pkg/apis/kops/componentconfig.go @@ -961,6 +961,7 @@ type ClusterAutoscalerConfig struct { Enabled *bool `json:"enabled,omitempty"` // Expander determines the strategy for which instance group gets expanded. // Supported values: least-waste, most-pods, random, price, priority. + // 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. diff --git a/pkg/apis/kops/v1alpha2/componentconfig.go b/pkg/apis/kops/v1alpha2/componentconfig.go index 2e6f182306..cb0d179716 100644 --- a/pkg/apis/kops/v1alpha2/componentconfig.go +++ b/pkg/apis/kops/v1alpha2/componentconfig.go @@ -981,6 +981,7 @@ type ClusterAutoscalerConfig struct { Enabled *bool `json:"enabled,omitempty"` // Expander determines the strategy for which instance group gets expanded. // Supported values: least-waste, most-pods, random, price, priority. + // 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. diff --git a/pkg/apis/kops/v1alpha3/componentconfig.go b/pkg/apis/kops/v1alpha3/componentconfig.go index faf1a4dbfc..45b99e75b5 100644 --- a/pkg/apis/kops/v1alpha3/componentconfig.go +++ b/pkg/apis/kops/v1alpha3/componentconfig.go @@ -958,6 +958,7 @@ type ClusterAutoscalerConfig struct { Enabled *bool `json:"enabled,omitempty"` // Expander determines the strategy for which instance group gets expanded. // Supported values: least-waste, most-pods, random, price, priority. + // 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. diff --git a/pkg/apis/kops/validation/validation.go b/pkg/apis/kops/validation/validation.go index a8e482d2b5..005da7050d 100644 --- a/pkg/apis/kops/validation/validation.go +++ b/pkg/apis/kops/validation/validation.go @@ -1519,6 +1519,10 @@ 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", "price", "priority"})...) + if *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")) }