mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 10:20:51 +00:00
Add CloudDualStackNodeIPs feature gate(s)
Add CloudDualStackNodeIPs feature gates for kubelet and cloud-controller-manager and use as appropriate.
This commit is contained in:
parent
e3aacb4f30
commit
068ee321bc
@ -1120,7 +1120,7 @@ func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencie
|
|||||||
// Setup event recorder if required.
|
// Setup event recorder if required.
|
||||||
makeEventRecorder(kubeDeps, nodeName)
|
makeEventRecorder(kubeDeps, nodeName)
|
||||||
|
|
||||||
nodeIPs, err := nodeutil.ParseNodeIPArgument(kubeServer.NodeIP, kubeServer.CloudProvider, false)
|
nodeIPs, err := nodeutil.ParseNodeIPArgument(kubeServer.NodeIP, kubeServer.CloudProvider, utilfeature.DefaultFeatureGate.Enabled(features.CloudDualStackNodeIPs))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("bad --node-ip %q: %v", kubeServer.NodeIP, err)
|
return fmt.Errorf("bad --node-ip %q: %v", kubeServer.NodeIP, err)
|
||||||
}
|
}
|
||||||
|
@ -61,6 +61,12 @@ const (
|
|||||||
// beta: v1.4
|
// beta: v1.4
|
||||||
AppArmor featuregate.Feature = "AppArmor"
|
AppArmor featuregate.Feature = "AppArmor"
|
||||||
|
|
||||||
|
// owner: @danwinship
|
||||||
|
// alpha: v1.27
|
||||||
|
//
|
||||||
|
// Enables dual-stack --node-ip in kubelet with external cloud providers
|
||||||
|
CloudDualStackNodeIPs featuregate.Feature = "CloudDualStackNodeIPs"
|
||||||
|
|
||||||
// owner: @szuecs
|
// owner: @szuecs
|
||||||
// alpha: v1.12
|
// alpha: v1.12
|
||||||
//
|
//
|
||||||
@ -926,6 +932,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
|
|
||||||
AppArmor: {Default: true, PreRelease: featuregate.Beta},
|
AppArmor: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
|
CloudDualStackNodeIPs: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
|
||||||
CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha},
|
CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
|
||||||
CPUManager: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.26
|
CPUManager: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.26
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
coreinformers "k8s.io/client-go/informers/core/v1"
|
coreinformers "k8s.io/client-go/informers/core/v1"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
@ -43,6 +44,7 @@ import (
|
|||||||
cloudnodeutil "k8s.io/cloud-provider/node/helpers"
|
cloudnodeutil "k8s.io/cloud-provider/node/helpers"
|
||||||
controllersmetrics "k8s.io/component-base/metrics/prometheus/controllers"
|
controllersmetrics "k8s.io/component-base/metrics/prometheus/controllers"
|
||||||
nodeutil "k8s.io/component-helpers/node/util"
|
nodeutil "k8s.io/component-helpers/node/util"
|
||||||
|
"k8s.io/controller-manager/pkg/features"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -739,7 +741,7 @@ func updateNodeAddressesFromNodeIP(node *v1.Node, nodeAddresses []v1.NodeAddress
|
|||||||
|
|
||||||
providedNodeIP, exists := node.ObjectMeta.Annotations[cloudproviderapi.AnnotationAlphaProvidedIPAddr]
|
providedNodeIP, exists := node.ObjectMeta.Annotations[cloudproviderapi.AnnotationAlphaProvidedIPAddr]
|
||||||
if exists {
|
if exists {
|
||||||
nodeAddresses, err = cloudnodeutil.GetNodeAddressesFromNodeIP(providedNodeIP, nodeAddresses, false)
|
nodeAddresses, err = cloudnodeutil.GetNodeAddressesFromNodeIP(providedNodeIP, nodeAddresses, utilfeature.DefaultFeatureGate.Enabled(features.CloudDualStackNodeIPs))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nodeAddresses, err
|
return nodeAddresses, err
|
||||||
|
@ -38,6 +38,7 @@ import (
|
|||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
cloudproviderapi "k8s.io/cloud-provider/api"
|
cloudproviderapi "k8s.io/cloud-provider/api"
|
||||||
fakecloud "k8s.io/cloud-provider/fake"
|
fakecloud "k8s.io/cloud-provider/fake"
|
||||||
|
_ "k8s.io/controller-manager/pkg/features/register"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -32,6 +32,19 @@ const (
|
|||||||
// of code conflicts because changes are more likely to be scattered
|
// of code conflicts because changes are more likely to be scattered
|
||||||
// across the file.
|
// across the file.
|
||||||
|
|
||||||
|
// owner: @nckturner
|
||||||
|
// kep: http://kep.k8s.io/2699
|
||||||
|
// alpha: v1.27
|
||||||
|
// Enable webhook in cloud controller manager
|
||||||
|
CloudControllerManagerWebhook featuregate.Feature = "CloudControllerManagerWebhook"
|
||||||
|
|
||||||
|
// owner: @danwinship
|
||||||
|
// alpha: v1.27
|
||||||
|
//
|
||||||
|
// Enables dual-stack values in the
|
||||||
|
// `alpha.kubernetes.io/provided-node-ip` annotation
|
||||||
|
CloudDualStackNodeIPs featuregate.Feature = "CloudDualStackNodeIPs"
|
||||||
|
|
||||||
// owner: @alexanderConstantinescu
|
// owner: @alexanderConstantinescu
|
||||||
// kep: http://kep.k8s.io/3458
|
// kep: http://kep.k8s.io/3458
|
||||||
// beta: v1.27
|
// beta: v1.27
|
||||||
@ -39,12 +52,6 @@ const (
|
|||||||
// Enables less load balancer re-configurations by the service controller
|
// Enables less load balancer re-configurations by the service controller
|
||||||
// (KCCM) as an effect of changing node state.
|
// (KCCM) as an effect of changing node state.
|
||||||
StableLoadBalancerNodeSet featuregate.Feature = "StableLoadBalancerNodeSet"
|
StableLoadBalancerNodeSet featuregate.Feature = "StableLoadBalancerNodeSet"
|
||||||
|
|
||||||
// owner: @nckturner
|
|
||||||
// kep: http://kep.k8s.io/2699
|
|
||||||
// alpha: v1.27
|
|
||||||
// Enable webhook in cloud controller manager
|
|
||||||
CloudControllerManagerWebhook featuregate.Feature = "CloudControllerManagerWebhook"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func SetupCurrentKubernetesSpecificFeatureGates(featuregates featuregate.MutableFeatureGate) error {
|
func SetupCurrentKubernetesSpecificFeatureGates(featuregates featuregate.MutableFeatureGate) error {
|
||||||
@ -54,6 +61,7 @@ func SetupCurrentKubernetesSpecificFeatureGates(featuregates featuregate.Mutable
|
|||||||
// cloudPublicFeatureGates consists of cloud-specific feature keys.
|
// cloudPublicFeatureGates consists of cloud-specific feature keys.
|
||||||
// To add a new feature, define a key for it at k8s.io/api/pkg/features and add it here.
|
// To add a new feature, define a key for it at k8s.io/api/pkg/features and add it here.
|
||||||
var cloudPublicFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
|
var cloudPublicFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
|
||||||
StableLoadBalancerNodeSet: {Default: true, PreRelease: featuregate.Beta},
|
|
||||||
CloudControllerManagerWebhook: {Default: false, PreRelease: featuregate.Alpha},
|
CloudControllerManagerWebhook: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
CloudDualStackNodeIPs: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
StableLoadBalancerNodeSet: {Default: true, PreRelease: featuregate.Beta},
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user