Last Week In Kubernetes Development

Archives
Subscribe
July 31, 2026

LWKD: Week Ending July 26, 2026

Week Ending July 26, 2026

Developer News

Kubernetes v1.36.3 has been released, built with Go 1.26.5. This patch release includes fixes for DRA scheduling and allocator bugs, a kubelet memory leak regression introduced in 1.36, server-side apply regressions, kubeadm etcd learner promotion and join resiliency improvements, and reduced kubelet log noise for missing optional container annotations.

Kubernetes v1.37.0-beta.0 has been released, built with Go 1.26.5. Highlights include a new Recreate strategy for StatefulSets, ClusterTrustBundle moving to stable, metrics.k8s.io promoted to v1, PersistentVolumeClaimUnusedSinceTime enabled by default in beta, new scheduler and workload-aware preemption capabilities, default etcd 3.7.0, and numerous fixes across DRA, scheduling, CEL, kubelet, kube-proxy, and API machinery.

Nominations are now open for the 2026 Kubernetes Steering Committee election, with three seats available for two-year terms. Self-nominations and community nominations must be submitted via a GitHub issue by August 3, with candidate bios due August 4. Prospective candidates are also invited to a public Steering Committee Q&A session on August 5, where current committee members will discuss what serving on the Steering Committee is like and answer questions from candidates.

client-go enhancements in Kubernetes v1.37 introduce a new type-safe informer event handler API, reducing boilerplate and making deletion event handling safer and easier. The release also adds a client-go CHANGELOG.md for documenting breaking Go API changes, expands context handling and contextual logging support, and introduces tooling to help contributors track and document API compatibility changes.

Release Schedule

Next Deadline: Feature Blogs Ready, August 3; Docs Freeze August 5

We are in Code Freeze. If you are working on a feature blog post for v1.37, remember that you need that ready for editing by Monday. If you are responsible for an Enhancement, please have your documentation finalized by Wednesday.

Cherry-pick deadline for the next patch releases is next week, August 7.

Featured PRs

140856: Add 'allocatedPods' Kubelet endpoint for dynamic container resource allocations

In this pull request, tallclair introduced the KubeletAllocatedPodsEndpoint feature gate and the corresponding /allocatedPods endpoint on the Kubelet. Linked to the Dynamic Containers proposal (KEP-6030), this endpoint allows the API server to query an on-demand /allocated subresource directly from the node without inflating storage overhead in etcd. By serving the Kubelet's locally assigned pod specifications, this change provides a lightweight way to track when a running pod's allocated spec diverges from its desired state, laying critical groundwork for in-place resizing and dynamic container features in v1.37.

140366: Add CheckpointPod and RestorePod CRI API

In this pull request, rst0git introduced pod-level checkpoint and restore RPCs (CheckpointPod and RestorePod) to the v1.RuntimeService CRI interface. Driven by KEP-5823, this establishes a standardized contract between the Kubelet and container runtimes (such as CRI-O and containerd) to save and recover entire pod sandbox states without requiring Kubernetes to manage or interpret runtime-specific state files. This update lays the core API foundation for native stateful pod migration and fast-booting workloads across Kubernetes clusters.

140805: Graduate PLEGOnDemandRelist to GA

In this pull request, tallclair promoted PLEGOnDemandRelist to General Availability, making the optimized kubelet relist behavior the permanent default in Kubernetes v1.37 after proving stable throughout v1.36. This graduation removes the feature gate and confirms the implementation is production-ready for all users. The change improves kubelet reliability and simplifies long-term maintenance for SIG Node while signaling confidence that no emergency rollback path is needed.

KEP of the Week

KEP-6164: SIG API Machinery: Eliminating Internal API Types

KEP-6164, authored by @jpbetz, @michaelasp, and @yedou37 in June 2026, eliminates Kubernetes' long-standing internal (__internal) API types in favor of stable versioned API types. By removing unnecessary conversions inside the kube-apiserver, the enhancement reduces conversion overhead, with benchmarks showing up to 5.8x faster conversions and significantly lower memory allocations for large Pod list operations. The implementation follows a phased approach: first making internal and versioned types memory-identical, then replacing internal types with Go type aliases before eventually removing them entirely. Targeting Stable in Kubernetes v1.37, the enhancement improves control plane performance and simplifies API maintenance without changing any user-facing APIs or wire formats.

Other Merges

  • Fixes a DRA structured allocator bug where allocationMode: All requests did not properly fail when a matching device was capacity-exhausted under DRAConsumableCapacity.
  • kubectl: includes the group name in the resource-not-found error message when a resource type is requested with a group qualifier it doesn't belong to.
  • Adds finer-grained buckets to the watch_list_duration_seconds metric for better observability of watch-list operations.
  • Fixes the error message in PodGroupPostFilter plugins which incorrectly referenced "PostFilter plugins" instead of "PodGroupPostFilter plugins".
  • Adds a storage_to_cache stage to the watch dispatch metric for finer-grained latency observability of the watch pipeline.
  • An allocatedPods Kubelet endpoint gated by the KubeletAllocatedPodsEndpoint feature gate is added; this surfaces allocated-pod information from the Kubelet and backs the /allocated Pod subresource proposed under KEP-5972 Dynamic Containers.
  • Adds a cache_to_watcher stage to the watch dispatch metric, complementing the new storage_to_cache stage for end-to-end latency visibility.
  • The PVC protection controller now skips Unused condition evaluation for unbound PVCs, since the condition only applies to bound PVCs under the PersistentVolumeClaimUnusedSinceTime feature.
  • Fixes DRA scheduler queuing hints for deleted ResourceClaim events, ensuring pods are re-queued when a ResourceClaim allocation is removed.
  • Adds an error outcome to the cloud-provider route_sync_total metric, which previously only counted successful syncs.
  • kube-proxy/nftables: avoids using a numgen map for single-endpoint service DNAT, reducing per-rule scan cost in clusters with many Services.

Promotions

  • AllowUnsafeMalformedObjectDeletion to Beta under KEP-3926.
  • PLEGOnDemandRelist to GA.
  • InPlacePodVerticalScalingInitContainers to GA.
  • KEP-5304 metadata/downward API to Beta.

Version Updates

  • google.golang.org/grpc to v1.82.1, a security release.

Subprojects and Dependency Updates

  • cluster-api v1.14.0-beta.1: allow ClusterClass metadata patches, add cluster-api-provider-kubeswift to built-in providers; fixes clusterctl rejecting incomplete GitHub release asset URLs

Shoutouts

  • No shoutouts this week. Want to thank someone for special efforts to improve Kubernetes? Tag them in the #shoutouts channel.
Don't miss what's next. Subscribe to Last Week In Kubernetes Development:
← Newer LWKD: Week Ending August 2, 2026 Older → LWKD: Week Ending July 12, 2026
Powered by Buttondown, the easiest way to start and grow your newsletter.