mirror of https://github.com/kubernetes/kops.git
fix(external-ccm): prevent core components to be misconfigured
Previously when setting the external cloud controller manager configuration the core components `kubelet`, `apiserver` and `kubecontroller-manager` were configured to use the external cloud controller manager. Without setting the feature flag EnableExternalCloudController this lead to a cluster in which the masters had the cloud controller taint `node.cloudprovider.kubernetes.io/uninitialized` which prevents essential pods, like dns-controller to not be scheduled and leaves a cluster where worker nodes can't connect to the api server because they cannot resolve its hostname.
This commit is contained in:
parent
7406e0320e
commit
bfe9b21213
|
@ -21,6 +21,7 @@ go_library(
|
||||||
"//pkg/apis/kops:go_default_library",
|
"//pkg/apis/kops:go_default_library",
|
||||||
"//pkg/apis/kops/util:go_default_library",
|
"//pkg/apis/kops/util:go_default_library",
|
||||||
"//pkg/assets:go_default_library",
|
"//pkg/assets:go_default_library",
|
||||||
|
"//pkg/featureflag:go_default_library",
|
||||||
"//pkg/k8sversion:go_default_library",
|
"//pkg/k8sversion:go_default_library",
|
||||||
"//upup/pkg/fi:go_default_library",
|
"//upup/pkg/fi:go_default_library",
|
||||||
"//upup/pkg/fi/cloudup/gce:go_default_library",
|
"//upup/pkg/fi/cloudup/gce:go_default_library",
|
||||||
|
|
|
@ -22,6 +22,7 @@ import (
|
||||||
|
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/kops/pkg/apis/kops"
|
"k8s.io/kops/pkg/apis/kops"
|
||||||
|
"k8s.io/kops/pkg/featureflag"
|
||||||
"k8s.io/kops/upup/pkg/fi"
|
"k8s.io/kops/upup/pkg/fi"
|
||||||
"k8s.io/kops/upup/pkg/fi/loader"
|
"k8s.io/kops/upup/pkg/fi/loader"
|
||||||
|
|
||||||
|
@ -167,7 +168,7 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(o interface{}) error {
|
||||||
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider)
|
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
if clusterSpec.ExternalCloudControllerManager != nil {
|
if featureflag.EnableExternalCloudController.Enabled() && clusterSpec.ExternalCloudControllerManager != nil {
|
||||||
c.CloudProvider = "external"
|
c.CloudProvider = "external"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ import (
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kops/pkg/apis/kops"
|
"k8s.io/kops/pkg/apis/kops"
|
||||||
"k8s.io/kops/pkg/apis/kops/util"
|
"k8s.io/kops/pkg/apis/kops/util"
|
||||||
|
"k8s.io/kops/pkg/featureflag"
|
||||||
"k8s.io/kops/upup/pkg/fi"
|
"k8s.io/kops/upup/pkg/fi"
|
||||||
"k8s.io/kops/upup/pkg/fi/cloudup/gce"
|
"k8s.io/kops/upup/pkg/fi/cloudup/gce"
|
||||||
"k8s.io/kops/upup/pkg/fi/loader"
|
"k8s.io/kops/upup/pkg/fi/loader"
|
||||||
|
@ -123,7 +124,7 @@ func (b *KubeControllerManagerOptionsBuilder) BuildOptions(o interface{}) error
|
||||||
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider)
|
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
if clusterSpec.ExternalCloudControllerManager != nil {
|
if featureflag.EnableExternalCloudController.Enabled() && clusterSpec.ExternalCloudControllerManager != nil {
|
||||||
kcm.CloudProvider = "external"
|
kcm.CloudProvider = "external"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kops/pkg/apis/kops"
|
"k8s.io/kops/pkg/apis/kops"
|
||||||
|
"k8s.io/kops/pkg/featureflag"
|
||||||
"k8s.io/kops/upup/pkg/fi"
|
"k8s.io/kops/upup/pkg/fi"
|
||||||
"k8s.io/kops/upup/pkg/fi/loader"
|
"k8s.io/kops/upup/pkg/fi/loader"
|
||||||
)
|
)
|
||||||
|
@ -215,7 +216,7 @@ func (b *KubeletOptionsBuilder) BuildOptions(o interface{}) error {
|
||||||
clusterSpec.Kubelet.CloudProvider = "alicloud"
|
clusterSpec.Kubelet.CloudProvider = "alicloud"
|
||||||
}
|
}
|
||||||
|
|
||||||
if clusterSpec.ExternalCloudControllerManager != nil {
|
if featureflag.EnableExternalCloudController.Enabled() && clusterSpec.ExternalCloudControllerManager != nil {
|
||||||
clusterSpec.Kubelet.CloudProvider = "external"
|
clusterSpec.Kubelet.CloudProvider = "external"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue