agent config e2e: advertise Kind control-plane VM-bridge node IP#468
Merged
Conversation
Kindnet on QEMU worker nodes installs the control-plane pod CIDR route via the control-plane Node InternalIP. By default that is the Kind container's Docker-network address (e.g. 172.18.0.2), which is not on-link from the VM bridge subnet the workers live on. The route add then fails with 'network is unreachable', kindnet panics reconciling node routes, and the worker stays NetworkPluginNotReady until the 720s wait times out. Add a configure-kind-node-ip step that reconfigures the control-plane kubelet to advertise its VM-bridge address (VM_SUBNET.2, assigned to eth-e2e) before any worker joins, making the next hop on-link. Wire it into the CI composite action (after the bridge attach) and run-local.sh. Leaves kindnet's CONTROL_PLANE_ENDPOINT on the Docker IP, which the API cert SANs cover. Fixes #467
jveski
approved these changes
Jul 13, 2026
bcho
approved these changes
Jul 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the
agent config e2eflake in #467 where worker nodes stayNetworkPluginNotReadyand the job times out after 720s.Kindnet on the QEMU worker nodes installs the control-plane pod CIDR route via the control-plane Node's
InternalIP. By default that is the Kind container's Docker-network address (for example172.18.0.2), which is not on-link from the VM bridge subnet the workers live on. Theip route addthen fails:Containerd never gets a CNI config and the worker never becomes Ready.
Change
Add a
configure-kind-node-ipstep that reconfigures the Kind control-plane kubelet to advertise its VM-bridge address (${VM_SUBNET}.2, already assigned toeth-e2e) as the NodeInternalIP, before any worker joins. That makes the pod-CIDR next hop on-link for every worker, so route reconciliation succeeds.hack/agent/e2e-kind/e2e.py: new idempotentconfigure-kind-node-ipcommand (rewritesKUBELET_KUBEADM_ARGS, restarts kubelet, waits for the Node to advertise the new IP)..github/actions/agent-e2e-kind-control-plane/action.yaml: run it immediately after the Kind container is attached to the VM bridge.hack/agent/e2e-kind/run-local.sh: same call for local runs.CONTROL_PLANE_ENDPOINTis intentionally left on the Docker IP (covered by the API cert SANs); only the Node's advertisedInternalIP(a routing next hop, not a TLS endpoint) changes.Verification
python3 -m py_compile, AST/command-registration checks,bash -n, PyYAML parse, CI step-ordering assertion.ip route add 10.244.0.0/24 via <docker-ip>fails;via <bridge-ip>succeeds.configure-kind-node-ipcommand; the control-plane Node advertised192.168.110.2within 3s; a worker netns on the VM subnet reached that IP (ping) and installed the pod-CIDR route via it, while the old Docker-IP route still failed.Notes
The existing crash-looping-Kindnet-pod deletion workaround in
e2e.pyis left in place as a safety net; this change removes the cause.