Kubernetes Releases & New Features Tracker
Track what's new, changed, or deprecated in each Kubernetes version. Essential for interviews ("what's new in K8s?") and cert exams.
Kubernetes 1.33 — "Octarine" (April 2025)
Graduated to Stable (GA)
| Feature |
What it means |
| Memory Manager |
NUMA-aware memory pinning for latency-sensitive workloads (HPC, telco). |
| Recursive Read-Only Mounts |
mountPropagation: None + readOnly: true now recursively applies to sub-mounts. |
| In-place Pod Vertical Scaling |
Resize CPU/memory of running pods without restart (for Guaranteed QoS class). |
| Feature |
What it means |
| DRA (Dynamic Resource Allocation) |
Flexible GPU/FPGA/custom accelerator allocation beyond static device plugins. |
| Job Success/Failure Policy |
Fine-grained success/failure criteria for indexed Jobs. |
| PodLifecycleSleepAction |
lifecycle.preStop.sleep — add delay without a shell command. |
Notable Changes
kubectl now supports --subresource for get and patch
- Structured authorization with CEL expressions for webhook responses
- etcd 3.5.x required (3.4.x no longer supported)
spec:
initContainers:
- name: fluentd
image: fluentd:v1.16
restartPolicy: Always
containers:
- name: app
image: myapp:v1
lifecycle:
preStop:
sleep:
seconds: 10
Kubernetes 1.32 — "Penelope" (December 2024) — Current Stable
Graduated to Stable (GA)
| Feature |
What it means |
| Structured Parameters for DRA |
GPU/accelerator allocation can be expressed in structured YAML instead of opaque strings |
| Job Managed-By Field |
External controllers (e.g., Kueue) can manage Jobs; K8s built-in controller skips them |
| Traffic Distribution for Services |
spec.trafficDistribution: PreferClose — routes to topologically closest endpoints first |
| Persistent Volume Last Phase Transition Time |
PV status now records when it last changed phase |
| Feature |
What it means |
| In-Place Pod Resize |
CPU/memory changes without pod restart (first introduced alpha in 1.27) |
| CustomResourceFieldSelectors |
Filter CRD objects with kubectl get field selectors |
| Image Volume |
Use OCI images directly as pod volumes (e.g., WASM modules, config bundles) |
Notable Changes
- Go 1.23 used for building Kubernetes
kubectl debug improvements — ephemeral containers now set TTY properly
- Removal of
flowcontrol.apiserver.k8s.io/v1beta2 (replaced by v1)
apiVersion: v1
kind: Service
metadata:
name: api
spec:
trafficDistribution: PreferClose
selector:
app: api
ports:
- port: 80
Kubernetes 1.31 — "Elli" (August 2024)
Graduated to Stable (GA)
| Feature |
What it means |
| AppArmor support |
securityContext.appArmorProfile field (was annotation-based before) |
| Persistent Volume Reclaim Policy for StatefulSets |
spec.persistentVolumeClaimRetentionPolicy — control PVC fate on scale-down/delete |
| Server Side Apply (SSA) for CRD defaults |
CRD schema defaults applied server-side |
| Feature |
What it means |
| VolumeAttributesClass |
Modify volume QoS (IOPS/throughput) without recreation |
| Pod Scheduling Readiness |
.spec.schedulingGates — hold a pod back from scheduling until external conditions are met |
securityContext:
appArmorProfile:
type: RuntimeDefault
spec:
persistentVolumeClaimRetentionPolicy:
whenDeleted: Delete
whenScaled: Delete
Kubernetes 1.30 — "Uwubernetes" (April 2024)
Graduated to Stable (GA)
| Feature |
What it means |
| Min domains in PodTopologySpread |
minDomains field ensures pods spread across a minimum number of zones |
| Consistent Reads from Cache |
resourceVersion=0 consistent reads from kube-apiserver cache (reduces etcd load) |
| Unknown Version Interoperability Proxy |
API server proxies requests for resources to newer peers in mixed-version clusters |
Notable Deprecations/Removals
flowcontrol.apiserver.k8s.io/v1beta2 deprecated
status.nodeInfo.kubeProxyVersion field deprecated (unreliable)
Kubernetes 1.29 — "Mandala" (December 2023)
Graduated to Stable (GA)
| Feature |
What it means |
| Sidecar Containers |
Native sidecar support via restartPolicy: Always in initContainers. Solves Job completion blocking by sidecars. |
| ReadWriteOncePod PVC access mode |
Only ONE pod cluster-wide can mount the PVC — stronger than RWO (node-level) |
| KMS v2 encryption |
Better performance key management for Secrets encryption at rest |
| Node lifecycle improvement |
Faster node shutdown drain handling |
| Feature |
What it means |
| Sidecar containers |
restartPolicy: Always in initContainers (went GA in 1.33) |
| nftables backend for kube-proxy |
Modern replacement for iptables — better performance at scale |
spec:
accessModes: [ReadWriteOncePod]
Kubernetes 1.28 — "Planternetes" (August 2023)
Graduated to Stable (GA)
| Feature |
What it means |
| ProxyTerminatingEndpoints |
kube-proxy routes traffic to terminating pods only when no other endpoint is available (graceful connection draining) |
| Mixed Version Proxy |
Control plane can have mixed versions during upgrades |
| Feature |
What it means |
| Job replacement policy |
Recreate pod before old one is fully terminated |
| PodReadyToStartContainers |
New pod condition; true when sandbox is created and network configured |
Kubernetes 1.27 — "Chill Vibes" (April 2023)
Graduated to Stable (GA)
| Feature |
What it means |
| SeccompDefault |
kubelet uses RuntimeDefault seccomp profile by default |
| DownwardAPI for hugepages |
Pods can discover their hugepage limits via downwardAPI |
Alpha — In-Place Pod Resize (Important — tracks to GA in 1.33)
kubectl patch pod my-pod --subresource=resize --patch \
'{"spec":{"containers":[{"name":"app","resources":{"requests":{"cpu":"2"},"limits":{"cpu":"2"}}}]}}'
Feature Graduation Timeline (Quick Reference)
| Feature |
Alpha |
Beta |
Stable |
| Sidecar Containers |
1.28 |
1.29 |
1.29 |
| In-Place Pod Resize |
1.27 |
1.32 |
1.33 |
| DRA (Dynamic Resource Alloc) |
1.26 |
1.32 |
ongoing |
| ReadWriteOncePod |
1.22 |
1.27 |
1.29 |
| Server Side Apply |
1.14 |
1.16 |
1.22 |
| AppArmor fields |
1.30 |
1.30 |
1.31 |
| Job Success Policy |
1.30 |
1.31 |
1.33 |
| TrafficDistribution |
1.30 |
1.31 |
1.32 |
Common Interview Questions About Releases
Q: What's new in Kubernetes 1.33?
Native sidecar containers reached GA, solving the Job completion problem. In-place pod resource resizing also went GA. DRA for GPU allocation moved to beta.
Q: What replaced PodSecurityPolicy?
Pod Security Admission (PSA), which became stable in 1.25. It enforces privileged, baseline, or restricted standards via namespace labels. For fine-grained policies, use Kyverno or OPA Gatekeeper.
Q: When were ephemeral containers introduced?
Alpha in 1.16, beta in 1.23, stable in 1.25. Used with kubectl debug.
Q: What is Dynamic Resource Allocation (DRA)?
A new API (alpha 1.26, beta 1.32) that replaces device plugins for GPU/FPGA/NIC allocation. More flexible: supports shared allocations, structured parameters, and claim-based scheduling.
Q: What does trafficDistribution: PreferClose do?
Introduced in 1.31 (stable 1.32). Routes service traffic to the topologically nearest endpoint (same node first, then same zone) to reduce latency and cross-AZ egress costs.
How to Stay Current
| Resource |
Type |
| kubernetes.io/blog |
Official release blog posts |
| github.com/kubernetes/kubernetes/CHANGELOG |
Full changelog per version |
| sigs.k8s.io/keps |
Kubernetes Enhancement Proposals |
| last9.io/blog, learnk8s.io |
Community summaries |
| kubernetes.io/docs/reference/command-line-tools-reference |
Feature gates reference |