# Kubernetes v1.36: Tiered Memory Protection with Memory QoS

DevFeed: [Kubernetes v1.36: Tiered Memory Protection with Memory QoS](<https://devfeed.tech/articles/kubernetes-v1-36-tiered-memory-protection-with-memory-qos-4542.md>)

Original publisher: [Read original article](<https://kubernetes.io/blog/2026/04/29/kubernetes-v1-36-memory-qos-tiered-protection/>)

Author: Qi Wang; Sohan Kunkerkar

Published: 2026-04-29T18:35:00Z

Content type: news

Language: en

Sources: [Kubernetes Blog](<https://devfeed.tech/sources/kubernetes-blog.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [observability](<https://devfeed.tech/topics/observability.md>), [kernels](<https://devfeed.tech/topics/kernels.md>)

Tags: [feature](<https://devfeed.tech/tags/feature.md>), [kernels](<https://devfeed.tech/tags/kernels.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [memory](<https://devfeed.tech/tags/memory.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [observability](<https://devfeed.tech/tags/observability.md>), [v1](<https://devfeed.tech/tags/v1.md>)

## AI overview

Kubernetes v1.36 updates the alpha Memory QoS feature with opt-in memory reservation, tiered protection based on Pod QoS class, observability metrics, and a warning for kernels older than 5.9. Guaranteed Pods receive hard protection, Burstable Pods receive reclaimable soft protection, and BestEffort Pods remain fully reclaimable.

## Source excerpt

On behalf of SIG Node, we are pleased to announce updates to the Memory QoS feature (alpha) in Kubernetes v1.36. Memory QoS uses the cgroup v2 memory controller to give the kernel better guidance on how to treat container memory. It was first introduced in v1.22 and updated in v1.27. In Kubernetes v1.36, we're introducing: opt-in memory reservation, tiered protection by QoS class, observability metrics, and kernel-version warning for memory.high. What's new in v1.36Opt-in memory reservation with memoryReservationPolicy v1.36 separates throttling from reservation. Enabling the feature gate turns on memory.high throttling (the kubelet sets memory.high based on memoryThrottlingFactor, default 0.9), but memory reservation is now controlled by a separate kubelet configuration field: None (default): no memory.min or memory.low is written. Throttling via memory.high still works. TieredReservation: the kubelet writes tiered memory protection based on the Pod's QoS class: Guaranteed Pods get hard protection via memory.min. For example, a Guaranteed Pod requesting 512 MiB of memory results in: $ cat /sys/fs/cgroup/kubepods.slice/kubepods-pod6a4f2e3b_1c9d_4a5e_8f7b_2d3e4f5a6b7c.slice/memory.min 536870912 The kernel will not reclaim this memory under any circumstances. If it cannot honor the guarantee, it invokes the OOM killer on other processes to free pages. Burstable Pods get soft protection via memory.low. For the same 512 MiB request on a Burstable Pod: $ cat /sys/fs/cgroup/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod8b3c7d2e_4f5a_6b7c_9d1e_3f4a5b6c7d8e.slice/memory.low 536870912 The kernel avoids reclaiming this memory under normal pressure, but may reclaim it if the alternative is a system-wide OOM. BestEffort Pods get neither memory.min nor memory.low. Their memory remains fully reclaimable. Comparison with v1.27 behavior In earlier versions, enabling the MemoryQoS feature gate immediately set memory.min for every container with a memory request. memo