Skip to content

hack: fix DNS on IPv6-only kind clusters - #958

Draft
Yuan Gao (ygao-g) wants to merge 1 commit into
agent-substrate:mainfrom
ygao-g:kind-ipv6-coredns
Draft

hack: fix DNS on IPv6-only kind clusters#958
Yuan Gao (ygao-g) wants to merge 1 commit into
agent-substrate:mainfrom
ygao-g:kind-ipv6-coredns

Conversation

@ygao-g

@ygao-g Yuan Gao (ygao-g) commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

Part of #246.

On a fresh IP_FAMILY=ipv6 cluster nothing resolves from inside a pod, so no
actor ever boots. CoreDNS runs dnsPolicy: Default and inherits the node's
Docker-generated /etc/resolv.conf, which always names an IPv4 resolver a
v6-only pod cannot reach. Separately, the script wires the registry into
containerd on the node, which does not help atelet — it pulls actor images
from its own netns, where kind-registry does not resolve at all.

On IPv6-only clusters CoreDNS now answers for kind-registry and forwards
everything else to an IPv6 upstream, overridable with IPV6_DNS_UPSTREAM where
the default (Google Public DNS) is unreachable. A pod resolves external names
and reaches the registry, so the control plane installs and the counter demo
boots. IPv4 and dual-stack clusters are untouched.

Exercised by the IPv6-only CI job in #939, which stacks on this: control-plane
install plus the demo and networking suites on a v6-only cluster. That job
overrides IPV6_DNS_UPSTREAM for NAT64, since GitHub runners have no IPv6
egress.

🤖 Generated with Claude Code

@ygao-g
Yuan Gao (ygao-g) force-pushed the kind-ipv6-coredns branch 2 times, most recently from 45bac3d to ecf1fc6 Compare August 18, 2026 16:00
@ygao-g Yuan Gao (ygao-g) changed the title hack/create-kind-cluster.sh: fix DNS on IPv6-only kind clusters hack: fix DNS on IPv6-only kind clusters Aug 18, 2026
CoreDNS runs dnsPolicy: Default and inherits the node's Docker-generated
/etc/resolv.conf, which always names an IPv4 resolver -- unreachable
from a v6-only pod, so every external lookup SERVFAILs and anything
that fetches at runtime never starts. Behind that sits a second failure:
the registry is wired into containerd on the node, but atelet pulls
actor images from its own pod netns, where kind-registry does not
resolve at all.

On IPv6-only clusters CoreDNS now answers for kind-registry and forwards
everything else to an IPv6 upstream, overridable with IPV6_DNS_UPSTREAM
where the default is unreachable. A pod resolves external names and
reaches the registry, so atelet fetches its sandbox assets and actors
boot. One component, atenet-egress, still crashloops on a v6-only
cluster for an unrelated Envoy bind bug. IPv4 and dual-stack clusters
are unchanged.
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.

1 participant