Kubernetes Vetical Pod Autoscaler wont recreate pods

Cluster information:

Kubernetes version: 1.22.6-gke.300
Cloud being used: Google Cloud
Host OS: linux/amd64

I’m running the Kubernetes VPA on a GKE project. It has Vertical Pod Autoscaling enabled and I’ve run the vpa-up.sh script from their Github VPA.

Furthermore, the pods running are JupyterHub notebook servers, which has been setup following: Zero to Jupyterhub with Kubernetes. They are created with 200m CPU limit and 100m CPU request:

As a test, I’m running an infinite for loop, printing the value every time, to get the CPU running.

When running the for loop in a notebook, the CPU usage quickly reaches the limit of 200m CPU. However the VPA never performs a scale, despite the updateMode being Auto. I’ve tried setting a minAllowed for the VPA, but that still doesn’t trigger a rescale.

  ...
  resourcePolicy:
    containerPolicies:
    - containerName: '*'
      minAllowed:
        cpu: 400m

So when describing the pod and autoscaler, the output shows:

NAME             CPU(cores)   MEMORY(bytes)   
jupyter-pytest   1m           411Mi
  ...
  recommendation:
    containerRecommendations:
    - containerName: jupyter-pytest
      lowerBound:
        cpu: 400m
        memory: 500Mi
      target:
        cpu: 400m
        memory: 500Mi
      uncappedTarget:
        cpu: 25m
        memory: 262144k
      upperBound:
        cpu: 400m
        memory: "951510605"

How come it doesn’t perform a scale, despite the usage being below the lowerBound?