#10302·autoscaler

VPA: recommender logs errors if it finds a checkpoint from another recommender

Author: irbekrmCreated Sep 16, 2026Updated Sep 18, 2026
Labelsarea/vertical-pod-autoscalerkind/bugtriage/accepted

Which component are you using?:

/area vertical-pod-autoscaler

What version of the component are you using?:

Component version:

v1.7

What did you expect to happen?:

Two recommenders in a cluster ignore each other's checkpoint objects.

What happened instead?:

On startup, each recommender logs a Error while loading checkpoint.. for each of the checkpoints from the other recommender from here.

The error is harmless as such, just confusing.

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

  1. Have a cluster with VPA recommender installed
  2. Apply a VPA object and a checkpoint object for another recommender foo
< code> kubectl apply -f - <<'EOF' apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: foo spec: targetRef: apiVersion: apps/v1 kind: Deployment name: foo updatePolicy: updateMode: "Off" recommenders: - name: foo --- apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscalerCheckpoint metadata: name: foo-test spec: vpaObjectName: foo containerName: test status: version: v3 lastUpdateTime: "2026-09-16T00:00:00Z" firstSampleStart: "2026-09-08T00:00:00Z" lastSampleStart: "2026-09-16T00:00:00Z" totalSamplesCount: 1000 cpuHistogram: referenceTimestamp: "2026-09-16T00:00:00Z" totalWeight: 1000 bucketWeights: "12": 400 "13": 600 memoryHistogram: referenceTimestamp: "2026-09-16T00:00:00Z" totalWeight: 1000 bucketWeights: "20": 300 "21": 700 EOF
  1. Restart the recommender
bash
$ kubectl rollout restart deploy/vpa-recommender -n vpa
  1. Observe that the recommender on startup logs an error:
bash
$ kubectl logs deploy/vpa-recommender -n vpa
...
E0916 09:42:54.934399       1 cluster_feeder.go:301] "Error while loading checkpoint" err="cannot load checkpoint to missing VPA object default/foo"
...

Anything else we need to know?:

Our setup has two recommenders, one with standard config for all the various 3p plugin VPAs in cluster and one with custom config for all our workloads, which are also across a number of namespaces, so we get quite a few these errors on recommenders' restart. Ideally we'd have each recommender only look at its own subset of namespaces, but I think we can't configure it that way today, so we get both of them try to load each other's checkpoints.

Seems like the recommender already has all VPAs in memory- perhaps it could use that to check if there is some VPA for the checkpoint and not error in that case.