Skip to content

Bump k8s-openapi feature to Kubernetes 1.34 - #38059

Merged
alex-hunt-materialize merged 4 commits into
MaterializeInc:mainfrom
alex-hunt-materialize:bump_k8s-openapi_feature_to_K8S_1.34
Aug 6, 2026
Merged

Bump k8s-openapi feature to Kubernetes 1.34#38059
alex-hunt-materialize merged 4 commits into
MaterializeInc:mainfrom
alex-hunt-materialize:bump_k8s-openapi_feature_to_K8S_1.34

Conversation

@alex-hunt-materialize

@alex-hunt-materialize alex-hunt-materialize commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Bump k8s-openapi feature to Kubernetes 1.34.
Bump kind to v0.32.0 and kubectl to v1.34.10 in the CI builder image and dev tooling.
Bump all kind cluster configs to kindest/node:v1.34.8 nodes (the pre-built 1.34 image for kind v0.32.0).
Fix a race in our minio setup, which shows up more consistently in Kubernetes 1.34, where the PVC could end up on a different node and minio pods would never become ready. DB-143

Kubernetes 1.34 is the oldest currently supported version. Newer Kubernetes versions may not support legacy APIs over time, so better to stay current.

This will require a similar bump in the cloud repo when bumping the submodule.

Motivation

Keep up to date, on supported platforms.

Verification

Nightly pipelines that exercise the bumped kind/kubectl/node images and should be run on this PR:

  • cloudtest, cloudtest-slow, cloudtest-upgrade: run kind via the rebuilt ci-builder image.
  • orchestratord-*: run in the test/orchestratord kind cluster, now on 1.34.8 nodes.
  • k8s-node-recovery-*: use misc/kind/cluster-node-recovery-test.yaml, now on 1.34.8 nodes. These are the steps the minio fix targets.

🤖 Generated with Claude Code

@alex-hunt-materialize
alex-hunt-materialize force-pushed the bump_k8s-openapi_feature_to_K8S_1.34 branch from 75c7431 to 1b280ff Compare August 5, 2026 16:59
Bump k8s-openapi feature to Kubernetes 1.34.
Bump kind to v0.32.0.
Bump kubectl to v1.34.10.
Bump our kind clusters to 1.34.8 nodes.

Kubernetes 1.34 is the oldest currently supported version.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@alex-hunt-materialize
alex-hunt-materialize force-pushed the bump_k8s-openapi_feature_to_K8S_1.34 branch from 1b280ff to f03410e Compare August 5, 2026 17:17
Minio.create() created the deployment without its nodeSelector, patched the
selector in afterwards, then created the claim. The claim binds with
WaitForFirstConsumer, so the provisioner pins the volume to whichever node the
scheduler picks for the first pod that consumes it. The pod created before the
patch could drive that decision even though it was replaced moments later,
pinning the volume to a node the final pod was not allowed to run on. Nothing
could then satisfy both the volume node affinity and the pod node selector, so
the pod stayed Pending until the setup wait timed out.

Inject the nodeSelector into the deployment manifest before creating it, so no
pod ever exists without it. Creation order no longer matters, so the claim is
created up front with the service.

This is the flakiness tracked by DB-143. It made the k8s node recovery nightly
steps fail deterministically on newer node images.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@alex-hunt-materialize
alex-hunt-materialize marked this pull request as ready for review August 6, 2026 12:44
@alex-hunt-materialize
alex-hunt-materialize requested review from a team as code owners August 6, 2026 12:44

@def- def- left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The cloudtest failure seems suspicious to me and haven't seen it on main! https://buildkite.com/materialize/nightly/builds/17824#019fd679-a9f5-421d-afb6-e799dc346d6c Especially since it happened twice in this PR, both times in test_cluster_replica_sizes, and never before in that test according to the CI dashboard: https://ci.dev.materialize.com/failures?globalFilter=ConnectionResetError%3A+%5BErrno+104%5D+Connection+reset+by+peer&sort=build_date&sortDir=desc

@def- def- left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put up a commit to fix it.

pg8000 wraps most connection failures in InterfaceError, but socket
errors from its SSL negotiation leak through unwrapped. With the
kind/Kubernetes bump the SQL probe after an environmentd stateful set
replace can land in a window where the port-forwarding proxy accepts
the connection and then resets it, surfacing as a raw
ConnectionResetError that escaped the retry loop and failed
test_cluster_replica_sizes.

Catch OSError alongside InterfaceError, and raise the last error when
the 300s deadline expires instead of silently falling through.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@alex-hunt-materialize
alex-hunt-materialize merged commit 3de6a5f into MaterializeInc:main Aug 6, 2026
94 checks passed
@alex-hunt-materialize
alex-hunt-materialize deleted the bump_k8s-openapi_feature_to_K8S_1.34 branch August 6, 2026 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants