From 3725c6f7650c86613bf5cad31e7e946dc6ae099b Mon Sep 17 00:00:00 2001 From: Rodrigo Campos Date: Thu, 13 Feb 2025 14:51:45 +0100 Subject: [PATCH] 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 --- pkg/kubelet/kubelet_test.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 5d8b9d397d8..fd17dd75050 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -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