Skip to content

Commit 585ef37

Browse files
committed
Kubeadm FG for dual-stack was introduced in #80145. This PR
progagates the kubeadm FG to the individual k8scomponents on the control-plane node. * Note: Users who want to join worker nodes to the cluster will have to specify the dual-stack FG to kubelet using the nodeRegistration.kubeletExtraArgs option as part of their join config. Alternatively, they can use KUBELET_EXTRA_ARGS. kubeadm FG: kubernetes/kubeadm#1612
1 parent 1dac5fd commit 585ef37

File tree

6 files changed

+36
-0
lines changed

6 files changed

+36
-0
lines changed

cmd/kubeadm/app/componentconfigs/BUILD

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ go_library(
1515
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
1616
"//cmd/kubeadm/app/apis/kubeadm/v1beta2:go_default_library",
1717
"//cmd/kubeadm/app/constants:go_default_library",
18+
"//cmd/kubeadm/app/features:go_default_library",
1819
"//cmd/kubeadm/app/util:go_default_library",
1920
"//cmd/kubeadm/app/util/apiclient:go_default_library",
2021
"//pkg/kubelet/apis/config:go_default_library",

cmd/kubeadm/app/componentconfigs/defaults.go

+7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
2525
kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
2626
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
27+
"k8s.io/kubernetes/cmd/kubeadm/app/features"
2728
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
2829
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
2930
utilpointer "k8s.io/utils/pointer"
@@ -51,6 +52,12 @@ func DefaultKubeProxyConfiguration(internalcfg *kubeadmapi.ClusterConfiguration)
5152
externalproxycfg.ClientConnection.Kubeconfig = KubeproxyKubeConfigFileName
5253
}
5354

55+
// TODO: The following code should be remvoved after dual-stack is GA.
56+
// Note: The user still retains the ability to explicitly set feature-gates and that value will overwrite this base value.
57+
if enabled, present := internalcfg.FeatureGates[features.IPv6DualStack]; present {
58+
externalproxycfg.FeatureGates[features.IPv6DualStack] = enabled
59+
}
60+
5461
// Run the rest of the kube-proxy defaulting code
5562
Scheme.Default(externalproxycfg)
5663

cmd/kubeadm/app/phases/controlplane/BUILD

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ go_library(
3434
deps = [
3535
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
3636
"//cmd/kubeadm/app/constants:go_default_library",
37+
"//cmd/kubeadm/app/features:go_default_library",
3738
"//cmd/kubeadm/app/images:go_default_library",
3839
"//cmd/kubeadm/app/phases/certs:go_default_library",
3940
"//cmd/kubeadm/app/util:go_default_library",

cmd/kubeadm/app/phases/controlplane/manifests.go

+19
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"k8s.io/klog"
3131
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
3232
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
33+
"k8s.io/kubernetes/cmd/kubeadm/app/features"
3334
"k8s.io/kubernetes/cmd/kubeadm/app/images"
3435
certphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/certs"
3536
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
@@ -184,6 +185,12 @@ func getAPIServerCommand(cfg *kubeadmapi.ClusterConfiguration, localAPIEndpoint
184185
}
185186
}
186187

188+
// TODO: The following code should be remvoved after dual-stack is GA.
189+
// Note: The user still retains the ability to explicitly set feature-gates and that value will overwrite this base value.
190+
if enabled, present := cfg.FeatureGates[features.IPv6DualStack]; present {
191+
defaultArguments["feature-gates"] = fmt.Sprintf("%s=%t", features.IPv6DualStack, enabled)
192+
}
193+
187194
if cfg.APIServer.ExtraArgs == nil {
188195
cfg.APIServer.ExtraArgs = map[string]string{}
189196
}
@@ -295,6 +302,12 @@ func getControllerManagerCommand(cfg *kubeadmapi.ClusterConfiguration) []string
295302
}
296303
}
297304

305+
// TODO: The following code should be remvoved after dual-stack is GA.
306+
// Note: The user still retains the ability to explicitly set feature-gates and that value will overwrite this base value.
307+
if enabled, present := cfg.FeatureGates[features.IPv6DualStack]; present {
308+
defaultArguments["feature-gates"] = fmt.Sprintf("%s=%t", features.IPv6DualStack, enabled)
309+
}
310+
298311
command := []string{"kube-controller-manager"}
299312
command = append(command, kubeadmutil.BuildArgumentListFromMap(defaultArguments, cfg.ControllerManager.ExtraArgs)...)
300313

@@ -309,6 +322,12 @@ func getSchedulerCommand(cfg *kubeadmapi.ClusterConfiguration) []string {
309322
"kubeconfig": filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.SchedulerKubeConfigFileName),
310323
}
311324

325+
// TODO: The following code should be remvoved after dual-stack is GA.
326+
// Note: The user still retains the ability to explicitly set feature-gates and that value will overwrite this base value.
327+
if enabled, present := cfg.FeatureGates[features.IPv6DualStack]; present {
328+
defaultArguments["feature-gates"] = fmt.Sprintf("%s=%t", features.IPv6DualStack, enabled)
329+
}
330+
312331
command := []string{"kube-scheduler"}
313332
command = append(command, kubeadmutil.BuildArgumentListFromMap(defaultArguments, cfg.Scheduler.ExtraArgs)...)
314333
return command

cmd/kubeadm/app/phases/kubelet/BUILD

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ go_library(
1414
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
1515
"//cmd/kubeadm/app/componentconfigs:go_default_library",
1616
"//cmd/kubeadm/app/constants:go_default_library",
17+
"//cmd/kubeadm/app/features:go_default_library",
1718
"//cmd/kubeadm/app/images:go_default_library",
1819
"//cmd/kubeadm/app/util:go_default_library",
1920
"//cmd/kubeadm/app/util/apiclient:go_default_library",

cmd/kubeadm/app/phases/kubelet/flags.go

+7
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"k8s.io/klog"
2828
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
2929
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
30+
"k8s.io/kubernetes/cmd/kubeadm/app/features"
3031
"k8s.io/kubernetes/cmd/kubeadm/app/images"
3132
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
3233
"k8s.io/kubernetes/cmd/kubeadm/app/util/initsystem"
@@ -120,6 +121,12 @@ func buildKubeletArgMap(opts kubeletFlagsOpts) map[string]string {
120121

121122
// TODO: Conditionally set `--cgroup-driver` to either `systemd` or `cgroupfs` for CRI other than Docker
122123

124+
// TODO: The following code should be remvoved after dual-stack is GA.
125+
// Note: The user still retains the ability to explicitly set feature-gates and that value will overwrite this base value.
126+
if enabled, present := opts.featureGates[features.IPv6DualStack]; present {
127+
kubeletFlags["feature-gates"] = fmt.Sprintf("%s=%t", features.IPv6DualStack, enabled)
128+
}
129+
123130
return kubeletFlags
124131
}
125132

0 commit comments

Comments
 (0)