github kubernetes/autoscaler cluster-autoscaler-1.37.0

Urgent Upgrade Notes

Action Required

  • CapacityQuota users: update the CapacityQuota CRD and migrate manifests to autoscaling.x-k8s.io/v1beta1. The v1alpha1 API remains served but is deprecated; v1beta1 is now the storage version. The updated CRD is available in this release. (#9890, @norbertcyran)

Changes by Kind

API Change

  • Add observedGeneration to CapacityQuota status. (#9864, @norbertcyran)
  • Add readyReplicas to CapacityBuffer status to report buffer chunks schedulable on existing nodes. The bundled core library reconciles this field when CapacityBuffer pod injection is enabled; reconciliation is controlled by --capacity-buffer-ready-replicas-enabled, which defaults to true. (#10342, core #213, @norbertcyran)
  • External gRPC: add maxNodeStartupDuration and allowNonAtomicScaleUpToMax to NodeGroupAutoscalingOptions. This preserves MaxNodeStartupTime returned by NodeGroupGetOptions, preventing newly registered nodes from being classified as Unready instead of NotStarted, and adds support for AllowNonAtomicScaleUpToMax. (#10266, @LakshmirajSunilSawant)
  • External gRPC: add optional resourceSliceBytes to NodeGroupTemplateNodeInfoResponse, allowing providers to return node-local DRA ResourceSlices for template nodes and support scale-from-zero for pods using ResourceClaims. (#10303, @Despire)

Feature

  • Add opt-in graceful degradation for large unschedulable-pod backlogs. With --enable-graceful-degradation, scheduling simulations can stop at --pending-pods-batching-timeout and proceed with a subset of pods instead of blocking the autoscaling loop indefinitely. This can trade optimal scaling decisions for continued progress under heavy load. (#9242, @damikag)
  • Add a delay_reason label to the node_removal_latency_seconds metric to identify technical blockers that delayed scale-down, such as BlockedByPod or AtomicScaleDownFailed. (#9721, @ttetyanka)
  • Expire ProvisioningRequest capacity bookings once all associated pods are scheduled, setting the BookingExpired condition with reason CapacityBookingConsumed. (#9806, @cvgenesis)
  • CoreWeave: implement GPULabel so GPU nodes are tracked as upcoming while device plugins start, add rdma/ib capacity to node templates, and add missing instance types including b300-8x. (#10295, @chunter-bits)
  • DigitalOcean: support scale-from-zero for AMD GPU nodes and use cpuMilliCores for more precise CPU allocatable calculations. (#10509, @m3co-code)
  • GCE: add pricing calculations for the E4 machine family. (#9516, @harrisgu-Google)
  • GCE: add pricing information for the Z4D machine family. (#9791, @mariafromano-25)
  • GCE: add pricing information for the Z4M machine family. (#10270, @yangspirit)
  • GCE: proactively refresh cached MIG information after scale-down. (#9915, @tetianakh)
  • GCE: add the CLOUD_KMS_ERROR error code to identify Cloud Key Management Service failures. (#10230, @MatthewGree)
  • Hetzner: add a per-nodepool firewalls field to nodeConfigs in HCLOUD_CLUSTER_CONFIG. Firewalls specified by ID or name are attached at server creation in addition to the cluster-wide HCLOUD_FIREWALL. (#9810, @tjorri)

Bug or Regression

  • Fix CapacityBuffer sizing when both replicas and percentage are specified: use the maximum rather than the minimum, and round fractional percentage-based chunk counts up. (#9959, @walidghallab)
  • AWS: fix scale-from-zero for node groups using CSI-backed volumes with topology constraints. (#10133, @Debasish-87)
  • AWS: fix integer overflow in memory calculations for ASGs using attribute-based InstanceRequirements without instance-type overrides. A MemoryMiB.Min of 2048 or greater could produce a zero-memory template node and prevent scale-up. (#10171, @pujitha24)
  • Azure: invalidate the instance cache after an ETag precondition refresh so instance-derived data is recomputed from fresh state. (#9991, @MaximilianoUribe)
  • Azure: fix VMSS instance deletion when disableAzureStackCloud is enabled. (#10082, @tallaxes)
  • Cluster API: fix DRA scale-from-zero by generating ResourceSlices with a valid resource-slice count. (#10200, @dlanov)
  • Cluster API: include topology.kubernetes.io/zone in extracted node-template labels so pods with zone constraints can trigger scale-up. (#10258, @SISheogorath)
  • GCE: on a cache miss with an otherwise warm MIG cache, fetch only the missing MIG rather than rebuilding the entire cache. (#9917, @tetianakh)
  • GCE: treat nodes with non-GCE or empty provider IDs as unmanaged rather than returning an error. (#10274, @ppmechlinski)
  • OCI: recover node pools when failed node creation leaves a node without an instance ID. (#9703, @jlamillan)
  • OCI: include the fault-domain label on node-pool templates so pods with fault-domain scheduling constraints can select zero-size pools. (#10047, @jlamillan)
  • Scaleway: report nodes in an error state as InstanceCreating so failed provisioning is detected sooner. (#9949, @Tomy2e)

Other (Cleanup or Flake)

  • Rename the Cluster Autoscaler-managed CapacityQuota Valid condition to cluster-autoscaler.kubernetes.io/valid to distinguish it from the public CapacityQuota API. (#9863, @norbertcyran)
  • Propagate cancellation through Autoscaler.RunOnce and cancel the main context on termination signals so long-running iterations can be interrupted during graceful shutdown. (#9887, #10511, @yashrajshuklaaa, @norbertcyran)
  • Add --scheduler-verbosity to reduce the verbosity of imported scheduler logs without lowering Cluster Autoscaler's overall log verbosity. (#9977, @chmurka1)
  • Azure: redact query parameters and escape paths when logging ResponseError, through the updated Azure SDK dependencies. (#9919, @theunrepentantgeek)
  • Consume the extracted core implementation from the sigs.k8s.io/cluster-autoscaler module; provider integrations in this repository use the shared core packages and interfaces. (#10002, @Choraden)
  • Update Kubernetes dependencies to v1.37.1 and Cluster Autoscaler Core to v0.0.0-k8s.v1.37.1. (#10366, #10544, @jackfrancis)

Images

  • registry.k8s.io/autoscaling/cluster-autoscaler:v1.37.0
  • registry.k8s.io/autoscaling/cluster-autoscaler-amd64:v1.37.0
  • registry.k8s.io/autoscaling/cluster-autoscaler-arm64:v1.37.0
  • registry.k8s.io/autoscaling/cluster-autoscaler-s390x:v1.37.0

Full Changelog: cluster-autoscaler-1.36.0...cluster-autoscaler-1.37.0

Don't miss a new autoscaler release

NewReleases is sending notifications on new releases.