mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-04 07:49:35 +00:00 
			
		
		
		
	Merge pull request #56311 from xiangpengzhao/kubeadm-proxy-ipvs
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Remove SupportIPVSProxyMode feature gate in kubeadm. **What this PR does / why we need it**: Since #55972 gets merged, kubeadm now supports using kube-proxy ComponentConfig. Then `SupportIPVSProxyMode` feature gate can be configured in kube-proxy config. There is no need to config the feature gate in kubeadm (workaround introduced by #53962). The benefit of removing it I can think of is that we don't need to care about the IPVS feature evolution in kubeadm any longer. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes https://github.com/kubernetes/kubeadm/issues/512 **Special notes for your reviewer**: /cc @luxas @Lion-Wei @kubernetes/sig-cluster-lifecycle-pr-reviews **Release note**: ```release-note NONE ```
This commit is contained in:
		@@ -26,7 +26,6 @@ go_library(
 | 
				
			|||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//cmd/kubeadm/app/apis/kubeadm:go_default_library",
 | 
					        "//cmd/kubeadm/app/apis/kubeadm:go_default_library",
 | 
				
			||||||
        "//cmd/kubeadm/app/constants:go_default_library",
 | 
					        "//cmd/kubeadm/app/constants:go_default_library",
 | 
				
			||||||
        "//cmd/kubeadm/app/features:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/kubelet/apis/kubeletconfig/v1alpha1:go_default_library",
 | 
					        "//pkg/kubelet/apis/kubeletconfig/v1alpha1:go_default_library",
 | 
				
			||||||
        "//pkg/proxy/apis/kubeproxyconfig/scheme:go_default_library",
 | 
					        "//pkg/proxy/apis/kubeproxyconfig/scheme:go_default_library",
 | 
				
			||||||
        "//pkg/proxy/apis/kubeproxyconfig/v1alpha1:go_default_library",
 | 
					        "//pkg/proxy/apis/kubeproxyconfig/v1alpha1:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,6 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
						"k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
				
			||||||
	"k8s.io/kubernetes/cmd/kubeadm/app/features"
 | 
					 | 
				
			||||||
	kubeletconfigv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1"
 | 
						kubeletconfigv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1"
 | 
				
			||||||
	kubeproxyscheme "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme"
 | 
						kubeproxyscheme "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme"
 | 
				
			||||||
	kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1"
 | 
						kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1"
 | 
				
			||||||
@@ -117,7 +116,6 @@ func SetDefaults_MasterConfiguration(obj *MasterConfiguration) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// SetDefaults_ProxyConfiguration assigns default values for the Proxy
 | 
					// SetDefaults_ProxyConfiguration assigns default values for the Proxy
 | 
				
			||||||
func SetDefaults_ProxyConfiguration(obj *MasterConfiguration) {
 | 
					func SetDefaults_ProxyConfiguration(obj *MasterConfiguration) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if obj.KubeProxy.Config == nil {
 | 
						if obj.KubeProxy.Config == nil {
 | 
				
			||||||
		obj.KubeProxy.Config = &kubeproxyconfigv1alpha1.KubeProxyConfiguration{}
 | 
							obj.KubeProxy.Config = &kubeproxyconfigv1alpha1.KubeProxyConfiguration{}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -125,10 +123,6 @@ func SetDefaults_ProxyConfiguration(obj *MasterConfiguration) {
 | 
				
			|||||||
		obj.KubeProxy.Config.ClusterCIDR = obj.Networking.PodSubnet
 | 
							obj.KubeProxy.Config.ClusterCIDR = obj.Networking.PodSubnet
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if features.Enabled(obj.FeatureGates, features.SupportIPVSProxyMode) {
 | 
					 | 
				
			||||||
		obj.KubeProxy.Config.FeatureGates = "true"
 | 
					 | 
				
			||||||
		obj.KubeProxy.Config.Mode = "ipvs"
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	kubeproxyscheme.Scheme.Default(obj.KubeProxy.Config)
 | 
						kubeproxyscheme.Scheme.Default(obj.KubeProxy.Config)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,9 +39,6 @@ const (
 | 
				
			|||||||
	// StoreCertsInSecrets is alpha in v1.8
 | 
						// StoreCertsInSecrets is alpha in v1.8
 | 
				
			||||||
	StoreCertsInSecrets = "StoreCertsInSecrets"
 | 
						StoreCertsInSecrets = "StoreCertsInSecrets"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// SupportIPVSProxyMode is alpha in v1.8
 | 
					 | 
				
			||||||
	SupportIPVSProxyMode = "SupportIPVSProxyMode"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// DynamicKubeletConfig is alpha in v1.9
 | 
						// DynamicKubeletConfig is alpha in v1.9
 | 
				
			||||||
	DynamicKubeletConfig = "DynamicKubeletConfig"
 | 
						DynamicKubeletConfig = "DynamicKubeletConfig"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -53,7 +50,6 @@ var InitFeatureGates = FeatureList{
 | 
				
			|||||||
	SelfHosting:          {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Beta}},
 | 
						SelfHosting:          {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Beta}},
 | 
				
			||||||
	StoreCertsInSecrets:  {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}},
 | 
						StoreCertsInSecrets:  {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}},
 | 
				
			||||||
	HighAvailability:     {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190},
 | 
						HighAvailability:     {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190},
 | 
				
			||||||
	SupportIPVSProxyMode: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190},
 | 
					 | 
				
			||||||
	CoreDNS:              {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190},
 | 
						CoreDNS:              {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190},
 | 
				
			||||||
	DynamicKubeletConfig: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190},
 | 
						DynamicKubeletConfig: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,6 @@ go_library(
 | 
				
			|||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//cmd/kubeadm/app/apis/kubeadm:go_default_library",
 | 
					        "//cmd/kubeadm/app/apis/kubeadm:go_default_library",
 | 
				
			||||||
        "//cmd/kubeadm/app/constants:go_default_library",
 | 
					        "//cmd/kubeadm/app/constants:go_default_library",
 | 
				
			||||||
        "//cmd/kubeadm/app/features:go_default_library",
 | 
					 | 
				
			||||||
        "//cmd/kubeadm/app/util:go_default_library",
 | 
					        "//cmd/kubeadm/app/util:go_default_library",
 | 
				
			||||||
        "//cmd/kubeadm/app/util/apiclient:go_default_library",
 | 
					        "//cmd/kubeadm/app/util/apiclient:go_default_library",
 | 
				
			||||||
        "//pkg/api/legacyscheme:go_default_library",
 | 
					        "//pkg/api/legacyscheme:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -107,7 +107,6 @@ spec:
 | 
				
			|||||||
        command:
 | 
					        command:
 | 
				
			||||||
        - /usr/local/bin/kube-proxy
 | 
					        - /usr/local/bin/kube-proxy
 | 
				
			||||||
        - --kubeconfig=/var/lib/kube-proxy/kubeconfig.conf
 | 
					        - --kubeconfig=/var/lib/kube-proxy/kubeconfig.conf
 | 
				
			||||||
        {{ .ExtraParams }}
 | 
					 | 
				
			||||||
        {{ .ClusterCIDR }}
 | 
					        {{ .ClusterCIDR }}
 | 
				
			||||||
        securityContext:
 | 
					        securityContext:
 | 
				
			||||||
          privileged: true
 | 
					          privileged: true
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,6 @@ import (
 | 
				
			|||||||
	clientset "k8s.io/client-go/kubernetes"
 | 
						clientset "k8s.io/client-go/kubernetes"
 | 
				
			||||||
	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
						kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
 | 
				
			||||||
	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
						kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
 | 
				
			||||||
	"k8s.io/kubernetes/cmd/kubeadm/app/features"
 | 
					 | 
				
			||||||
	kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
 | 
						kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
 | 
				
			||||||
	"k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient"
 | 
						"k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/legacyscheme"
 | 
						"k8s.io/kubernetes/pkg/api/legacyscheme"
 | 
				
			||||||
@@ -82,7 +81,7 @@ func EnsureProxyAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Inte
 | 
				
			|||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return fmt.Errorf("error when parsing kube-proxy configmap template: %v", err)
 | 
								return fmt.Errorf("error when parsing kube-proxy configmap template: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		proxyDaemonSetBytes, err = kubeadmutil.ParseTemplate(KubeProxyDaemonSet19, struct{ ImageRepository, Arch, Version, ImageOverride, ExtraParams, ClusterCIDR, MasterTaintKey, CloudTaintKey string }{
 | 
							proxyDaemonSetBytes, err = kubeadmutil.ParseTemplate(KubeProxyDaemonSet19, struct{ ImageRepository, Arch, Version, ImageOverride, ClusterCIDR, MasterTaintKey, CloudTaintKey string }{
 | 
				
			||||||
			ImageRepository: cfg.GetControlPlaneImageRepository(),
 | 
								ImageRepository: cfg.GetControlPlaneImageRepository(),
 | 
				
			||||||
			Arch:            runtime.GOARCH,
 | 
								Arch:            runtime.GOARCH,
 | 
				
			||||||
			Version:         kubeadmutil.KubernetesVersionToImageTag(cfg.KubernetesVersion),
 | 
								Version:         kubeadmutil.KubernetesVersionToImageTag(cfg.KubernetesVersion),
 | 
				
			||||||
@@ -104,12 +103,11 @@ func EnsureProxyAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Inte
 | 
				
			|||||||
			return fmt.Errorf("error when parsing kube-proxy configmap template: %v", err)
 | 
								return fmt.Errorf("error when parsing kube-proxy configmap template: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		proxyDaemonSetBytes, err = kubeadmutil.ParseTemplate(KubeProxyDaemonSet18, struct{ ImageRepository, Arch, Version, ImageOverride, ExtraParams, ClusterCIDR, MasterTaintKey, CloudTaintKey string }{
 | 
							proxyDaemonSetBytes, err = kubeadmutil.ParseTemplate(KubeProxyDaemonSet18, struct{ ImageRepository, Arch, Version, ImageOverride, ClusterCIDR, MasterTaintKey, CloudTaintKey string }{
 | 
				
			||||||
			ImageRepository: cfg.GetControlPlaneImageRepository(),
 | 
								ImageRepository: cfg.GetControlPlaneImageRepository(),
 | 
				
			||||||
			Arch:            runtime.GOARCH,
 | 
								Arch:            runtime.GOARCH,
 | 
				
			||||||
			Version:         kubeadmutil.KubernetesVersionToImageTag(cfg.KubernetesVersion),
 | 
								Version:         kubeadmutil.KubernetesVersionToImageTag(cfg.KubernetesVersion),
 | 
				
			||||||
			ImageOverride:   cfg.UnifiedControlPlaneImage,
 | 
								ImageOverride:   cfg.UnifiedControlPlaneImage,
 | 
				
			||||||
			ExtraParams:     getParams(cfg.FeatureGates),
 | 
					 | 
				
			||||||
			ClusterCIDR:     getClusterCIDR(cfg.Networking.PodSubnet),
 | 
								ClusterCIDR:     getClusterCIDR(cfg.Networking.PodSubnet),
 | 
				
			||||||
			MasterTaintKey:  kubeadmconstants.LabelNodeRoleMaster,
 | 
								MasterTaintKey:  kubeadmconstants.LabelNodeRoleMaster,
 | 
				
			||||||
			CloudTaintKey:   algorithm.TaintExternalCloudProvider,
 | 
								CloudTaintKey:   algorithm.TaintExternalCloudProvider,
 | 
				
			||||||
@@ -185,13 +183,6 @@ func createClusterRoleBindings(client clientset.Interface) error {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getParams(featureList map[string]bool) string {
 | 
					 | 
				
			||||||
	if features.Enabled(featureList, features.SupportIPVSProxyMode) {
 | 
					 | 
				
			||||||
		return "- --proxy-mode=ipvs\n        - --feature-gates=SupportIPVSProxyMode=true"
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return ""
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func getClusterCIDR(podsubnet string) string {
 | 
					func getClusterCIDR(podsubnet string) string {
 | 
				
			||||||
	if len(podsubnet) == 0 {
 | 
						if len(podsubnet) == 0 {
 | 
				
			||||||
		return ""
 | 
							return ""
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -134,12 +134,11 @@ func TestCompileManifests(t *testing.T) {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			manifest: KubeProxyDaemonSet18,
 | 
								manifest: KubeProxyDaemonSet18,
 | 
				
			||||||
			data: struct{ ImageRepository, Arch, Version, ImageOverride, ExtraParams, ClusterCIDR, MasterTaintKey, CloudTaintKey string }{
 | 
								data: struct{ ImageRepository, Arch, Version, ImageOverride, ClusterCIDR, MasterTaintKey, CloudTaintKey string }{
 | 
				
			||||||
				ImageRepository: "foo",
 | 
									ImageRepository: "foo",
 | 
				
			||||||
				Arch:            "foo",
 | 
									Arch:            "foo",
 | 
				
			||||||
				Version:         "foo",
 | 
									Version:         "foo",
 | 
				
			||||||
				ImageOverride:   "foo",
 | 
									ImageOverride:   "foo",
 | 
				
			||||||
				ExtraParams:     "foo",
 | 
					 | 
				
			||||||
				ClusterCIDR:     "foo",
 | 
									ClusterCIDR:     "foo",
 | 
				
			||||||
				MasterTaintKey:  "foo",
 | 
									MasterTaintKey:  "foo",
 | 
				
			||||||
				CloudTaintKey:   "foo",
 | 
									CloudTaintKey:   "foo",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user