kubelet: pass upper-level context through killPodNow

Switch killPodNow to take context.Context and pass the existing upper-level context into podWorkers.UpdatePod, instead of creating a TODO-based context from logger.
This commit is contained in:
hoteye 2026-02-20 00:30:24 +08:00
parent 8109698171
commit 5fdef09048
4 changed files with 9 additions and 10 deletions

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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) {