Kubernetes Release Cycle and Version Support
Kubernetes release cycle explained: 3 releases per year, 14-month support window, patch cadence, version skew policy, and upgrade planning timeline.
π‘ Quick Answer: Kubernetes releases 3 minor versions per year (~every 4 months). Each version is supported for 14 months (12 months standard + 2 months maintenance). You can skip at most one minor version during upgrades (e.g., 1.29 β 1.31, but not 1.29 β 1.32).
The Problem
You need to plan:
- When to upgrade your cluster
- How long your current version is supported
- Which versions are safe to skip
- How version skew between components works
The Solution
Release Schedule (2025-2026)
| Version | Release Date | End of Standard Support | End of Life |
|---|---|---|---|
| 1.28 | Aug 2023 | Aug 2024 | Oct 2024 |
| 1.29 | Dec 2023 | Dec 2024 | Feb 2025 |
| 1.30 | Apr 2024 | Apr 2025 | Jun 2025 |
| 1.31 | Aug 2024 | Aug 2025 | Oct 2025 |
| 1.32 | Dec 2024 | Dec 2025 | Feb 2026 |
| 1.33 | Apr 2025 | Apr 2026 | Jun 2026 |
| 1.34 | Aug 2025 | Aug 2026 | Oct 2026 |
| 1.35 | Dec 2025 | Dec 2026 | Feb 2027 |
Release Cadence
gantt
title Kubernetes Release Timeline
dateFormat YYYY-MM
section Releases
v1.32 :2024-12, 2026-02
v1.33 :2025-04, 2026-06
v1.34 :2025-08, 2026-10
v1.35 :2025-12, 2027-02
section Support
v1.32 standard :2024-12, 2025-12
v1.32 maintenance :2025-12, 2026-02
v1.33 standard :2025-04, 2026-04
v1.33 maintenance :2026-04, 2026-06Support Phases
Release β Standard Support (12 months) β Maintenance (2 months) β EOL
β β β
Bug fixes + security patches Critical security only No patchesVersion Skew Policy
# kube-apiserver: must be within 1 minor version of each other (HA)
# Node 1: apiserver v1.33, Node 2: apiserver v1.33 β
# Node 1: apiserver v1.33, Node 2: apiserver v1.32 β
# kubelet: can be up to 3 minor versions behind apiserver
# apiserver v1.33, kubelet v1.33 β
# apiserver v1.33, kubelet v1.32 β
# apiserver v1.33, kubelet v1.31 β
# apiserver v1.33, kubelet v1.30 β
# apiserver v1.33, kubelet v1.29 β (too old)
# kubectl: within 1 minor version (older or newer) of apiserver
# apiserver v1.33, kubectl v1.34 β
# apiserver v1.33, kubectl v1.33 β
# apiserver v1.33, kubectl v1.32 β
# apiserver v1.33, kubectl v1.31 β
# Upgrade order: apiserver β controller-manager β scheduler β kubelet β kubectlPatch Release Cadence
# Patch releases (~monthly) for supported versions
# Example: v1.33.0 β v1.33.1 β v1.33.2 β ...
# Check current latest patches
curl -s https://dl.k8s.io/release/stable.txt
# v1.33.4
# Check specific version stream
curl -s https://dl.k8s.io/release/stable-1.32.txt
# v1.32.8Upgrade Path Planning
# β Valid upgrade paths (sequential or skip-one):
# v1.30 β v1.31 (sequential)
# v1.30 β v1.31 β v1.32 (two steps)
# v1.30 β v1.32 (skip one β allowed since v1.28)
# β Invalid:
# v1.30 β v1.33 (skip two β NOT supported)
# Check your current version
kubectl version --short
# Client: v1.33.2
# Server: v1.32.5 β need to plan upgrade to v1.33
# Check available versions (managed clusters)
# EKS: aws eks describe-addon-versions
# GKE: gcloud container get-server-config
# AKS: az aks get-versions --location eastusDeprecation Policy
# GA APIs: maintained indefinitely after going GA
# Beta APIs: minimum 9 months / 3 releases after deprecation
# Alpha APIs: can be removed in any release (no guarantee)
# Check deprecations before upgrade:
# kubectl convert --help (deprecated, use kubectl-convert plugin)
# Common deprecation gotchas:
# - PodSecurityPolicy removed in v1.25
# - FlowSchema v1beta3 β v1 in v1.29
# - CronJob batch/v1beta1 β batch/v1 since v1.21Planning Checklist
# Before upgrading:
# 1. Check deprecated APIs
kubectl get --raw /apis | jq '.groups[].versions[].groupVersion'
# Or use pluto/kubent for deprecation scanning
kubent
# 2. Review changelog
# https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.33.md
# 3. Test in staging first
# 4. Backup etcd
etcdctl snapshot save /backup/etcd-pre-upgrade.db
# 5. Upgrade control plane
# 6. Upgrade nodes (rolling)
# 7. Verify
kubectl get nodes
kubectl get pods -A | grep -v RunningCommon Issues
| Issue | Cause | Fix |
|---|---|---|
| API removed after upgrade | Using deprecated beta API | Migrate to stable API before upgrade |
| kubelet wonβt start | Version skew >3 | Upgrade sequentially |
| Webhook failures | Admission webhook incompatible | Update webhook before cluster |
| CRD version mismatch | Operator needs newer K8s | Upgrade operator first |
| etcd incompatibility | Skipped too many versions | Follow sequential upgrade path |
Best Practices
- Upgrade within 4 months of a new release β stay in support window
- Always upgrade patch versions immediately β security fixes only
- Test upgrades in staging β same config, smaller scale
- Skip-one is OK, skip-two is not β plan multi-hop if behind
- Subscribe to kubernetes-announce β early warning for CVEs and deprecations
Key Takeaways
- 3 releases per year, each supported 14 months (12 + 2 maintenance)
- Upgrade path: sequential or skip one minor version (since v1.28)
- kubelet can be up to 3 versions behind apiserver
- Always check deprecated APIs before upgrading (use kubent/pluto)
- Patch releases monthly β apply these immediately for security

Recommended
Kubernetes Recipes β The Complete Book100+ production-ready patterns with detailed explanations, best practices, and copy-paste YAML. Everything in one place.
Get the Book βLearn by Doing
CopyPasteLearn β Hands-on Cloud & DevOps CoursesMaster Kubernetes, Ansible, Terraform, and MLOps with interactive, copy-paste-run lessons. Start free.
Browse Courses βπ Deepen Your Skills β Hands-on Courses
Courses by CopyPasteLearn.com β Learn IT by Doing
