SIG-Node: Intro and Deep Dive - Sergey Kanzhelev, Google; Francesco Romani & Peter Hunt, Red Hat
Sergey Kanzhelev, Google, Francesco Romani, Peter Hunt, Red Hat
KubeCon + CloudNativeCon Europe 2025 · Session
Overview
This talk provides an insightful introduction and deep dive into the intricate world of resource management within Kubernetes, as handled by the SIG-Node special interest group. Presented by Sergey Kanzhelev from Google and Francesco Romani and Peter Hunt from Red Hat, the session meticulously dissects the challenges, compromises, and ongoing advancements in how Kubernetes, particularly the kubelet agent, allocates, manages, and monitors resources on a node. The speakers emphasize that while Kubernetes is often perceived as primarily an API server, the kubelet and its associated resource management mechanisms constitute a foundational and equally critical component, ensuring the reliability and efficiency of containerized workloads.

Key moments
- 0:00 Talk Introduction and Agenda
- 0:45 SIG-Node: Core Components & Responsibilities
- 2:20 Kublet's Role: Node Health & Resource Trade-offs
- 3:00 Deep Dive into Kublet Resource Management
- 4:00 Key Questions in Kubernetes Resource Management
- 5:30 Device Allocation Evolution: Classic vs. Structured DRA
- 6:20 Memory Swap Support: Ongoing Resource Definition Challenges
SIG-Node: Intro and Deep Dive - Sergey Kanzhelev, Google; Francesco Romani & Peter Hunt, Red Hat
Speakers: Sergey Kanzhelev, Google; Francesco Romani, Red Hat; Peter Hunt, Red Hat
Conference: KubeCon EU
YouTube: https://www.youtube.com/watch?v=7sr1eHJBXKs
Overview
This talk provides an insightful introduction and deep dive into the intricate world of resource management within Kubernetes, as handled by the SIG-Node special interest group. Presented by Sergey Kanzhelev from Google and Francesco Romani and Peter Hunt from Red Hat, the session meticulously dissects the challenges, compromises, and ongoing advancements in how Kubernetes, particularly the kubelet agent, allocates, manages, and monitors resources on a node. The speakers emphasize that while Kubernetes is often perceived as primarily an API server, the kubelet and its associated resource management mechanisms constitute a foundational and equally critical component, ensuring the reliability and efficiency of containerized workloads.
The discussion highlights the significant evolution of Kubernetes' approach to resource management, moving from initial simplistic models to more sophisticated and hardware-aware strategies. It underscores the constant tension between optimal resource utilization, workload reliability, and the burgeoning complexity of modern hardware. For anyone operating, developing for, or securing Kubernetes clusters, understanding these underlying mechanisms is paramount. The talk not only sheds light on the current state of resource handling but also previews future directions, emerging challenges, and the collaborative efforts within SIG-Node to address these demanding requirements, making it a crucial resource for navigating the complexities of high-performance and secure Kubernetes deployments.
Background
▶ Watch: Talk Introduction and Agenda (0:00)
The foundation of Kubernetes' node-level operations rests squarely on the kubelet, the primary agent that runs on each node. Its core responsibility is to manage the lifecycle of pods and their containers, which inherently involves sophisticated resource management. Historically, Kubernetes' initial resource models were deliberately simplistic, prioritizing ease of use and broad applicability over granular hardware awareness. For instance, CPU was often treated as a generic, fungible resource, failing to account for differences in underlying CPU architectures or performance characteristics across various virtual machines or physical hosts. This abstraction, while beneficial for initial adoption, eventually presented limitations as users pushed Kubernetes into more demanding and specialized environments.
The evolution of resource management in Kubernetes has been a continuous process of addressing these limitations. Early attempts, such as the Classic DRA (Device Resource Allocation), sought to enable custom device allocation but fell short because the cluster scheduler and autoscaler lacked the necessary context about these specialized resources. This led to a re-evaluation and the eventual pivot towards Structured DRA, which simplifies devices into resource slices for better integration with the Kubernetes control plane. Similarly, the concept of Quality of Service (QoS) for pods, while powerful, emerged from an implicit inference based on resource requests and limits, rather than explicit user declaration. This "overloading of terms" often necessitated external context for users to fully understand the implications of their resource specifications.
The increasing complexity of modern hardware, including non-uniform memory access (NUMA) architectures and multi-level caches, has further exacerbated the challenge. The kubelet's reliance on a relatively simplistic hardware model, primarily derived from cAdvisor, has been identified as a significant bottleneck. This model struggles to represent the nuanced physical characteristics of contemporary CPUs, leading to suboptimal performance if resource allocations are not aligned with these internal hardware boundaries. Consequently, there's a persistent demand for more explicit ways for workloads to express their hardware requirements, a move towards greater modularity in resource allocation, and a need for the kubelet to adapt more rapidly to hardware advancements without requiring fundamental architectural overhauls.
Key Findings
▶ Watch: Kublet's Role: Node Health & Resource Trade-offs (2:20)
The talk reveals several pivotal insights into the state and future direction of resource management in Kubernetes:
First, Kubernetes resource management is an inherently complex domain characterized by constant trade-offs. The SIG-Node maintainers frequently grapple with balancing workload reliability against resource efficiency, the challenges of overprovisioning, and the intricacies of monitoring and eviction. Every decision, from how resources are advertised to how they are deallocated, requires careful consideration and often involves compromises that impact performance, stability, or user experience.
Second, the evolution of resource modeling is driven by practical limitations and user demand. The journey from Classic DRA to Structured DRA, which simplifies device representation into resource slices, exemplifies the effort to create models that are both expressive enough for specialized hardware and consumable by the Kubernetes scheduler. Discussions around memory swap support highlight the ongoing debate regarding whether to treat such resources as countable and explicitly managed, or as implicitly available, underscoring the challenges of integrating new resource types.
Third, admission and allocation strategies for specialized resources pose significant design challenges. The contrast between the Device Plugin model, which relies on pre-allocated and pre-advertised resources, and DRA, which allows for on-demand allocation with custom parameters, illustrates this. A critical finding for DRA is the decision to not fail pod admission if a device isn't immediately available, instead allowing the pod to enter a crash loop back-off state. This design choice, while potentially leading to transient errors, provides greater flexibility for complex, asynchronous device allocation workflows.
Fourth, effective overprovisioning hinges on robust monitoring and eviction capabilities. While overprovisioning is supported for standard resources like CPU and memory, it introduces significant "pain" due to the necessity of detailed usage monitoring. For memory swap, this extends beyond just volume to frequency of swapping, which impacts I/O performance. The inability to adequately monitor and evict for devices is precisely why SIG-Node currently avoids overprovisioning them, emphasizing that reliable overprovisioning requires a deep understanding of resource behavior and the ability to reclaim resources effectively.
Fifth, in-place pod updates and resource re-allocation are "hard problems" that necessitate architectural rethinking. The effort to bring in-place pod resize (critical for Vertical Pod Autoscalers, or VPA) to beta required a re-evaluation of how resource managers, like the CPU Manager, preserve allocation guarantees (e.g., CPU alignment) during scaling events. This involves tackling issues like resource fragmentation and ensuring that scaling up a pod doesn't inadvertently degrade its performance or disrupt other workloads. A significant API semantic change in Kubernetes 1.33 now ensures that if a resize operation requires a pod restart, it will be rejected, providing greater predictability for VPA users.
Finally, there is a clear "expressiveness problem" in how workloads convey their resource requirements. Current methods often rely on implicit inferences or require extensive context about node configuration. The SIG-Node community recognizes the need for more explicit mechanisms, allowing workloads to directly state their preferences or tolerance for specific resource characteristics. This directly connects to the desire for greater modularity and pluggability in the kubelet's resource allocation model, aiming to decentralize some of these complex decisions and allow for more experimentation and specialized solutions outside the core kubelet codebase. The extraordinary progress of SIG-Node in recent cycles, with 24 KEPs (Kubernetes Enhancement Proposals) moving forward in Kubernetes 1.33 alone, underscores the intensity and breadth of work being done to address these challenges.
Technical Deep Dive
▶ Watch: Deep Dive into Kublet Resource Management (3:00)
The technical core of Kubernetes resource management, as elaborated in the talk, revolves around the kubelet's sophisticated mechanisms for advertising, admitting, allocating, and monitoring resources. This deep dive reveals the intricate details and ongoing evolution of these processes.
Resource Modeling and Advertising
Kubernetes began with a relatively simple model for standard resources like CPU and memory. However, the kubelet has evolved to consider more nuanced aspects. For CPU, this includes awareness of NUMA nodes and the physical characteristics of different CPU types. Memory management now distinguishes between various memory types. For devices, the SIG-Node moved from the problematic Classic DRA to Structured DRA, which represents devices as generic resource slices. This abstraction, while simplified, allows for better integration with the scheduler and autoscaler by providing a consistent, albeit primitive, model.
The discussion around memory swap support exemplifies the challenges in resource modeling. Initially, the proposal reached alpha with swap memory being "magically available" without explicit advertising or counting. However, this approach was questioned, as it limited the ability to overprovision or apply granular controls. The ongoing debate centers on whether to expose swap as a countable resource, share it, or exclusively allocate it, highlighting the complexities of making fundamental modeling decisions. Similarly, QoS resources (e.g., for networking bandwidth) present questions about whether they should be counted, limited, and how their allocation should be distributed across devices.
Admission and Allocation Strategies
The kubelet employs different admission and allocation strategies depending on the resource type. For traditional Device Plugins, resources are pre-allocated, pre-shared, and pre-advertised. This means devices are ready and waiting when a pod is scheduled to a node; the kubelet merely associates them.
Dynamic Resource Allocation (DRA) introduces a more flexible, on-demand allocation model. Unlike Device Plugins, DRA allows for extra parameters to be passed during allocation, enabling more customized resource provisioning. A significant architectural difference is that DRA does not cause pod admission to fail if a device isn't immediately available. Instead, the pod will enter a crash loop back-off, repeatedly attempting to create its containers and allocate the device until successful or manually intervened. This design acknowledges that DRA allocations might take time or involve external systems, avoiding hard admission failures but shifting the burden of retries to the pod's lifecycle.
Overprovisioning and Monitoring
Overprovisioning, while beneficial for resource utilization, is a "hot topic" fraught with challenges. It is supported for CPU and memory but requires substantial effort to manage effectively. The speakers stressed that for any overprovisioned resource, comprehensive monitoring of usage is non-negotiable. For memory swap, this extends beyond just the amount of swap used to the frequency of swapping, as constant swapping can severely degrade I/O performance. The absence of robust monitoring and eviction mechanisms for devices is precisely why SIG-Node currently avoids overprovisioning them. This highlights a fundamental principle: reliable overprovisioning requires not only knowing how much a resource is used but also how it's used and the ability to reclaim it when necessary.
CPU Manager and Hardware Awareness
The CPU Manager is a prime example of a "hardcore manager" designed to optimize CPU allocation. It offers six policy options, demonstrating the demand for fine-grained control. A notable recent addition is LLC (Last Level Cache) awareness. Modern CPUs often feature non-uniform physical characteristics, with resources clustered around specific caches. Without LLC awareness, the kubelet might allocate CPU cores that cross these internal boundaries, incurring performance penalties. By aligning CPU allocation to these internal boundaries, the CPU Manager can significantly improve performance, with benchmarks showing 20-30% gains for specific workloads on selected CPUs. This feature underscores the need for the kubelet to be increasingly hardware-aware to maximize performance.
In-Place Pod Resize and VPA
The in-place pod resize feature, crucial for Vertical Pod Autoscalers (VPA), allows pods to adjust their resource requests and limits without restarting. This is a complex undertaking, as it requires preserving existing allocation guarantees (e.g., exclusive CPU core assignments) and avoiding resource fragmentation during the resize operation. A key development in Kubernetes 1.33 was a change in API semantics: if an in-place resize would necessitate a pod restart (e.g., due to insufficient contiguous resources), the resize request is now rejected. This ensures that VPA can confidently request in-place resizes without inadvertently causing workload disruption, a critical improvement for production environments.
The Expressiveness Problem and Modularity
A recurring theme is the "expressiveness problem": workloads struggle to explicitly communicate their desired hardware characteristics or performance trade-offs. The kubelet often infers needs based on implicit context or node configuration. This has led to a strong desire for more modular and pluggable resource managers. While a KEP for such plugins existed but didn't proceed, the demand remains high. Technologies like the Node Resources Interface (NRI), a plugin architecture for the runtime interface, and the potential expansion of DRA to core resources like CPU and memory, are seen as pathways to achieve this modularity. This approach aims to delegate more resource allocation decisions outside the kubelet's core, allowing for greater experimentation and specialization while keeping the kubelet stable.
Open Questions and Challenges
The SIG-Node faces numerous open questions: How much resource management logic should be delegated outside the kubelet? What are the implications for bootstrap, reliability, and user experience if more moving parts are introduced? How can Kubernetes keep pace with rapidly evolving hardware complexity, which has arguably "outpaced" its current resource representation models? The tension between iterating on the current architecture to meet immediate demands and undertaking a fundamental redesign to address long-term limitations remains a central challenge, as current architectural constraints can limit the solution space for new features.
Demo / Proof of Concept
▶ Watch: Device Allocation Evolution: Classic vs. Structured DRA (5:30)
This talk was a comprehensive overview and deep dive into the theoretical and practical challenges of Kubernetes resource management, focusing on ongoing development and strategic directions within SIG-Node. It did not feature a live demonstration or a specific proof of concept of any of the discussed features, but rather presented the concepts, challenges, and progress through detailed explanations and architectural discussions.
Defensive Implications
▶ Watch: Memory Swap Support: Ongoing Resource Definition Challenges (6:20)
Understanding the intricacies of Kubernetes resource management, as detailed by SIG-Node, provides critical insights for defenders and cluster operators aiming to build more secure, reliable, and performant environments.
- Granular Resource Requests and Limits: Defenders should meticulously define resource requests and limits for all pods. These are not merely performance tunables but are fundamental to the
kubelet's ability to schedule, manage QoS, and prevent resource exhaustion. Understanding how QoS classes (Guaranteed, Burstable, BestEffort) are inferred from these settings is crucial for predicting eviction behavior and ensuring critical workloads receive necessary guarantees.
- Leverage CPU Manager Policies for Performance and Isolation: For performance-sensitive applications, operators should explore and implement CPU Manager policies, especially LLC awareness. By ensuring CPU allocations respect internal CPU boundaries, performance gains of 20-30% can be achieved, while also potentially improving isolation by minimizing cache contention. This translates directly to more efficient and predictable workload execution.
- Understand DRA's Crash Loop Back-off Behavior: When utilizing Dynamic Resource Allocation (DRA) for specialized devices, defenders must be aware that device unavailability will result in a crash loop back-off rather than an admission failure. This implies a need for robust monitoring of pod restart counts and container logs to quickly identify and troubleshoot device allocation issues, as the pod itself will be continuously attempting to recover.
- Adopt In-Place Pod Resize with Caution: The beta release of in-place pod resize provides significant benefits for VPA. However, the new semantic in Kubernetes 1.33, where a resize requiring a restart is rejected, means VPA deployments should be configured to handle these rejections gracefully. Defenders must ensure that their VPA configurations and monitoring can detect and alert on rejected resize attempts, potentially indicating resource fragmentation or insufficient capacity on the node.
- Enhance Security with Username Namespaces and Related Features: The advancement of username namespaces (enabled by
hostUsers: trueandprocMount typegoing on by default beta) is a significant security improvement. This feature allows for greater isolation of containers, potentially enabling the relaxation ofCAP_SYS_ADMINwithin a container's namespace without granting full root privileges on the host. Defenders should prioritize adopting username namespaces for workloads requiring elevated privileges within their containers to reduce the attack surface.
- Implement Container Lifecycle Controls: Features like container stop signal allow for more graceful shutdown procedures, reducing the risk of data corruption or incomplete transactions during pod termination. The supplemental group policy provides stricter control over group memberships inside containers, further enhancing security by limiting access to resources.
- Strengthen Image Security in Multi-Tenant Environments: The
kubeletconfiguration option ensure secret pulled images (driven bySIG-Auth) is vital for multi-tenant clusters. It ensures that even if an image is already present (pullPolicy: IfNotPresent), thekubeletstill performs authentication against the image registry. This prevents unauthorized pods from using images that they are not permitted to access, even if a previous, authorized pod had pulled the image.
- Fine-Tune Crash Loop Back-off: The extended options for crash loop back-off allow operators to better tune the retry behavior of failing containers. This can prevent a rapid succession of restarts from overwhelming system resources or triggering alerts unnecessarily, providing a more controlled recovery process.
- Utilize Projected Service Account Tokens for Image Credentials: The ability to use projected service account tokens for image credentials offers a more dynamic and secure way to authenticate image pulls. Instead of hardcoding credentials, tokens can be issued based on namespace and service account, improving credential hygiene and enabling more granular access control.
- Monitor PSI Metrics for Deeper Insights: The introduction of PSI (Pressure Stall Information) metrics in alpha provides kernel-level insights into resource contention (IO, CPU, memory). Defenders can use this information to identify "noisy neighbor" problems, diagnose performance bottlenecks, and take proactive actions to optimize workload placement or resource allocation, moving beyond simple utilization metrics to understand why performance is degrading.
By actively engaging with these new features and understanding the underlying resource management philosophies, defenders can significantly enhance the resilience, security, and operational efficiency of their Kubernetes clusters.
Key Takeaways
- Resource Management is Foundational and Complex: Kubernetes'
kubeletis critical for node health and workload management, constantly balancing reliability, efficiency, and performance. This involves intricate trade-offs in advertising, admitting, allocating, and monitoring resources. - Evolution Towards Hardware Awareness and Explicitness: Kubernetes is moving from simplistic resource models to more sophisticated, hardware-aware strategies (e.g., LLC awareness in CPU Manager) and striving for more explicit workload requirements to optimize performance and resource utilization.
- Dynamic Resource Allocation (DRA) for Specialized Hardware:
Structured DRAis key for managing devices, offering flexibility but requiring operators to understand its crash loop back-off behavior for device allocation failures, rather than immediate pod admission rejection. - Challenges of Overprovisioning: While beneficial for utilization, overprovisioning demands robust monitoring (including usage frequency for memory swap) and effective eviction mechanisms, which are currently lacking for devices.
- Significant Advances in Pod Lifecycle and Security:
SIG-Nodehas achieved major milestones, including the beta release of in-place pod resize (with new VPA-friendly semantics), sidecars, and enhanced security features like username namespaces and ensure secret pulled images. - Community Engagement is Crucial: The
SIG-Nodecommunity is actively addressing challenges like hardware representation, allocation model modularity, and pluggability, and welcomes contributions to shape the future of Kubernetes node-level operations.
About the Speaker(s)
Sergey Kanzhelev is an engineer at Google, actively involved in the Kubernetes community. His contributions, particularly within SIG-Node, reflect his deep expertise in the core mechanics of Kubernetes, especially regarding resource management and the kubelet's role.
Francesco Romani and Peter Hunt are engineers at Red Hat. Both are deeply involved in the Kubernetes SIG-Node community, serving as maintainers who regularly contribute to and guide the development of resource allocation, node-level features, and the kubelet agent. Their work focuses on addressing the evolving demands of cloud-native environments and integrating new hardware capabilities into Kubernetes.
Reviews
Dr. Zero (Offensive Security Researcher) — MUST SEE
This talk, delivered by the architects of Kubernetes' node-level operations, provides an unparalleled deep dive into the complex, often-overlooked world of resource management within the kubelet. It meticulously dissects the evolution of CPU, memory, and device handling, highlighting the constant trade-offs between reliability and efficiency. The discussion on Structured DRA, the intricacies of in-place pod resize with K8s 1.33 semantics, and hardware-aware CPU management (LLC awareness) offers critical, up-to-the-minute insights for anyone operating, developing for, or securing Kubernetes clusters at scale. This isn't theoretical fluff; it's the foundational engineering that makes…
Heather Calloway (CISO) — STRONG ACCEPT
This deep dive into Kubernetes SIG-Node's resource management is precisely the kind of foundational technical insight that informs robust security and operational resilience. While highly technical, the session effectively translates the complexities of kubelet's resource allocation, monitoring, and security features into tangible implications for business risk, performance, and institutional accountability. It’s a credible, unsentimental look at the engineering trade-offs that directly impact a CISO's domain, offering clear, actionable takeaways for defenders and leaders operating at scale.