KubernetesLXXIX · API DeprecationAPI deprecation
API removal planning — the 9-month calendar
What you'll learn
- State the Kubernetes API removal policy
- Identify the timeline for deprecated APIs
- Plan the manifest updates for an API removal
- Recognize the failure modes of a missed API removal
Prerequisites
Verified against Kubernetes 1.34.x · kubeadm 1.34.x · kubectl 1.34.x · etcd 3.6.x · CoreDNS 1.11.x · containerd 1.7.x / 2.x · 2026-08-16
The Kubernetes project’s API deprecation policy is the operator’s planning tool. The policy gives a 9-month window for deprecated APIs to be removed; during that window, the API is supported across 3 minor versions. This lesson walks the policy, the timeline, and the planning involved.
The policy
The Kubernetes project’s API deprecation policy:
- 9 months between deprecation announcement and API removal.
- 3 minor versions of supported skew during the deprecation period.
- The deprecated API continues to be served (with warnings) during the deprecation period.
- After removal, the API returns
404 Not Foundfor all calls.
gantt
title API deprecation timeline
dateFormat YYYY-MM-DD
section API
Available (current) :done, a1, 2025-01-01, 365d
Deprecated (warnings emitted) :active, a2, 2026-01-01, 270d
Removed (404 Not Found) : a3, 2026-10-01, 365d
The policy is intentionally generous. The 9-month window gives operators time to plan, test, and roll out the migration.
The deprecation list
The Kubernetes project documents the deprecated APIs in the API deprecation guide:
| API | Deprecated in | Removed in | Replacement |
|---|---|---|---|
extensions/v1beta1 Ingress | 1.14 | 1.22 | networking.k8s.io/v1 |
apps/v1beta1 Deployment | 1.9 | 1.16 | apps/v1 |
apps/v1beta2 ReplicaSet | 1.9 | 1.16 | apps/v1 |
batch/v2alpha1 CronJob | 1.8 | 1.21 | batch/v1 |
policy/v1beta1 PodSecurityPolicy | 1.21 | 1.25 | policy/v1 (Limited) |
rbac.authorization.k8s.io/v1beta1 | 1.17 | 1.22 | rbac.authorization.k8s.io/v1 |
admissionregistration.k8s.io/v1beta1 | 1.16 | 1.22 | admissionregistration.k8s.io/v1 |
apiextensions.k8s.io/v1beta1 | 1.16 | 1.22 | apiextensions.k8s.io/v1 |
The list is current as of 1.34. The “Removed in” column shows the version where the API is no longer served.
The timeline
A typical migration timeline:
2025-09-01: extensions/v1beta1 Ingress deprecated in 1.14
2025-09-01: 9-month clock starts
2026-06-01: extensions/v1beta1 Ingress removed in 1.22
The operator must:
- Update the manifests to
networking.k8s.io/v1before the removal version. - Test the migration in staging.
- Roll out the migration to production.
- Verify the cluster has no
extensions/v1beta1Ingress objects.
The 9-month window is the planning period.
The cluster audit
The cluster audit identifies the deprecated API objects:
kubent --target-version=v1.34.0
The output lists the deprecated API objects that are still running. Each object must be migrated to the replacement API before the removal version.
flowchart LR
A[Cluster] --> B[kubent]
B --> C[Deprecated API objects]
C --> D{Replace with new API?}
D -->|yes| E[Update manifest]
D -->|no| F[Investigate]
E --> G[Apply manifest]
G --> H[Audit clean]
The manifest update
The manifest update is the schema change. The new API may have:
- New required fields. e.g.,
pathTypefor Ingressnetworking.k8s.io/v1. - Different field types. e.g.,
backend.service(object) vsbackend.serviceName(string). - Removed fields. e.g.,
spec.backendfor Ingress.
# Before: extensions/v1beta1
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
backend:
serviceName: my-service
servicePort: 80
# After: networking.k8s.io/v1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
The schema change is significant; the operator must read the migration guide.
The migration guide
The migration guide is the canonical documentation for the API replacement. The Kubernetes project publishes a migration guide for each deprecated API:
URL: https://kubernetes.io/docs/reference/using-api/deprecation-guide/
The migration guide covers:
- The new API version.
- The schema changes.
- The migration steps.
- The example manifests.
The operator reads the guide before updating the manifests.
The failure mode
A missed API removal causes immediate failures:
After upgrading to 1.22:
- extensions/v1beta1 Ingress is no longer served
- kubectl get ingress returns 404 Not Found
- The Ingress objects are unreachable
- The cluster's HTTP routing breaks
The cluster is broken; the operator must escalate to restore.
The mitigation is the pre-flight audit: the operator runs kubent before the upgrade and addresses the deprecated APIs.
Cross-course references
- The Helm course covers chart template evolution.
- The CI/CD course covers pipeline integration.
- The Observability course covers upgrade validation.
Quiz
Knowledge check · 4 questions
Q1. What is the Kubernetes project's API deprecation policy?
Q2. The Kubernetes project publishes a migration guide for each deprecated API.
Q3. Walk the planning for the `extensions/v1beta1` Ingress removal in 1.22.
Cluster is at 1.21. The 1.22 release notes say `extensions/v1beta1` Ingress is removed. The team has 9 months from the 1.14 deprecation announcement; the 1.22 release is the removal deadline.
Q4. What is the failure mode if a deprecated API is not migrated before the removal version?
Passing score: 75%. Answers are checked in this browser.
Production discipline
- Track the deprecation calendar. 9 months is the planning window.
- Audit the cluster before every upgrade. kubent is the tool.
- Read the migration guide. The schema changes are significant.
- Test the migration in staging. Catch the schema changes before production.
- Roll out the migration. Apply the new manifests; verify the cluster.
- Document the migration. The audit, the manifest updates, the rollout.
The API removal is the cluster’s planning event. Operating it well is keeping the calendar current and the migration rehearsed.