cluster.ninja

Kubernetes API versions

Kubernetes APIs move from alpha to beta to stable, and the older versions are then removed. A removed version is simply not served any more: kubectl apply fails with no matches for kind, and old clients break. Here is the life cycle of every built-in API version, read from the lifecycle markers in the Kubernetes source at v1.37.2 and the official migration guide.

v1Stable

Binding, ConfigMap, Endpoints, Event, LimitRange, Namespace, Node, NodeProxyOptions +17 more

admission.k8s.io/v1Stable

AdmissionReview

admission.k8s.io/v1beta1Removed in 1.22

AdmissionReview

admissionregistration.k8s.io/v1Stable

MutatingAdmissionPolicy, MutatingAdmissionPolicyBinding, MutatingWebhookConfiguration, ValidatingAdmissionPolicy, ValidatingAdmissionPolicyBinding, ValidatingWebhookConfiguration

admissionregistration.k8s.io/v1beta1Partly removed

MutatingAdmissionPolicy, MutatingAdmissionPolicyBinding, MutatingWebhookConfiguration, ValidatingAdmissionPolicy, ValidatingAdmissionPolicyBinding, ValidatingWebhookConfiguration

apiextensions.k8s.io/v1Stable

ConversionReview, CustomResourceDefinition

apiextensions.k8s.io/v1beta1Removed in 1.22

ConversionReview, CustomResourceDefinition

apiregistration.k8s.io/v1Stable

APIService

apiregistration.k8s.io/v1beta1Removed in 1.22

APIService

apps/v1Stable

ControllerRevision, DaemonSet, Deployment, ReplicaSet, StatefulSet

apps/v1beta1Removed in 1.16

ControllerRevision, Deployment, DeploymentRollback, ReplicaSet, Scale, StatefulSet

apps/v1beta2Removed in 1.16

ControllerRevision, DaemonSet, Deployment, ReplicaSet, Scale, StatefulSet

authentication.k8s.io/v1Stable

SelfSubjectReview, TokenRequest, TokenReview

authentication.k8s.io/v1beta1Removed in 1.33

SelfSubjectReview, TokenReview

authorization.k8s.io/v1Stable

LocalSubjectAccessReview, SelfSubjectAccessReview, SelfSubjectRulesReview, SubjectAccessReview

authorization.k8s.io/v1beta1Removed in 1.22

LocalSubjectAccessReview, SelfSubjectAccessReview, SelfSubjectRulesReview, SubjectAccessReview

autoscaling/v1Stable

HorizontalPodAutoscaler, Scale

autoscaling/v2Stable

HorizontalPodAutoscaler

autoscaling/v2beta1Removed in 1.25

HorizontalPodAutoscaler

autoscaling/v2beta2Removed in 1.26

HorizontalPodAutoscaler

batch/v1Stable

CronJob, Job

batch/v1beta1Removed in 1.25

CronJob

certificates.k8s.io/v1Stable

CertificateSigningRequest, ClusterTrustBundle, PodCertificateRequest

certificates.k8s.io/v1beta1Partly removed

CertificateSigningRequest, ClusterTrustBundle, PodCertificateRequest

coordination.k8s.io/v1Stable

Lease

coordination.k8s.io/v1beta1Partly removed

Lease, LeaseCandidate

discovery.k8s.io/v1Stable

EndpointSlice

discovery.k8s.io/v1beta1Removed in 1.25

EndpointSlice

events.k8s.io/v1Stable

Event

events.k8s.io/v1beta1Removed in 1.25

Event

extensions/v1beta1Removed in 1.22

DaemonSet, Deployment, DeploymentRollback, Ingress, NetworkPolicy, PodSecurityPolicy, ReplicaSet, Scale

flowcontrol.apiserver.k8s.io/v1Stable

FlowSchema, PriorityLevelConfiguration

flowcontrol.apiserver.k8s.io/v1beta1Removed in 1.26

FlowSchema, PriorityLevelConfiguration

flowcontrol.apiserver.k8s.io/v1beta2Removed in 1.29

FlowSchema, PriorityLevelConfiguration

flowcontrol.apiserver.k8s.io/v1beta3Removed in 1.32

FlowSchema, PriorityLevelConfiguration

networking.k8s.io/v1Stable

IPAddress, Ingress, IngressClass, NetworkPolicy, ServiceCIDR

networking.k8s.io/v1beta1Removed in 1.37

IPAddress, Ingress, IngressClass, ServiceCIDR

node.k8s.io/v1Stable

RuntimeClass

node.k8s.io/v1beta1Removed in 1.25

RuntimeClass

policy/v1Stable

Eviction, PodDisruptionBudget

policy/v1beta1Removed in 1.25

Eviction, PodDisruptionBudget, PodSecurityPolicy

rbac.authorization.k8s.io/v1Stable

ClusterRole, ClusterRoleBinding, Role, RoleBinding

rbac.authorization.k8s.io/v1beta1Removed in 1.22

ClusterRole, ClusterRoleBinding, Role, RoleBinding

resource.k8s.io/v1Stable

DeviceClass, DeviceTaintRule, ResourceClaim, ResourceClaimTemplate, ResourceSlice

resource.k8s.io/v1beta1Deprecated since 1.35

DeviceClass, ResourceClaim, ResourceClaimTemplate, ResourceSlice

off by default
resource.k8s.io/v1beta2Deprecated since 1.36

DeviceClass, DeviceTaintRule, ResourceClaim, ResourceClaimTemplate, ResourceSlice

off by default
scheduling.k8s.io/v1Stable

PriorityClass

scheduling.k8s.io/v1beta1Partly removed

PodGroup, PriorityClass, Workload

storage.k8s.io/v1Stable

CSIDriver, CSINode, CSIStorageCapacity, StorageClass, VolumeAttachment, VolumeAttributesClass

storage.k8s.io/v1beta1Removed in 1.37

CSIDriver, CSINode, CSIStorageCapacity, StorageClass, VolumeAttachment, VolumeAttributesClass

storagemigration.k8s.io/v1Stable

StorageVersionMigration

storagemigration.k8s.io/v1beta1Deprecated since 1.37

StorageVersionMigration

off by default

Deprecated but still served in 1.37

These still work today but log deprecation warnings; each has a removal release scheduled in the source.

KindAPI versionDeprecatedStops being servedUse instead
MutatingAdmissionPolicy admissionregistration.k8s.io/v1alpha1 alpha · off 1.351.38 admissionregistration.k8s.io/v1
MutatingAdmissionPolicyBinding admissionregistration.k8s.io/v1alpha1 alpha · off 1.351.38 admissionregistration.k8s.io/v1
LeaseCandidate coordination.k8s.io/v1alpha2 alpha · off 1.351.38 —
DeviceClass resource.k8s.io/v1beta1 beta · off by default 1.351.38 resource.k8s.io/v1
ResourceClaim resource.k8s.io/v1beta1 beta · off by default 1.351.38 resource.k8s.io/v1
ResourceClaimTemplate resource.k8s.io/v1beta1 beta · off by default 1.351.38 resource.k8s.io/v1
ResourceSlice resource.k8s.io/v1beta1 beta · off by default 1.351.38 resource.k8s.io/v1
LeaseCandidate coordination.k8s.io/v1beta1 beta · off by default 1.361.39 —
DeviceClass resource.k8s.io/v1beta2 beta · off by default 1.361.39 resource.k8s.io/v1
DeviceTaintRule resource.k8s.io/v1alpha3 alpha · off 1.361.39 resource.k8s.io/v1
ResourceClaim resource.k8s.io/v1beta2 beta · off by default 1.361.39 resource.k8s.io/v1
ResourceClaimTemplate resource.k8s.io/v1beta2 beta · off by default 1.361.39 resource.k8s.io/v1
ResourceSlice resource.k8s.io/v1beta2 beta · off by default 1.361.39 resource.k8s.io/v1
MutatingAdmissionPolicy admissionregistration.k8s.io/v1beta1 beta · off by default 1.371.40 admissionregistration.k8s.io/v1
MutatingAdmissionPolicyBinding admissionregistration.k8s.io/v1beta1 beta · off by default 1.371.40 admissionregistration.k8s.io/v1
ClusterTrustBundle certificates.k8s.io/v1beta1 beta · off by default 1.371.40 certificates.k8s.io/v1
PodCertificateRequest certificates.k8s.io/v1beta1 beta · off by default 1.371.40 certificates.k8s.io/v1
StorageVersionMigration storagemigration.k8s.io/v1beta1 beta · off by default 1.371.40 storagemigration.k8s.io/v1

Scheduled removals after 1.37

Removal releases written into the API lifecycle markers. Most of these are beta versions that are off by default, so they only affect clusters that enabled them.

KindAPI versionStops being servedUse instead
MutatingAdmissionPolicy admissionregistration.k8s.io/v1alpha1 alpha · off 1.38 admissionregistration.k8s.io/v1
MutatingAdmissionPolicyBinding admissionregistration.k8s.io/v1alpha1 alpha · off 1.38 admissionregistration.k8s.io/v1
LeaseCandidate coordination.k8s.io/v1alpha2 alpha · off 1.38 —
DeviceClass resource.k8s.io/v1beta1 beta · off by default 1.38 resource.k8s.io/v1
ResourceClaim resource.k8s.io/v1beta1 beta · off by default 1.38 resource.k8s.io/v1
ResourceClaimTemplate resource.k8s.io/v1beta1 beta · off by default 1.38 resource.k8s.io/v1
ResourceSlice resource.k8s.io/v1beta1 beta · off by default 1.38 resource.k8s.io/v1
LeaseCandidate coordination.k8s.io/v1beta1 beta · off by default 1.39 —
DeviceClass resource.k8s.io/v1beta2 beta · off by default 1.39 resource.k8s.io/v1
DeviceTaintRule resource.k8s.io/v1alpha3 alpha · off 1.39 resource.k8s.io/v1
ResourceClaim resource.k8s.io/v1beta2 beta · off by default 1.39 resource.k8s.io/v1
ResourceClaimTemplate resource.k8s.io/v1beta2 beta · off by default 1.39 resource.k8s.io/v1
ResourceSlice resource.k8s.io/v1beta2 beta · off by default 1.39 resource.k8s.io/v1
MutatingAdmissionPolicy admissionregistration.k8s.io/v1beta1 beta · off by default 1.40 admissionregistration.k8s.io/v1
MutatingAdmissionPolicyBinding admissionregistration.k8s.io/v1beta1 beta · off by default 1.40 admissionregistration.k8s.io/v1
ClusterTrustBundle certificates.k8s.io/v1beta1 beta · off by default 1.40 certificates.k8s.io/v1
PodCertificateRequest certificates.k8s.io/v1beta1 beta · off by default 1.40 certificates.k8s.io/v1
StorageVersionMigration storagemigration.k8s.io/v1beta1 beta · off by default 1.40 storagemigration.k8s.io/v1
DeviceTaintRule resource.k8s.io/v1beta2 beta · off by default 1.42 resource.k8s.io/v1
ResourcePoolStatusRequest resource.k8s.io/v1alpha3 alpha · off 1.42 —
Eviction lifecycle.k8s.io/v1alpha1 alpha · off 1.43 —
EvictionRequest lifecycle.k8s.io/v1alpha1 alpha · off 1.43 —
PodGroup scheduling.k8s.io/v1beta1 beta · off by default 1.43 —
Workload scheduling.k8s.io/v1beta1 beta · off by default 1.43 —

Alpha API versions are left out of the cards unless the migration guide covers them; they are never on by default. Stable v1 core kinds (Pod, Service, ConfigMap…) have no removals.