K8s API Checker

K8s API Checker

Check manifests for deprecated or removed Kubernetes APIs by cluster version.

Target K8s Version:

Kubernetes YAML

Paste K8s manifests to check for deprecated APIs

Checked APIs: extensions/v1beta1, apps/v1beta*, networking.k8s.io/v1beta1, rbac.authorization.k8s.io/v1beta1, batch/v1beta1, policy/v1beta1, autoscaling/v2beta*, and more.

Features

  • Detect deprecated and removed Kubernetes API versions in manifests
  • Coverage for all major Kubernetes versions (1.16 through 1.32+)
  • Per-resource migration guidance (deprecated → replacement API)
  • Batch check multiple resources from a single YAML file
  • Severity classification: deprecated (warning) vs. removed (error)
  • Direct links to official Kubernetes migration guides

Common Use Cases

  • Audit manifests before upgrading a Kubernetes cluster to a new minor version
  • Identify resources using removed APIs that will break after an upgrade
  • Migrate from <code>extensions/v1beta1</code> to <code>apps/v1</code> and similar
  • Review third-party Helm charts for deprecated API usage
  • Prepare upgrade runbooks for production Kubernetes clusters

Kubernetes API Versioning & Deprecation

Kubernetes uses a versioned API (apiVersion) to allow safe evolution of resource definitions. APIs go through three stability stages: alpha (v1alpha1 — may break at any time), beta (v1beta1 — stable for 3+ releases), and GA/stable (v1 — stable with long support).

When an API is deprecated, it still works but produces warnings. When it is removed (typically 2-3 minor versions after deprecation), using it causes a hard error. The classic example: extensions/v1beta1 Ingress was removed in Kubernetes 1.22 — clusters upgrading past that version would break any Ingress using the old APIVersion.

Checking your manifests proactively before each cluster upgrade is essential DevOps hygiene.

Examples

Invalid - Deprecated Ingress (pre-1.22)
apiVersion: extensions/v1beta1
kind: Ingress
Valid - Current Ingress (1.22+)
apiVersion: networking.k8s.io/v1
kind: Ingress
Invalid - Deprecated PodDisruptionBudget
apiVersion: policy/v1beta1
kind: PodDisruptionBudget

Frequently Asked Questions

How do I know which APIs are removed in my target Kubernetes version?

The official Kubernetes Deprecation Guide lists all removals by version. This tool automates that lookup: paste your manifests and select the target version to see all affected resources instantly.

What is the difference between deprecated and removed?

Deprecated: the API still works but you will see warning messages in kubectl output and cluster logs. You have a grace period (usually 2+ minor versions) to migrate. Removed: the API endpoint no longer exists. Applying a manifest with a removed API version returns a 404 Not Found error from the API server.

How do I migrate from an old API version?

Replace the apiVersion field with the current stable equivalent and update any fields that changed between versions. For example, Ingress moved from extensions/v1beta1 to networking.k8s.io/v1, and the backend field structure changed. The API checker provides migration links for each deprecated resource.

Do Helm charts have API deprecation issues?

Yes, frequently. Older Helm charts (especially those not actively maintained) may use deprecated API versions in their templates. Run the rendered output of helm template my-chart through this checker before upgrading a chart on a newer cluster version.

💡 Tips

  • Run this checker as part of your CI/CD pipeline before every cluster upgrade to catch issues early.
  • After migrating an API version, validate the new manifest structure with the YAML Validator to verify schema compliance.
  • Pay extra attention to <code>Ingress</code>, <code>PodDisruptionBudget</code>, <code>HorizontalPodAutoscaler</code>, and <code>CronJob</code> — these have had the most breaking API changes.
  • Use <code>kubectl convert</code> (with the <code>kubectl-convert</code> plugin) to automatically migrate manifest API versions.