#142187·Kubernetes

`Pod didn't trigger scale-up` should specify needs

Author: jsorefCreated Sep 17, 2026Updated Sep 17, 2026
Labelskind/bugneeds-signeeds-triage

What happened?

Pod didn't trigger scale-up: 9 node(s) didn't match Pod's node affinity/selector, 3 Insufficient cpu, 3 node(s) had untolerated taint(s), 3 in backoff after failed scale-up

What did you expect to happen?

  • When cpu is insufficient, the event should include the required cpu (note that this is often the sum of a number of containers, and thus something that kubernetes calculated but not something easily seen when looking at a pod)
  • When memory is insufficient, the event should include the required memory (note that this is often the sum of a number of containers, and thus something that kubernetes calculated but not something easily seen when looking at a pod)
  • When taint is untolerated, if there is only one (or maybe two), list it
  • When node affinity/node selector isn't matched and there is only one (or maybe two), list it

How can we reproduce it (as minimally and precisely as possible)?

define a pod

apiVersion: v1
kind: Pod
metadata:
  name: unhappy
spec:
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - podAffinityTerm:
          labelSelector:
            matchLabels:
              app.kubernetes.io/name: something
          topologyKey: kubernetes.io/hostname
        weight: 100
  containers:
  - image: bash
    name: main
    resources:
      limits:
        cpu: "5"
        memory: 5Gi
      requests:
        cpu: "2"
        memory: 5Gi
  - image: bash
    name: sidecar-a
    resources:
      limits:
        cpu: 700m
        memory: 1500Mi
      requests:
        cpu: 300m
        memory: 1500Mi
  - image: bash
    name: sidecar-b
    resources:
      limits:
        cpu: 630m
        memory: 1800Mi
      requests:
        cpu: 350m
        memory: 1450Mi
  initContainers:
  - args:
    - sleep 3
    command:
    - sh
    - -c
    image: bash
    name: init-1
    resources:
      limits:
        cpu: "5"
        memory: 5Gi
      requests:
        cpu: "2"
        memory: 5Gi
  - args:
    - sleep 3
    command:
    - sh
    - -c
    image: bash
    name: init-2
    resources:
      limits:
        cpu: "4"
        memory: 6Gi
      requests:
        cpu: "1"
        memory: 3Gi
  nodeSelector:
    jam: "1"
  tolerations:
  - effect: NoSchedule
    key: milk
    operator: Exists
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300

create some nodes that don't perfectly match the requirements.

run:

kubectl events unhappy

trying to figure out why the pod won't work.

  • Knowing which selectors/affinities were relevant would help with deciding which node(pool)s to fix
  • Knowing the exact required memory/cpu would help with fixing a node(pool) to satisfy the requirements

Anything else we need to know?

No response

Kubernetes version

Client Version: v1.36.2
Kustomize Version: v5.8.1
Server Version: v1.35.7-gke.1222000

Cloud provider

Google

OS version

No response

Install tools

No response

Container runtime (CRI) and version (if applicable)

No response

Related plugins (CNI, CSI, ...) and versions (if applicable)

No response