diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 0ef90c56c5f..756fe8b84ab 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -1020,7 +1020,7 @@ func NewMainKubelet(ctx context.Context, // setup eviction manager evictionManager, evictionAdmitHandler := eviction.NewManager(klet.resourceAnalyzer, evictionConfig, - killPodNow(logger, klet.podWorkers, kubeDeps.Recorder), klet.imageManager, klet.containerGC, kubeDeps.Recorder, nodeRef, klet.clock, kubeCfg.LocalStorageCapacityIsolation) + killPodNow(ctx, klet.podWorkers, kubeDeps.Recorder), klet.imageManager, klet.containerGC, kubeDeps.Recorder, nodeRef, klet.clock, kubeCfg.LocalStorageCapacityIsolation) klet.evictionManager = evictionManager @@ -1061,7 +1061,7 @@ func NewMainKubelet(ctx context.Context, handlers = append(handlers, klet.containerManager.GetAllocateResourcesPodAdmitHandler()) - criticalPodAdmissionHandler := preemption.NewCriticalPodAdmissionHandler(klet.getAllocatedPods, killPodNow(logger, klet.podWorkers, kubeDeps.Recorder), kubeDeps.Recorder) + criticalPodAdmissionHandler := preemption.NewCriticalPodAdmissionHandler(klet.getAllocatedPods, killPodNow(ctx, klet.podWorkers, kubeDeps.Recorder), kubeDeps.Recorder) handlers = append(handlers, lifecycle.NewPredicateAdmitHandler(klet.GetCachedNode, criticalPodAdmissionHandler, klet.containerManager.UpdatePluginResources)) // apply functional Option's for _, opt := range kubeDeps.Options { @@ -1100,7 +1100,7 @@ func NewMainKubelet(ctx context.Context, Recorder: kubeDeps.Recorder, NodeRef: nodeRef, GetPodsFunc: klet.GetActivePods, - KillPodFunc: killPodNow(logger, klet.podWorkers, kubeDeps.Recorder), + KillPodFunc: killPodNow(ctx, klet.podWorkers, kubeDeps.Recorder), SyncNodeStatusFunc: klet.syncNodeStatus, ShutdownGracePeriodRequested: kubeCfg.ShutdownGracePeriod.Duration, ShutdownGracePeriodCriticalPods: kubeCfg.ShutdownGracePeriodCriticalPods.Duration, diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index ee3d90b4414..73d121fc6f3 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -394,7 +394,7 @@ func newTestKubeletWithImageList( } // setup eviction manager evictionManager, evictionAdmitHandler := eviction.NewManager(kubelet.resourceAnalyzer, eviction.Config{}, - killPodNow(logger, kubelet.podWorkers, fakeRecorder), kubelet.imageManager, kubelet.containerGC, fakeRecorder, nodeRef, kubelet.clock, kubelet.supportLocalStorageCapacityIsolation()) + killPodNow(tCtx, kubelet.podWorkers, fakeRecorder), kubelet.imageManager, kubelet.containerGC, fakeRecorder, nodeRef, kubelet.clock, kubelet.supportLocalStorageCapacityIsolation()) kubelet.evictionManager = evictionManager handlers := []lifecycle.PodAdmitHandler{} @@ -406,7 +406,7 @@ func newTestKubeletWithImageList( Recorder: fakeRecorder, NodeRef: nodeRef, GetPodsFunc: kubelet.podManager.GetPods, - KillPodFunc: killPodNow(logger, kubelet.podWorkers, fakeRecorder), + KillPodFunc: killPodNow(tCtx, kubelet.podWorkers, fakeRecorder), SyncNodeStatusFunc: func(context.Context) {}, ShutdownGracePeriodRequested: 0, ShutdownGracePeriodCriticalPods: 0, diff --git a/pkg/kubelet/pod_workers.go b/pkg/kubelet/pod_workers.go index 4822b8e99d1..8e90399a53f 100644 --- a/pkg/kubelet/pod_workers.go +++ b/pkg/kubelet/pod_workers.go @@ -1673,7 +1673,7 @@ func (p *podWorkers) removeTerminatedWorker(logger klog.Logger, uid types.UID, s // killPodNow returns a KillPodFunc that can be used to kill a pod. // It is intended to be injected into other modules that need to kill a pod. -func killPodNow(logger klog.Logger, podWorkers PodWorkers, recorder record.EventRecorder) eviction.KillPodFunc { +func killPodNow(ctx context.Context, podWorkers PodWorkers, recorder record.EventRecorder) eviction.KillPodFunc { return func(pod *v1.Pod, isEvicted bool, gracePeriodOverride *int64, statusFn func(*v1.PodStatus)) error { // determine the grace period to use when killing the pod gracePeriod := int64(0) @@ -1695,8 +1695,7 @@ func killPodNow(logger klog.Logger, podWorkers PodWorkers, recorder record.Event // open a channel we block against until we get a result ch := make(chan struct{}, 1) podWorkers.UpdatePod( - // KillPodFunc interface does not provide a context parameter. - klog.NewContext(context.TODO(), logger), + ctx, UpdatePodOptions{ Pod: pod, UpdateType: kubetypes.SyncPodKill, diff --git a/pkg/kubelet/pod_workers_test.go b/pkg/kubelet/pod_workers_test.go index 0af256d8f3a..e9802e391b0 100644 --- a/pkg/kubelet/pod_workers_test.go +++ b/pkg/kubelet/pod_workers_test.go @@ -2227,9 +2227,9 @@ func TestFakePodWorkers(t *testing.T) { // TestKillPodNowFunc tests the blocking kill pod function works with pod workers as expected. func TestKillPodNowFunc(t *testing.T) { fakeRecorder := &record.FakeRecorder{} - logger, _ := ktesting.NewTestContext(t) + logger, tCtx := ktesting.NewTestContext(t) podWorkers, _, processed := createPodWorkers(logger) - killPodFunc := killPodNow(logger, podWorkers, fakeRecorder) + killPodFunc := killPodNow(tCtx, podWorkers, fakeRecorder) pod := newNamedPod("test", "ns", "test", false) gracePeriodOverride := int64(0) err := killPodFunc(pod, false, &gracePeriodOverride, func(status *v1.PodStatus) {