Open hown3d opened 2 months ago
Related issue and commit in the cilium repository.
Cilium has a hidden flag called --local-max-addr-scope
which is by default to scope link (253) - 1
after v1.13.
IP addresses on a devices with scope higher than link (e.g. scope host like the apiserver-proxy creates) will be skipped.
How to categorize this issue?
/area networking /kind bug
What happened: When running Cilium as a kube-proxy replacement and the eBPF datapath is chosen (will be introduced with https://github.com/gardener/gardener-extension-networking-cilium/pull/350) the
lo
device will be ignored to search for host addresses https://github.com/cilium/cilium/blob/9d631b91ad4d2c146d3decbfcfc39968764eb539/pkg/datapath/linux/devices.go#L32-L38 Running without a network overlay let's request inside containers againsthttps://kubernetes
time-out.This currently isn not reproducible when running without overlay because bpf-masquerade get's disabled in that case: https://github.com/gardener/gardener-extension-networking-cilium/blob/e6d1fcc9e77f3eb52683955d2144a064e3741b88/charts/internal/cilium/charts/config/templates/configmap.yaml#L335-L337
Cilium will fallback to the legacy implementation of hostrouting instead of using the eBPF datapath:
tcp-dump of cilium managed node (100.83.126.209 is the service IP of kube-apiserver)
cilium-dbg output
What you expected to happen: Pods are able to access the kube-apiserver via service discovery
How to reproduce it (as minimally and precisely as possible): Create a shoot without overlay and enable the kube-proxy replacement. Either:
enable-bpf-masquerade: true
to the cilium-config configmap in kube-systemor
Example shoot spec to reproduce:
Anything else we need to know?:
Environment:
kubectl version
): 1.29.16