---
# System prepended metadata

title: Kubernetes 1.25

---

# Kubernetes 1.25

Kubernetes 1.25 retires a number of APIs, which must be addressed before clusters can be upgraded:

- PodDisruptionBudget `policy/v1beta1` -> `policy/v1`
- CronJob `batch/v1beta1` -> `batch/v1`
- PodSecurityPolicy `policy/v1beta1` -> **NONE**

Teams should review each cluster's [API Report](https://ozzi.shared.mlbinfra.net/?page=1&size=25&order=asc&sort=name&search=#clusters) to see which resources are affected. Ignore the `Deprecated APIs removed in 1.26` section for now.

## PodDisruptionBudget (PDB)

To assist with the PodDisruptionBudget change, the Platform Engineering (nee Ozzi) team is releasing `v4.10.0` of the `mlb-app` Helm chart. If an application is already configured to deploy using the latest `v4.x` release, the API upgrade will be applied with the next Argo CD sync.

Example `Chart.yaml`:

```
apiVersion: v2
name: devops-comedy
version: 1.1.0

dependencies:
  - alias: devops-comedy
    name: mlb-app
    repository: '@mlb-artifactory-local'
    version: ^4.10
```

This version also addresses another issue that many teams have encountered when upgrading clusters. That is, when an application only runs one replica (Pod), a PDB will block node upgrades for up to an hour. Going forward the chart will not generate a PDB unless `replicaCount > 1`. If a team wants a PDB for a single-replica application and is willing to deal with slow node upgrades, set `singleReplicaPDB: true`.

Finally, when manually syncing applications in Argo CD to apply these changes, be sure to select the `Prune` option. This ensures that orphaned resources (like unwanted PDBs) are deleted from the cluster.

## CronJob

The Platform Engineering team does not publish a CronJob Helm chart, so we cannot automatically upgrade them. Instead, teams must review YAML manifests and/or third-pary charts and manually update them.

Example `batch/v1 CronJob` manifest:

```
apiVersion: batch/v1
kind: CronJob
metadata:
  name: kube-no-trouble
  namespace: kube-no-trouble
spec:
...
```

## PodSecurityPolicy (PSP)

The PodSecurityPolicy resource is being removed from Kubernetes entirely. If teams run applications that include PSPs, they must delete the corresponding YAML manifest or upgrade to a version of the third-party Helm chart that no longer includes a PSP.

As with PDBs, remember to select the `Prune` option when manually syncing so that existing PSPs are deleted from the cluster.

## Timeline

End of life for Kubernetes 1.24 is 2023-10-31. GKE clusters that are not subscribed to a release channel will begin auto-upgrading to 1.25 in Q2 2023. Any team that wishes to avoid cluster upgrades (not including regular GKE maintenance) until next off-season should address these API changes and manually upgrade to 1.25 before Opening Day 2023.