Devops
3 Min Read

Has Kubernetes Peaked Yet ?

Subhajeet Dey
January 15, 2025

The Kubernetes 1.32 release is here, marking a significant milestone as Kubernetes celebrates its tenth anniversary. With the codename "Penelope", this release draws inspiration from the mythological figure in The Odyssey, known for her dedication to weaving and unweaving her work—a nod to the iterative improvements and deprecations that come with each Kubernetes update.

Let’s delve into the highlights, updates, and deprecations in this release:

Major Updates in Kubernetes 1.32

1. Dynamic Resource Allocation (DRA) Enhancements

Improvements to DRA enable better resource allocation for applications requiring specialized hardware like GPUs, FPGAs, and network adapters. These updates ensure greater adaptability, particularly for machine learning and high-performance computing applications.

2. Kube-Scheduler and Cluster Autoscaler Integration

Structured parameter support moves to beta, enabling the kube-scheduler and Cluster Autoscaler to simulate resource claim allocations. This allows for better prediction of resource satisfaction without committing to allocations.

3. Systemd Watchdog for Kubelet Reliability

You can now use the systemd watchdog feature to enhance kubelet reliability. The configuration includes:

WatchdogSec=60s
Restart=on-failure

This setup allows for automatic kubelet restarts upon health check failures, limiting excessive restarts within a specified timeframe.

4. Improved UX for Image Pull Errors

Users now see detailed error messages during an ImagePullBackOff state. For instance:

{
  "waiting": {
    "message": "Back-off pulling image \"quay.io/crio/unsigned:latest\": SignatureValidationFailed...",
    "reason": "ImagePullBackOff"
  }
}

This feature eliminates guesswork by providing clear feedback during pull failures.

New Features Graduating to Stable

1. Custom Resource Field Selectors

Custom Resource Definitions (CRDs) now support field selectors, enabling precise filtering of custom resources. For example:

spec:
  versions:
    - name: v1
      selectableFields:
      - jsonPath: .spec.color

Commands like kubectl get can now filter resources based on field values.

2. StatefulSet PVC Cleanup

PersistentVolumeClaims (PVCs) created by StatefulSets are now automatically cleaned up when no longer needed. Configure retention policies like whenDeleted or whenScaled to prevent orphaned PVCs.

Key Features in Alpha

1. Asynchronous Preemption for Enhanced Scheduling

The Kubernetes scheduler now supports asynchronous preemption, allowing it to process scheduling tasks while initiating pod removals. This speeds up scheduling in busy clusters.

2. CEL-Based Mutating Admission Policies

Simplify resource adjustments during creation with CEL expressions. Examples include adding labels or setting default values, reducing dependency on custom webhooks.

3. Pod-Level Resource Specification

Resources like CPU and memory can now be set at the pod level, allowing dynamic allocation among containers within a pod.

Deprecations

1. FlowSchema and PriorityLevelConfiguration API Changes

The flowcontrol.apiserver.k8s.io/v1beta3 API version is deprecated. Users should migrate to v1, available since Kubernetes 1.29.

2. DRA Structured Parameter Configuration

Enhancement 3036 is significantly altered with the adoption of DRA Structured Parameters under KEP 4381.

While some features like sidecar container stability are scheduled for the next release, this release offers a lots of tools and enhancements aimed at improving cluster performance, usability, and reliability.