diff --git a/kubernetes/talos/patches/k8s-1.yaml b/kubernetes/talos/patches/k8s-1.yaml index c369d7cf..3da607ac 100644 --- a/kubernetes/talos/patches/k8s-1.yaml +++ b/kubernetes/talos/patches/k8s-1.yaml @@ -35,6 +35,18 @@ machine: addresses: - 10.99.0.1/29 mtu: 9000 + # Dummy interface claiming the BGP-pool prefixes so the kernel sees + # LB VIPs as locally owned. Cilium's eBPF LB intercepts TCP/UDP but + # not ICMP/ICMPv6, so ICMP to an LB VIP otherwise hits the kernel + # routing path, gets forwarded out the default route, and loops + # back via BGP until hop-limit exceeded. With the LB prefixes on + # dummy0 the kernel answers directly. AnyIP routing pattern; see + # cilium-ebpf-lb-icmp-ttl-loop-quirk wiki note. + - interface: dummy0 + dummy: true + addresses: + - 10.2.99.0/24 + - fd99::/64 install: disk: /dev/vda certSANs: diff --git a/kubernetes/talos/patches/k8s-2.yaml b/kubernetes/talos/patches/k8s-2.yaml index eac62727..fc3f5c6f 100644 --- a/kubernetes/talos/patches/k8s-2.yaml +++ b/kubernetes/talos/patches/k8s-2.yaml @@ -19,6 +19,12 @@ machine: addresses: - 10.99.0.2/29 mtu: 9000 + # See k8s-1.yaml for the dummy0 / AnyIP rationale. + - interface: dummy0 + dummy: true + addresses: + - 10.2.99.0/24 + - fd99::/64 install: disk: /dev/vda certSANs: diff --git a/kubernetes/talos/patches/k8s-3.yaml b/kubernetes/talos/patches/k8s-3.yaml index 08ee28b0..a1e42cf5 100644 --- a/kubernetes/talos/patches/k8s-3.yaml +++ b/kubernetes/talos/patches/k8s-3.yaml @@ -19,6 +19,12 @@ machine: addresses: - 10.99.0.3/29 mtu: 9000 + # See k8s-1.yaml for the dummy0 / AnyIP rationale. + - interface: dummy0 + dummy: true + addresses: + - 10.2.99.0/24 + - fd99::/64 install: disk: /dev/vda certSANs: diff --git a/kubernetes/talos/patches/k8s-edge.yaml b/kubernetes/talos/patches/k8s-edge.yaml index 9afbcdf3..800038a5 100644 --- a/kubernetes/talos/patches/k8s-edge.yaml +++ b/kubernetes/talos/patches/k8s-edge.yaml @@ -29,6 +29,18 @@ machine: dhcp: true dhcpOptions: routeMetric: 4096 + # Dummy interface claiming the BGP-pool prefixes so the kernel sees + # LB VIPs as locally owned. Cilium's eBPF LB intercepts TCP/UDP but + # not ICMP/ICMPv6, so ICMP to an LB VIP otherwise hits the kernel + # routing path, gets forwarded out the default route, and loops + # back via BGP until hop-limit exceeded. With the LB prefixes on + # dummy0 the kernel answers directly. AnyIP routing pattern; see + # cilium-ebpf-lb-icmp-ttl-loop-quirk wiki note. + - interface: dummy0 + dummy: true + addresses: + - 10.2.99.0/24 + - fd99::/64 install: disk: /dev/vda certSANs: