kubernetes-client/java v28.0.0 - Kubernetes 1.37 Support and Informer Improvements

The kubernetes-client/java project published v28.0.0 on October 27, 2026. The headline change is support for Kubernetes 1.37: the client models were regenerated from the release-1.37 API. Several library dependency updates ride along with it. This is a stable release, not a prerelease.

The full release notes and downloads are on the GitHub release page.

The release page lists every change, including the routine dependency bumps. Below are the ones worth a closer look if you build operators or controllers on this client.

Informers and watches get more filtering options

The informer story improved in two places. Informers now support cache level predicates, so you can filter events before they reach your handlers (#4896). There are also predicate aware informer event handlers (#4894), which means less boilerplate in controller code.

Watch parity also landed: ListOptions now works with watches and has a fluent builder (#4893). If you previously had to hand craft watch options, this should simplify that code.

Leader election and backoff fixes

Three fixes here matter if you run HA controllers:

  • LeaderElector no longer waits a full extra lease duration before acquiring an already expired lease on startup (#4914).
  • LeaderElectionRecord.equals no longer mishandles a null renewTime comparison (#4954).
  • The exponential backoff rate limiter had an int overflow; that is fixed in the extended module (#4957).

The first one alone can shave a noticeable delay off controller failover.

Quantity and utility correctness

A few smaller but real fixes:

  • Quantity.hashCode now honors the equals/hashCode contract, and negative quantities format correctly with SI and binary suffixes (#4953, #4956).
  • Wait.poll shuts down its scheduled executor, plugging a thread leak (#4955).
  • Taints.findTaint guards against a null node spec or taints (#4958).
  • Readiness checks no longer treat null replicas or readyReplicas as defaults (#4905).
  • DeploymentHelper.equalIgnoreHash avoids a NullPointerException on templates with no labels (#4900).

JDK 23 and build cleanup

For people building the client from source: the annotation processor is now set explicitly for JDK 23+ compatibility (#4935). The maintainers also removed Thread.sleep() from several tests, which should make the test suite faster and less flaky.

Where to get it

Worth a look if you run Java based controllers against a Kubernetes 1.37 cluster, or if you were hitting any of the leader election or thread leak issues above.

← All updates