pkg/kubelet: Make newTestKubeletWithImageList allocate a userns manager

When switching the feature flag to on by default, this test was failing:

	I0213 14:42:45.311186  341895 factory.go:193] Registered Plugin "containerd"
	I0213 14:42:45.315673  341895 plugins.go:615] "Loaded volume plugin" pluginName="fake"
	I0213 14:42:45.315750  341895 kubelet_pods.go:1165] "Clean up pod workers for terminated pods"
	I0213 14:42:45.315759  341895 kubelet_pods.go:1215] "Clean up probes for terminated pods"
	I0213 14:42:45.315764  341895 kubelet_pods.go:1219] "Clean up orphaned pod statuses"
	I0213 14:42:45.315768  341895 kubelet_pods.go:1223] "Clean up orphaned pod user namespace allocations"
	--- FAIL: TestKubelet_HandlePodCleanups (0.00s)
	    --- FAIL: TestKubelet_HandlePodCleanups/missing_pod_is_requested_for_termination_with_short_grace_period (0.00s)
	panic: runtime error: invalid memory address or nil pointer dereference [recovered]
		panic: runtime error: invalid memory address or nil pointer dereference
	[signal SIGSEGV: segmentation violation code=0x1 addr=0x38 pc=0x2b14d7e]

	goroutine 142 [running]:
	testing.tRunner.func1.2({0x30b5260, 0x5cfa1e0})
		/usr/lib/go-1.23/src/testing/testing.go:1632 +0x230
	testing.tRunner.func1()
		/usr/lib/go-1.23/src/testing/testing.go:1635 +0x35e
	panic({0x30b5260?, 0x5cfa1e0?})
		/usr/lib/go-1.23/src/runtime/panic.go:785 +0x132
	k8s.io/kubernetes/pkg/kubelet/userns.(*UsernsManager).CleanupOrphanedPodUsernsAllocations(0x0, {0x5d90f80, 0x0, 0x0?}, {0xc0006a1d50, 0x1, 0x0?})
		/home/rodrigo/src/kinvolk/kubernetes/kubernetes/pkg/kubelet/userns/userns_manager.go:474 +0x9e
	k8s.io/kubernetes/pkg/kubelet.(*Kubelet).HandlePodCleanups(0xc00067c808, {0x3b876b0, 0x5d90f80})
		/home/rodrigo/src/kinvolk/kubernetes/kubernetes/pkg/kubelet/kubelet_pods.go:1224 +0x618
	k8s.io/kubernetes/pkg/kubelet.TestKubelet_HandlePodCleanups.func35(0xc0001349c0)
		/home/rodrigo/src/kinvolk/kubernetes/kubernetes/pkg/kubelet/kubelet_pods_test.go:6415 +0x72d
	testing.tRunner(0xc0001349c0, 0xc0009801b0)
		/usr/lib/go-1.23/src/testing/testing.go:1690 +0xf4
	created by testing.(*T).Run in goroutine 141
		/usr/lib/go-1.23/src/testing/testing.go:1743 +0x390
	exit status 2
	FAIL	k8s.io/kubernetes/pkg/kubelet	0.029s

The issue is that no userns manager is allocated in the FakeKubelet.
Let's allocate one.

Signed-off-by: Rodrigo Campos <rodrigoca@microsoft.com>
This commit is contained in:
Rodrigo Campos 2025-02-13 14:51:45 +01:00
parent 96c2b81670
commit 3725c6f765

View File

@ -95,6 +95,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet/sysctl"
"k8s.io/kubernetes/pkg/kubelet/token"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/kubelet/userns"
kubeletutil "k8s.io/kubernetes/pkg/kubelet/util"
"k8s.io/kubernetes/pkg/kubelet/util/queue"
kubeletvolume "k8s.io/kubernetes/pkg/kubelet/volumemanager"
@ -368,6 +369,10 @@ func newTestKubeletWithImageList(
ShutdownGracePeriodCriticalPods: 0,
})
kubelet.shutdownManager = shutdownManager
kubelet.usernsManager, err = userns.MakeUserNsManager(kubelet)
if err != nil {
t.Fatalf("Failed to create UserNsManager: %v", err)
}
kubelet.admitHandlers.AddPodAdmitHandler(shutdownManager)
// Add this as cleanup predicate pod admitter