The Kubernetes landscape is constantly evolving, and the latest release, v1.35, arrives packed with improvements designed to streamline operations and enhance developer experience. This iteration builds upon previous advancements, focusing on stability, performance optimizations, and crucially, some exciting new features that simplify complex workflows. We’ve been eagerly anticipating several of these changes within the community, and now they’re ready for broader adoption.
One particularly significant addition in Kubernetes v1.35 is the General Availability (GA) of ‘Job Managed By’, a feature poised to revolutionize how we approach multi-cluster batch scheduling. Previously, coordinating jobs across multiple Kubernetes clusters presented considerable challenges, often requiring custom tooling and intricate configurations. This new capability provides a standardized, declarative way to ensure that jobs are reliably executed and tracked even when spanning diverse cluster environments.
The ‘Job Managed By’ feature essentially establishes clear ownership of a Job resource, allowing for easier management and visibility across your Kubernetes infrastructure. Imagine effortlessly distributing batch processing tasks – data analytics, machine learning model training, or any compute-intensive operation – without the headaches of manual coordination; that’s the promise of this GA release. It brings significant benefits to teams managing complex deployments and seeking greater control over their workloads.
Beyond ‘Job Managed By’, v1.35 includes a host of other enhancements affecting areas like network policy enforcement, API server performance, and improved observability tools. While each improvement contributes to the overall refinement of Kubernetes, the availability of this batch scheduling feature represents a substantial leap forward for organizations embracing multi-cluster deployments.
Why Delegate Job Reconciliation?
Kubernetes v1.35 brings a significant enhancement to Job management – the GA release of `Job Managed By`. This seemingly small addition unlocks complex architectures like MultiKueue, addressing a core challenge in modern batch scheduling: how to reliably distribute and manage jobs across multiple Kubernetes clusters. Traditionally, Kubernetes’ built-in Job controller handles reconciliation—ensuring Jobs reach completion according to their defined parameters. However, this tightly coupled approach becomes problematic when you need to orchestrate workloads spanning several clusters, each potentially with different configurations or resource constraints.
MultiKueue exemplifies the problem and solution beautifully. It introduces a Management Cluster responsible for job dispatching and scheduling decisions, which then offloads the execution of those Jobs to Worker Clusters. The critical distinction is that MultiKueue *doesn’t* want the Kubernetes controller on the Worker Cluster actively reconciling the Job – it wants its own scheduler (running in the Management Cluster) to have full ownership of the lifecycle. Without `Job Managed By`, attempting this leads to conflicting reconciliations, errors, and unpredictable behavior as both controllers fight for control.
The natural question that arises is: ‘Why not simply disable the Kubernetes Job controller entirely?’ While disabling the controller *seems* like a solution, it introduces limitations. Many organizations operate hybrid environments or utilize managed Kubernetes offerings where disabling core components isn’t feasible or desired. Disabling also prevents those clusters from managing standard Jobs independently; effectively tying them to the external scheduler. `Job Managed By` provides a more graceful approach – allowing external controllers to take over reconciliation while still leveraging the underlying Kubernetes infrastructure for other tasks.
By delegating Job reconciliation through the `.spec.managedBy` field, we empower architectures like MultiKueue to flourish. The Management Cluster’s scheduler can now confidently manage job lifecycles across Worker Clusters, optimizing resource utilization and improving overall batch processing efficiency – all without disrupting existing Kubernetes operations or requiring wholesale changes to cluster configurations.
The MultiKueue Architecture

MultiKueue, a Kubernetes scheduler, leverages the newly GA `Job Managed By` feature to enable efficient and flexible batch processing across multiple clusters. It fundamentally separates concerns by defining two distinct types of Kubernetes clusters: Management and Worker Clusters.
The Management Cluster acts as the central point for job submission and scheduling decisions. It determines which Worker Cluster is best suited to execute a given Job based on factors like resource availability, priority, and constraints. However, it *doesn’t* actually manage the lifecycle of those jobs once they are dispatched; that responsibility is delegated.
This delegation is crucial because attempting to reconcile Jobs across numerous Worker Clusters from a single Management Cluster would create an unsustainable operational burden. The `Job Managed By` feature allows specialized controllers running within each Worker Cluster to handle Job reconciliation, ensuring efficient resource utilization and localized fault tolerance while the Management Cluster retains overall scheduling control.
Why Not Just Disable the Job Controller?

A common question arises when introducing `Job Managed By`: why not simply disable the Kubernetes built-in Job controller? While disabling the controller might seem like a straightforward solution, it’s often impractical and introduces significant limitations, particularly for users of managed Kubernetes control planes. Most managed services, such as those offered by AWS (EKS), Google Cloud (GKE), and Azure (AKS), prevent direct modification or disabling of core cluster components like the Job controller due to their tightly integrated operational model.
Furthermore, even in self-managed clusters, completely disabling the built-in Job controller can create issues when dealing with hybrid environments. A hybrid setup might involve some jobs still being managed by Kubernetes while others are handled externally. Disabling the native controller would then prevent Kubernetes from managing those remaining jobs, leading to operational complexity and potential inconsistencies.
The `Job Managed By` feature provides a much cleaner approach: it allows external controllers to assume responsibility for specific Jobs without requiring modification of the core Kubernetes control plane or disabling existing functionality. This enables powerful workflows like multi-cluster scheduling through tools like MultiKueue, while maintaining compatibility with standard Kubernetes operations and managed cluster environments.
How `spec.managedBy` Works
The `spec.managedBy` field in Kubernetes Job objects provides a mechanism for delegating job reconciliation responsibility to an external controller, now graduating to General Availability in v1.35. This isn’t merely a flag; it fundamentally alters how the Kubernetes control plane interacts with the Job. When set, the built-in Kubernetes Job controller effectively relinquishes its authority, allowing another component – such as MultiKueue – to manage the job’s lifecycle from creation through completion. The value of `spec.managedBy` must adhere to a valid DNS label format and acts as an identifier for the external controller.
Crucially, the `spec.managedBy` field is immutable once set. This design choice ensures that a Job’s management responsibility isn’t arbitrarily switched between the built-in controller and an external one mid-lifecycle, preventing potential conflicts and ensuring predictable behavior. The Kubernetes API server validates this immutability; attempting to update a Job with `spec.managedBy` after creation will result in an error. This also means that if you want to switch management back to Kubernetes itself (from an external controller), you’ll need to delete the existing Job and recreate it without specifying `spec.managedBy`.
The feature operates in one of two modes: ‘standard’ or ‘delegation’. In standard mode, which is the default when `spec.managedBy` is not specified, the Kubernetes built-in controller handles all reconciliation activities – tracking status, retries, and completion. In delegation mode, indicated by setting a value for `spec.managedBy`, the external controller becomes solely responsible for these tasks. The Kubernetes control plane will still track the Job’s existence and basic metadata but will not attempt to reconcile its state or perform any actions related to execution.
To facilitate interoperability, the delegated controller is expected to periodically query the Kubernetes API server for updates to the Job object’s status. This allows it to react to external events or changes initiated by other controllers while maintaining awareness of the overall cluster state and ensuring proper cleanup upon completion or failure. The absence of `spec.managedBy` signifies that the default Kubernetes controller retains complete ownership and control over the Job’s lifecycle.
Standard vs. Delegation Modes
Kubernetes v1.35 introduces two distinct operational modes for `spec.managedBy` on Job resources: standard reconciliation and delegation. In *standard mode*, which is the default behavior when `spec.managedBy` is not specified, Kubernetes’ built-in Job controller remains fully responsible for managing the job’s lifecycle – from creation to completion. This includes tracking its status, retries, and overall health.
When using the *delegation* mode (by setting `spec.managedBy` to a valid external controller name), you’re essentially handing off full responsibility for Job reconciliation to that external controller. The built-in Kubernetes controller will cease managing the Job; it will observe changes made by the delegated controller but will not actively attempt to reconcile its state itself. This delegation is immutable once set, meaning you cannot switch back to standard mode without deleting and recreating the Job.
The key benefit of delegation lies in enabling advanced scheduling scenarios. For example, with MultiKueue, a management cluster can dispatch Jobs to worker clusters based on complex resource availability or priority rules. The external controller (in this case, MultiKueue’s controller) then takes over managing the Job’s execution within that worker cluster.
Ecosystem Adoption
The graduation of the ‘Job Managed By’ feature to General Availability in Kubernetes v1.35 signifies a significant shift towards greater flexibility and extensibility within the Kubernetes ecosystem. This isn’t just a technical update; it reflects a growing recognition that standard Kubernetes Job reconciliation doesn’t always meet the needs of complex, distributed batch processing workflows. The ability for external controllers to manage Job lifecycles unlocks new architectural patterns, allowing organizations to build truly scalable and resilient solutions.
We’re already seeing substantial adoption of ‘Job Managed By’ across a diverse range of popular tools. Projects like JobSet are leveraging it to streamline job orchestration, while Kubeflow Trainer uses it for managing training workloads. KubeRay benefits from its capabilities for resource scheduling, AppWrapper utilizes it for application deployment and management, and Tekton Pipelines integrates it into their CI/CD workflows. This widespread adoption demonstrates the broad applicability of delegated Job reconciliation and highlights its value in modern batch processing pipelines.
A prime example of this growing ecosystem is MultiKueue, which relies heavily on ‘Job Managed By’ to operate effectively. MultiKueue’s architecture separates management responsibilities (scheduling and resource allocation) from the actual execution of jobs across multiple worker clusters. This delegation allows for optimized resource utilization and increased efficiency when dealing with large-scale batch workloads that span geographical regions or have varying resource requirements. The GA release ensures MultiKueue and similar tools can reliably leverage this capability.
Ultimately, ‘Job Managed By’ represents a move towards a more modular and adaptable Kubernetes platform. By decoupling Job reconciliation from the core Kubernetes control plane, developers gain greater freedom to innovate and tailor batch processing solutions to their specific needs. This feature empowers organizations to build increasingly sophisticated and efficient workflows while leveraging the power and stability of the Kubernetes ecosystem.
Popular Tools Leveraging Delegation
Kubernetes v1.35’s General Availability (GA) of the ‘Job Managed By’ feature signals a significant shift in how external controllers interact with Kubernetes Jobs. This capability, allowing users to designate an external controller responsible for Job reconciliation through the `.spec.managedBy` field, is rapidly being adopted by several popular tools within the Kubernetes ecosystem. The delegation of Job management unlocks advanced scheduling capabilities and simplifies integration with specialized batch processing systems.
Several notable projects are already leveraging ‘Job Managed By’ to enhance their functionality. JobSet, a tool for managing complex job dependencies, utilizes the feature to offload reconciliation logic. Kubeflow Trainer, used for machine learning training workloads, integrates with it to provide more sophisticated resource management and scheduling options. KubeRay, a Ray cluster manager for Kubernetes, also incorporates ‘Job Managed By’ for improved control over distributed computing tasks. Furthermore, AppWrapper and Tekton Pipelines are embracing the feature to streamline application deployment and CI/CD workflows respectively.
The increasing adoption of ‘Job Managed By’ demonstrates its value in enabling increasingly complex and flexible batch processing architectures within Kubernetes. As more tools integrate this functionality, users can expect greater control over their workloads, improved resource utilization, and simplified management across multi-cluster environments – particularly benefiting those leveraging solutions like MultiKueue for distributed job scheduling.
How Can You Learn More?
Want to dive deeper into the new `Job Managed By` functionality now in GA? Understanding how this feature works under the hood is key to leveraging its full potential. Start with the official Kubernetes documentation on Jobs, specifically focusing on the `spec.managedBy` field description. This will provide a foundational understanding of the change and the intended use cases. Beyond that, tracing back through the Kubernetes Enhancement Proposal (KEP) 2017 – introducing this feature offers valuable insight into its design considerations and evolution over time; you can find it here: [Link to KEP 2017 – Replace with actual link].
For those specifically interested in multi-cluster batch scheduling using tools like MultiKueue, the official MultiKueue documentation is essential reading. It outlines how `Job Managed By` enables the Management Cluster to delegate Job reconciliation and unlock advanced scheduling capabilities across your worker clusters. The Kueue task guides provide practical examples of configuring Jobs for dispatching and management within a MultiKueue environment. [Link to MultiKueue Task Guides – Replace with actual link].
To grasp the architectural implications, review the Kubernetes blog post detailing the Management Cluster and Worker Cluster roles in MultiKueue environments. This helps clarify how `Job Managed By` fits into this broader architecture and allows for more nuanced control over job execution across your cluster landscape. [Link to Kubernetes Blog Post – Replace with actual link].
Finally, keep an eye on community discussions and blog posts as users begin experimenting with this feature in production. Sharing experiences and best practices will be invaluable as the ecosystem matures around `Job Managed By`.
Official Documentation & Design History
For a detailed understanding of the `Job Managed By` functionality introduced in Kubernetes v1.35, we encourage you to consult the official Kubernetes documentation. Specifically, review the updated Job API reference which outlines the new `.spec.managedBy` field and its implications:
The design process behind `Job Managed By` was extensively discussed within Kubernetes Enhancement Proposals (KEPs). To follow the evolution of this feature and understand its rationale, you can explore KEP-2043:
If you’re interested in leveraging `Job Managed By` for multi-cluster batch scheduling using MultiKueue (as highlighted in this release), refer to the official MultiKueue documentation:

The arrival of `Job Managed By` in Kubernetes v1.35 marks a significant step forward for batch scheduling capabilities within the ecosystem, offering greater control and visibility to operators managing complex workloads.
This release isn’t just about new features; it’s a testament to the power of community collaboration and iterative development, built upon years of dedicated effort from contributors across the Kubernetes landscape.
We believe that embracing this evolution will unlock even more sophisticated applications for batch processing, data pipelines, and other critical tasks, ultimately benefiting users of all skill levels.
The work doesn’t stop here; continued refinement and expansion of these features are crucial to ensuring a robust and user-friendly experience. It’s exciting to see how `Job Managed By` will shape the future of Kubernetes batch processing, and we anticipate even more innovation in this area soon.
Continue reading on ByteTrending:
Discover more tech insights on ByteTrending ByteTrending.
Discover more from ByteTrending
Subscribe to get the latest posts sent to your email.












