mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-02 00:07:50 +00:00
Merge pull request #109072 from jiahuif-forks/feature/leader-migration/to-ga
Graduate Leader Migration to GA
This commit is contained in:
commit
d4ac0ebecb
@ -770,6 +770,7 @@ const (
|
|||||||
// owner: @jiahuif
|
// owner: @jiahuif
|
||||||
// alpha: v1.21
|
// alpha: v1.21
|
||||||
// beta: v1.22
|
// beta: v1.22
|
||||||
|
// GA: v1.24
|
||||||
//
|
//
|
||||||
// Enables Leader Migration for kube-controller-manager and cloud-controller-manager
|
// Enables Leader Migration for kube-controller-manager and cloud-controller-manager
|
||||||
ControllerManagerLeaderMigration featuregate.Feature = "ControllerManagerLeaderMigration"
|
ControllerManagerLeaderMigration featuregate.Feature = "ControllerManagerLeaderMigration"
|
||||||
@ -993,7 +994,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
KubeletInUserNamespace: {Default: false, PreRelease: featuregate.Alpha},
|
KubeletInUserNamespace: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
MemoryQoS: {Default: false, PreRelease: featuregate.Alpha},
|
MemoryQoS: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
CPUManagerPolicyOptions: {Default: true, PreRelease: featuregate.Beta},
|
CPUManagerPolicyOptions: {Default: true, PreRelease: featuregate.Beta},
|
||||||
ControllerManagerLeaderMigration: {Default: true, PreRelease: featuregate.Beta},
|
ControllerManagerLeaderMigration: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.26
|
||||||
CPUManagerPolicyAlphaOptions: {Default: false, PreRelease: featuregate.Alpha},
|
CPUManagerPolicyAlphaOptions: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
CPUManagerPolicyBetaOptions: {Default: true, PreRelease: featuregate.Beta},
|
CPUManagerPolicyBetaOptions: {Default: true, PreRelease: featuregate.Beta},
|
||||||
JobMutableNodeSchedulingDirectives: {Default: true, PreRelease: featuregate.Beta},
|
JobMutableNodeSchedulingDirectives: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
@ -37,6 +37,7 @@ const (
|
|||||||
// owner: @jiahuif
|
// owner: @jiahuif
|
||||||
// alpha: v1.21
|
// alpha: v1.21
|
||||||
// beta: v1.22
|
// beta: v1.22
|
||||||
|
// GA: v1.24
|
||||||
//
|
//
|
||||||
// Enables Leader Migration for kube-controller-manager and cloud-controller-manager
|
// Enables Leader Migration for kube-controller-manager and cloud-controller-manager
|
||||||
// copied and sync'ed from k8s.io/kubernetes/pkg/features/kube_features.go
|
// copied and sync'ed from k8s.io/kubernetes/pkg/features/kube_features.go
|
||||||
@ -51,5 +52,5 @@ func SetupCurrentKubernetesSpecificFeatureGates(featuregates featuregate.Mutable
|
|||||||
// 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{
|
||||||
IPv6DualStack: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
|
IPv6DualStack: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
|
||||||
ControllerManagerLeaderMigration: {Default: true, PreRelease: featuregate.Beta},
|
ControllerManagerLeaderMigration: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.26
|
||||||
}
|
}
|
||||||
|
@ -23,49 +23,30 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
|
||||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
|
||||||
"k8s.io/controller-manager/config"
|
"k8s.io/controller-manager/config"
|
||||||
"k8s.io/controller-manager/pkg/features"
|
|
||||||
migrationconfig "k8s.io/controller-manager/pkg/leadermigration/config"
|
migrationconfig "k8s.io/controller-manager/pkg/leadermigration/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLeaderMigrationOptions(t *testing.T) {
|
func TestLeaderMigrationOptions(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
flags []string
|
flags []string
|
||||||
configContent string
|
configContent string
|
||||||
expectEnabled bool
|
expectEnabled bool
|
||||||
expectErr bool
|
expectErr bool
|
||||||
enableFeatureGate bool
|
expectConfig *config.LeaderMigrationConfiguration
|
||||||
expectConfig *config.LeaderMigrationConfiguration
|
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "default (disabled), with feature gate disabled",
|
name: "enabled, with default configuration",
|
||||||
flags: []string{},
|
flags: []string{"--enable-leader-migration"},
|
||||||
enableFeatureGate: false,
|
expectEnabled: true,
|
||||||
expectEnabled: false,
|
expectErr: false,
|
||||||
expectErr: false,
|
expectConfig: migrationconfig.DefaultLeaderMigrationConfiguration(),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "enabled, with feature gate disabled",
|
name: "enabled, with custom configuration file",
|
||||||
flags: []string{"--enable-leader-migration"},
|
flags: []string{"--enable-leader-migration"},
|
||||||
enableFeatureGate: false,
|
expectEnabled: true,
|
||||||
expectErr: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "enabled, with default configuration",
|
|
||||||
flags: []string{"--enable-leader-migration"},
|
|
||||||
enableFeatureGate: true,
|
|
||||||
expectEnabled: true,
|
|
||||||
expectErr: false,
|
|
||||||
expectConfig: migrationconfig.DefaultLeaderMigrationConfiguration(),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "enabled, with custom configuration file",
|
|
||||||
flags: []string{"--enable-leader-migration"},
|
|
||||||
enableFeatureGate: true,
|
|
||||||
expectEnabled: true,
|
|
||||||
configContent: `
|
configContent: `
|
||||||
apiVersion: controllermanager.config.k8s.io/v1alpha1
|
apiVersion: controllermanager.config.k8s.io/v1alpha1
|
||||||
kind: LeaderMigrationConfiguration
|
kind: LeaderMigrationConfiguration
|
||||||
@ -81,10 +62,9 @@ controllerLeaders: []
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "enabled, with custom configuration file (version v1beta1)",
|
name: "enabled, with custom configuration file (version v1beta1)",
|
||||||
flags: []string{"--enable-leader-migration"},
|
flags: []string{"--enable-leader-migration"},
|
||||||
enableFeatureGate: true,
|
expectEnabled: true,
|
||||||
expectEnabled: true,
|
|
||||||
configContent: `
|
configContent: `
|
||||||
apiVersion: controllermanager.config.k8s.io/v1beta1
|
apiVersion: controllermanager.config.k8s.io/v1beta1
|
||||||
kind: LeaderMigrationConfiguration
|
kind: LeaderMigrationConfiguration
|
||||||
@ -102,7 +82,6 @@ controllerLeaders: []
|
|||||||
}
|
}
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ControllerManagerLeaderMigration, tc.enableFeatureGate)()
|
|
||||||
flags := tc.flags
|
flags := tc.flags
|
||||||
if tc.configContent != "" {
|
if tc.configContent != "" {
|
||||||
configFile, err := ioutil.TempFile("", tc.name)
|
configFile, err := ioutil.TempFile("", tc.name)
|
||||||
|
Loading…
Reference in New Issue
Block a user