no matches for kind "Ingress" in version "extensions/v1beta1" (resource mapping not found)
The manifest uses an apiVersion/kind the cluster doesn’t serve — a removed beta API, or a CRD that isn’t installed.
Seen on:
Kubernetes
Meaning
Kubernetes removes deprecated APIs on schedule: extensions/v1beta1 Ingress (1.22), policy/v1beta1 PodSecurityPolicy (1.25), batch/v1beta1 CronJob (1.25), autoscaling/v2beta2 HPA (1.26). Custom kinds (Certificate, ServiceMonitor) need their CRDs installed first.
Common causes
- Old apiVersion removed in your cluster version
- CRD not installed (cert-manager, Prometheus operator)
- Applying CRs before CRDs in the same apply
- Typo in kind
⚡ Quick fix
- Update apiVersion (e.g. networking.k8s.io/v1) and adjust the spec
- Install the operator/CRDs first
- Check what the cluster serves: kubectl api-resources
Detailed fix by platform
Kubernetes
- bash
kubectl api-resources | grep -i ingress kubectl explain ingress --api-version=networking.k8s.io/v1
How to diagnose
- Served — kubectl api-versions
- CRD — kubectl get crd | grep kind
- Version — kubectl version
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
Most viewed in Kubernetes
- error converting YAML to JSON error converting YAML to JSON: yaml: line 12: did not find expected key
- is waiting to start Error from server (BadRequest): container "x" in pod "y" is waiting to start: ContainerCreating
- kubectl connection refused kubectl: The connection to the server localhost:8080 was refused — did you specify the right host or port?
Other ways to find it
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 7 Oct 2026