From 118c882cebcccc2a74db0cc1d4f883223d9b42a4 Mon Sep 17 00:00:00 2001 From: Ciprian Hacman Date: Thu, 10 Jul 2025 08:18:31 +0300 Subject: [PATCH] Fix cloud-provider flag for K8s 1.31+ --- pkg/model/components/apiserver.go | 48 ++++++++++++++------------- pkg/model/components/kubelet.go | 55 +++++++++++++++---------------- 2 files changed, 53 insertions(+), 50 deletions(-) diff --git a/pkg/model/components/apiserver.go b/pkg/model/components/apiserver.go index 4a5cd177eb85f..16b1b8eb12858 100644 --- a/pkg/model/components/apiserver.go +++ b/pkg/model/components/apiserver.go @@ -98,28 +98,32 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(cluster *kops.Cluster) error c.Image = image if b.controlPlaneKubernetesVersion.IsLT("1.33") { - switch cluster.GetCloudProvider() { - case kops.CloudProviderAWS: - c.CloudProvider = "aws" - case kops.CloudProviderGCE: - c.CloudProvider = "gce" - case kops.CloudProviderDO: - c.CloudProvider = "external" - case kops.CloudProviderHetzner: - c.CloudProvider = "external" - case kops.CloudProviderOpenstack: - c.CloudProvider = "openstack" - case kops.CloudProviderAzure: - c.CloudProvider = "azure" - case kops.CloudProviderScaleway: - c.CloudProvider = "external" - case kops.CloudProviderMetal: - c.CloudProvider = "external" - default: - return fmt.Errorf("unknown cloudprovider %q", cluster.GetCloudProvider()) - } - - if clusterSpec.ExternalCloudControllerManager != nil { + if b.controlPlaneKubernetesVersion.IsLT("1.31") { + switch cluster.GetCloudProvider() { + case kops.CloudProviderAWS: + c.CloudProvider = "aws" + case kops.CloudProviderGCE: + c.CloudProvider = "gce" + case kops.CloudProviderDO: + c.CloudProvider = "external" + case kops.CloudProviderHetzner: + c.CloudProvider = "external" + case kops.CloudProviderOpenstack: + c.CloudProvider = "openstack" + case kops.CloudProviderAzure: + c.CloudProvider = "azure" + case kops.CloudProviderScaleway: + c.CloudProvider = "external" + case kops.CloudProviderMetal: + c.CloudProvider = "external" + default: + return fmt.Errorf("unknown cloudprovider %q", cluster.GetCloudProvider()) + } + + if clusterSpec.ExternalCloudControllerManager != nil { + c.CloudProvider = "external" + } + } else { c.CloudProvider = "external" } } diff --git a/pkg/model/components/kubelet.go b/pkg/model/components/kubelet.go index 37246ec7cd182..c94251d426b3c 100644 --- a/pkg/model/components/kubelet.go +++ b/pkg/model/components/kubelet.go @@ -120,21 +120,40 @@ func (b *KubeletOptionsBuilder) configureKubelet(cluster *kops.Cluster, kubelet const kubeconfigPath = "/var/lib/kubelet/kubeconfig" kubelet.KubeconfigPath = kubeconfigPath - cloudProvider := cluster.GetCloudProvider() - kubelet.CgroupRoot = "/" + cloudProvider := cluster.GetCloudProvider() klog.V(1).Infof("Cloud Provider: %s", cloudProvider) - if cloudProvider == kops.CloudProviderAWS { - kubelet.CloudProvider = "aws" - } + if cloudProvider != kops.CloudProviderMetal { + if b.controlPlaneKubernetesVersion.IsLT("1.31") { + switch cloudProvider { + case kops.CloudProviderAWS: + kubelet.CloudProvider = "aws" + case kops.CloudProviderGCE: + kubelet.CloudProvider = "gce" + case kops.CloudProviderDO: + kubelet.CloudProvider = "external" + case kops.CloudProviderHetzner: + kubelet.CloudProvider = "external" + case kops.CloudProviderOpenstack: + kubelet.CloudProvider = "openstack" + case kops.CloudProviderAzure: + kubelet.CloudProvider = "azure" + case kops.CloudProviderScaleway: + kubelet.CloudProvider = "external" + default: + kubelet.CloudProvider = "external" + } - if cloudProvider == kops.CloudProviderDO { - kubelet.CloudProvider = "external" + if cluster.Spec.ExternalCloudControllerManager != nil { + kubelet.CloudProvider = "external" + } + } else { + kubelet.CloudProvider = "external" + } } if cloudProvider == kops.CloudProviderGCE { - kubelet.CloudProvider = "gce" kubelet.HairpinMode = "promiscuous-bridge" if cluster.Spec.CloudConfig == nil { @@ -144,26 +163,6 @@ func (b *KubeletOptionsBuilder) configureKubelet(cluster *kops.Cluster, kubelet cluster.Spec.CloudProvider.GCE.NodeTags = fi.PtrTo(gce.TagForRole(b.ClusterName, kops.InstanceGroupRoleNode)) } - if cloudProvider == kops.CloudProviderHetzner { - kubelet.CloudProvider = "external" - } - - if cloudProvider == kops.CloudProviderOpenstack { - kubelet.CloudProvider = "openstack" - } - - if cloudProvider == kops.CloudProviderAzure { - kubelet.CloudProvider = "azure" - } - - if cloudProvider == kops.CloudProviderScaleway { - kubelet.CloudProvider = "external" - } - - if cluster.Spec.ExternalCloudControllerManager != nil { - kubelet.CloudProvider = "external" - } - // Prevent image GC from pruning the pause image // https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/2040-kubelet-cri#pinned-images image := "registry.k8s.io/pause:3.9"