#10137·autoscaler

VPA InPlace: Updater repeatedly detects a stale OOM as a quick OOM

Author: d10101000Created Aug 13, 2026Updated Sep 13, 2026
Labelsarea/vertical-pod-autoscalerkind/bugneeds-triage

Which component are you using?: /area vertical-pod-autoscaler

What version of the component are you using?:

Component version: v1.7.1

What k8s version are you using (kubectl version)?:

kubectl version Output

$ kubectl version
Client Version: v1.36.2
Kustomize Version: v5.8.1
Server Version: v1.36.2-eks-8f14419

What environment is this in?: EKS

What did you expect to happen?: The VPA Updater should consider the age of an OOM event recorded in pod.status.containerStatuses[].lastState.terminated. An old OOM event should not continue to activate the quick OOM logic indefinitely.

What happened instead?: With updateMode: InPlace, the Pod is not recreated, so the same last termination state remains in the Pod status and activates the quick OOM logic on every updater cycle for the lifetime of the Pod.

OOM recorded on 2026-08-03:

lastState:
  terminated:
    exitCode: 137
    finishedAt: '2026-08-03T09:10:28Z'
    reason: OOMKilled
    startedAt: '2026-08-03T09:07:44Z'

VPA Updater log on 2026-08-13:

2026-08-13T10:34:05.324316555Z I0813 10:34:05.324234 1 update_priority_calculator.go:125] "Quick OOM detected in pod" pod="<namespace>/<pod>" containerName="<container>"

How to reproduce it (as minimally and precisely as possible):

  1. Enable the InPlace feature gate for the VPA Updater.
  2. Create a workload controlled by a VPA with updateMode: InPlace.
  3. Cause the VPA-controlled container to be OOM-killed shortly after starting, so that its runtime is less than --evict-after-oom-threshold.
  4. Check the VPA Updater logs during subsequent update cycles.

Anything else we need to know?: