What is New in Kubernetes 1.34
Kubernetes 1.34 introduces significant stability improvements and matures several important features for production use. The release focuses on making Dynamic Resource Allocation (DRA) production-ready, enhancing in-place pod resource management, and delivering better Windows support through kube-proxy. It also includes many performance and reliability fixes across the API server, scheduler, kubelet, and cluster lifecycle tools.
Administrators and developers will benefit from more consistent behavior, improved observability, and easier management of hardware-accelerated workloads. This version continues the project's commitment to simplifying operations while supporting modern cloud-native applications at scale.
Major Feature Promotions
Kubernetes 1.34 promotes several key features to more stable stages, making them safer and easier to use in production environments.
| Feature | Status in 1.34 | Description |
|---|---|---|
| Dynamic Resource Allocation (DRA) | GA (Stable) | Core functionality using structured parameters is now generally available. This allows better management of devices such as GPUs and other accelerators. |
| VolumeAttributesClass | GA | The API for mutable volume attributes has moved to storage.k8s.io/v1 and is now stable. |
| APIServerTracing | GA | Tracing configuration is now stable with support for apiserver.config.k8s.io/v1. |
| WinDSR and WinOverlay (kube-proxy) | GA | Windows Direct Server Return and Overlay features are now stable and enabled by default. |
| PodLevelResources | Beta (enabled by default) | Allows defining CPU and memory resources at the pod level in pod.spec.resources. |
| PodObservedGenerationTracking | Beta (enabled by default) | Populates observedGeneration fields in pod status to track changes more accurately. |
| PodLifecycleSleepAction | GA | Container lifecycle sleep actions are now stable. |
Dynamic Resource Allocation (DRA) Enhancements
With DRA reaching stable status, Kubernetes 1.34 adds several practical improvements for device management.
- Kubelet now monitors the health of DRA-allocated devices and reports status in pod.status.containerStatuses.allocatedResourcesStatus (controlled by the ResourceHealthStatus feature gate).
- Added support for shareable devices, capacity sharing between requests, and uniqueness constraints across allocated devices.
- The DRA kubelet gRPC API graduated to v1. The older v1beta1 is deprecated, and drivers should update to the new helper package for compatibility.
- Scheduler filter timeout (default 10 seconds) helps prevent long-running abnormal operations.
- New metric dra_resource_claims_in_use tracks active ResourceClaims per driver.
These changes make DRA more reliable and observable for workloads that rely on specialized hardware.
In-Place Pod Vertical Scaling Improvements
Support for resizing pod resources without restarting continues to mature.
- Added a detailed event when in-place vertical scaling completes, making debugging easier.
- Memory limits can now be decreased with a NotRequired restart policy, with safeguards to avoid OOM kills.
- Resize requests are prioritized based on priorityClass and QoS class when node resources are limited.
- Improved metrics for tracking resize operations.
Scheduler and Performance Updates
The scheduler receives several refinements for better reliability and efficiency.
- API calls during scheduling can run asynchronously when the SchedulerAsyncAPICalls gate is enabled (with fixes for performance issues).
- Added PreBindPreFlight function to the PreBindPlugin interface for better control over binding decisions.
- The scheduler no longer automatically clears nominatedNodeName on failures, allowing external autoscalers to manage it properly.
- Improved handling of preemption and topology spread constraints.
Kubelet and Node Improvements
Kubelet gains new capabilities for container management and credential handling.
- Added FileKeyRef field to containers for loading environment variables from files (behind the EnvFiles feature gate).
- Container-level restart rules introduced as an alpha feature (ContainerRestartRules gate).
- Image pull credential tracking now supports service account tokens and caches them for the lifetime of the service account (beta, enabled by default).
- Support for custom hostnameOverride following RFC 1123 DNS subdomain rules (behind HostnameOverride gate).
- Pod-level hugepage limits are now properly enforced and propagated to containers.
- Static pods referencing API objects are denied admission to prevent silent failures.
Kubeadm and Cluster Lifecycle
Kubeadm includes several reliability fixes for cluster initialization and upgrades.
- The WaitForAllControlPlaneComponents feature gate graduated to GA. Kubeadm now waits for all control plane components during initialization.
- Fixed handling of APIServer.TimeoutForControlPlane in newer ClusterConfiguration versions.
- Improved error messaging with consistent "error:" prefixes.
- Only non-deprecated klog flags (-v and -vmodule) are now exposed.
Bug Fixes and Regressions Addressed
Kubernetes 1.34 resolves multiple issues introduced in recent releases and improves overall stability.
| Component | Key Fixes |
|---|---|
| API Server | Fixed regression in CRD validation warnings and spurious "Error getting keys" logs. Improved performance for object size calculations. |
| Kubelet | Logging now respects verbosity levels correctly. Fixed slow container runtime initialization from triggering watchdog termination. |
| kube-proxy (Windows) | IPv4 and IPv6 load balancers are now tracked separately for proper dual-stack support. |
| Scheduler | Addressed preemption retry issues and fixed nil panic regressions. |
| SELinux | Warning controller now emits events for label conflicts more reliably. |
Dependencies and Build Changes
Kubernetes 1.34 is built with Go 1.24.6. The release includes updates to base images and several dependency cleanups, including removal of deprecated gogo/protobuf in favor of google.golang.org/protobuf.
These updates improve security, reduce technical debt, and ensure compatibility with modern tooling.
Deprecations and Removals
As Kubernetes evolves, some older functionality has been deprecated or removed.
- The preferences field in kubeconfig is deprecated in favor of kuberc.
- DRA kubelet gRPC v1beta1 is deprecated (use v1).
- Several deprecated metrics, flags, and packages have been removed, including --cloud-config, legacy SidecarContainers behavior, and the old apiserver_storage_objects metric.
- Support for older streaming connection idle timeout and certain gogo protocol definitions has ended.
Review the upgrade notes carefully before migrating to ensure a smooth transition, especially for DRA drivers and custom metrics scrapers.
Summary
Kubernetes 1.34 is a solid release that stabilizes Dynamic Resource Allocation, strengthens Windows networking support, and delivers many quality-of-life improvements. With DRA now generally available and in-place resizing becoming more robust, teams can manage hardware resources and long-running workloads more efficiently than ever.
Whether you run large production clusters or experiment with advanced scheduling and device management, Kubernetes 1.34 provides a reliable foundation. Test thoroughly in staging environments before upgrading, and take advantage of the improved observability and stability this version offers.