Skip to content

Bump the e2e workload node image past the DRA idle deadlock - #421

Open
nicknikolakakis wants to merge 1 commit into
modelplaneai:mainfrom
nicknikolakakis:bump-workload-node-image
Open

Bump the e2e workload node image past the DRA idle deadlock#421
nicknikolakakis wants to merge 1 commit into
modelplaneai:mainfrom
nicknikolakakis:bump-workload-node-image

Conversation

@nicknikolakakis

Copy link
Copy Markdown

Fixes #419.

The e2e workload cluster runs kindest/node:v1.34.0, whose kubelet deadlocks once its connection to a DRA driver has been idle for 30 minutes: the next pod referencing a ResourceClaim sits in ContainerCreating with one Scheduled event and nothing else, and NodePrepareResources never reaches the driver. The goroutine dump and the reproduction are in the issue. Fixed upstream by kubernetes/kubernetes#133934, which CHANGELOG-1.34.md lists under v1.34.2.

The pin's stated reason is the DRA APIs, GA in 1.34, so any 1.34 image satisfies it. The containerd constraint you may remember is a different pin: #315 changed only docs/content/getting-started/installation.md, where the comment says kind v0.31+ ships containerd 2.2.0. e2e/run.sh got its pin from the e2e PR instead and never carried that constraint. containerd 2.2.0 was also one release: v1.34.3 has 2.2.0, v1.34.8 has 2.3.1, v1.34.11 has 2.3.4, each checked with docker run --rm --entrypoint containerd <image> --version.

So this takes v1.34.8, the oldest published image clearing both the deadlock and 2.2.0. v1.34.11 is there if you would rather track kind's latest. I have not run the full e2e locally, so whether Modelplane is happy on containerd 2.3.x is what the test-e2e label would settle. The docs pin is untouched: that cluster runs no DRA driver, so the deadlock doesn't reach it.

The reuse guard rejects a v1.34.0 or v1.34.1 cluster now instead of reusing it, since long-lived dev clusters are the population that hits this and bumping only the image would leave them deadlocking.

Touches e2e/run.sh like #420 does, on different lines.

The workload cluster runs kindest/node:v1.34.0, whose kubelet deadlocks
once its gRPC connection to a DRA driver has been idle for 30 minutes.
The next pod referencing a ResourceClaim then blocks in ContainerCreating
with a single Scheduled event, no kubelet error, and NodePrepareResources
never reaching the driver. Fixed upstream in v1.34.2 (k/k#133934).

CI never sees it, since those clusters are minutes old. A cluster left up
overnight hits it on the first ModelDeployment of the morning, and the
symptom carries nothing that points at the kubelet.

The pin exists for the DRA APIs, GA in 1.34, so any 1.34 image satisfies
it. v1.34.8 is the oldest published image that also clears the deadlock,
and it carries containerd 2.3.1, past the 2.2.0 that installation.md pins
the getting-started cluster away from. Whether Modelplane runs on
containerd 2.3.x is untested here; that docs pin is a separate constraint
and is left alone, since its cluster runs no DRA driver.

The reuse guard now rejects a v1.34.0 or v1.34.1 cluster rather than
reusing it. Long-lived dev clusters are the ones that hit this, so
bumping only the image would leave them deadlocking.

Fixes modelplaneai#419.

Signed-off-by: Nick Nikolakakis <nonicked@protonmail.com>
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.

Pinned kindest/node v1.34.0 carries the kubelet DRA idle deadlock (kubernetes#133926, fixed in v1.34.2)

1 participant