mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Merge pull request #115268 from jsafrane/split-reconstruction
Split volume reconstruction refactoring from SELinuxMountReadWriteOncePod
This commit is contained in:
		@@ -553,6 +553,13 @@ const (
 | 
			
		||||
	// Enables NetworkPolicy status subresource
 | 
			
		||||
	NetworkPolicyStatus featuregate.Feature = "NetworkPolicyStatus"
 | 
			
		||||
 | 
			
		||||
	// owner: @jsafrane
 | 
			
		||||
	// kep: https://kep.k8s.io/3756
 | 
			
		||||
	// alpha: v1.25 (as part of SELinuxMountReadWriteOncePod)
 | 
			
		||||
	// beta: v1.27
 | 
			
		||||
	// Robust VolumeManager reconstruction after kubelet restart.
 | 
			
		||||
	NewVolumeManagerReconstruction featuregate.Feature = "NewVolumeManagerReconstruction"
 | 
			
		||||
 | 
			
		||||
	// owner: @xing-yang @sonasingh46
 | 
			
		||||
	// kep: https://kep.k8s.io/2268
 | 
			
		||||
	// alpha: v1.24
 | 
			
		||||
@@ -999,6 +1006,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
 | 
			
		||||
 | 
			
		||||
	NetworkPolicyStatus: {Default: false, PreRelease: featuregate.Alpha},
 | 
			
		||||
 | 
			
		||||
	NewVolumeManagerReconstruction: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	NodeOutOfServiceVolumeDetach: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	NodeSwap: {Default: false, PreRelease: featuregate.Alpha},
 | 
			
		||||
 
 | 
			
		||||
@@ -308,7 +308,7 @@ func (dswp *desiredStateOfWorldPopulator) processPodVolumes(
 | 
			
		||||
		} else {
 | 
			
		||||
			klog.V(4).InfoS("Added volume to desired state", "pod", klog.KObj(pod), "volumeName", podVolume.Name, "volumeSpecName", volumeSpec.Name())
 | 
			
		||||
		}
 | 
			
		||||
		if !utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) {
 | 
			
		||||
		if !utilfeature.DefaultFeatureGate.Enabled(features.NewVolumeManagerReconstruction) {
 | 
			
		||||
			// sync reconstructed volume. This is necessary only when the old-style reconstruction is still used.
 | 
			
		||||
			// With reconstruct_new.go, AWS.MarkVolumeAsMounted will update the outer spec name of previously
 | 
			
		||||
			// uncertain volumes.
 | 
			
		||||
 
 | 
			
		||||
@@ -89,8 +89,7 @@ func prepareDswpWithVolume(t *testing.T) (*desiredStateOfWorldPopulator, kubepod
 | 
			
		||||
 | 
			
		||||
func TestFindAndAddNewPods_WithRescontructedVolume(t *testing.T) {
 | 
			
		||||
	// Outer volume spec replacement is needed only when the old volume reconstruction is used
 | 
			
		||||
	// (i.e. with SELinuxMountReadWriteOncePod disabled)
 | 
			
		||||
	defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SELinuxMountReadWriteOncePod, false)()
 | 
			
		||||
	defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.NewVolumeManagerReconstruction, false)()
 | 
			
		||||
	// create dswp
 | 
			
		||||
	dswp, fakePodManager, _ := prepareDswpWithVolume(t)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -146,7 +146,7 @@ type reconciler struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (rc *reconciler) Run(stopCh <-chan struct{}) {
 | 
			
		||||
	if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) {
 | 
			
		||||
	if utilfeature.DefaultFeatureGate.Enabled(features.NewVolumeManagerReconstruction) {
 | 
			
		||||
		rc.runNew(stopCh)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@ import (
 | 
			
		||||
	"k8s.io/klog/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// TODO: move to reconciler.go and remove old code there when SELinuxMountReadWriteOncePod is GA
 | 
			
		||||
// TODO: move to reconciler.go and remove old code there when NewVolumeManagerReconstruction is GA
 | 
			
		||||
 | 
			
		||||
// TODO: Replace Run() when SELinuxMountReadWriteOncePod is GA
 | 
			
		||||
// TODO: Replace Run() when NewVolumeManagerReconstruction is GA
 | 
			
		||||
func (rc *reconciler) runNew(stopCh <-chan struct{}) {
 | 
			
		||||
	rc.reconstructVolumes()
 | 
			
		||||
	klog.InfoS("Reconciler: start to sync state")
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestReconstructVolumes(t *testing.T) {
 | 
			
		||||
	defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SELinuxMountReadWriteOncePod, true)()
 | 
			
		||||
	defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.NewVolumeManagerReconstruction, true)()
 | 
			
		||||
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		name                                string
 | 
			
		||||
@@ -146,7 +146,7 @@ func TestReconstructVolumes(t *testing.T) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestCleanOrphanVolumes(t *testing.T) {
 | 
			
		||||
	defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SELinuxMountReadWriteOncePod, true)()
 | 
			
		||||
	defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.NewVolumeManagerReconstruction, true)()
 | 
			
		||||
 | 
			
		||||
	type podInfo struct {
 | 
			
		||||
		podName         string
 | 
			
		||||
@@ -261,7 +261,7 @@ func TestReconstructVolumesMount(t *testing.T) {
 | 
			
		||||
	// Since the volume is reconstructed, it must be marked as uncertain
 | 
			
		||||
	// even after a final SetUp error, see https://github.com/kubernetes/kubernetes/issues/96635
 | 
			
		||||
	// and https://github.com/kubernetes/kubernetes/pull/110670.
 | 
			
		||||
	defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SELinuxMountReadWriteOncePod, true)()
 | 
			
		||||
	defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.NewVolumeManagerReconstruction, true)()
 | 
			
		||||
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		name        string
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user