Technical explanation
Kubernetes kube-proxy conventionally implements Service translation and load balancing through either iptables or IPVS. With Cilium’s kube-proxy replacement enabled, eBPF programs and maps perform Kubernetes Service handling directly in the kernel, including ClusterIP, NodePort, LoadBalancer, ExternalIP, and related service translation functions. C is therefore correct.
The replacement can operate at socket hooks and packet-processing hooks. Service and backend information is stored in eBPF maps, allowing the datapath to select backends and perform address translation without traversing the kube-proxy-generated iptables or IPVS rules normally used for Kubernetes Services.
BGP is not replaced. Cilium’s BGP Control Plane is a separate feature used to advertise routes and service addresses to external routers. Routing itself is also not eliminated; Cilium can implement and accelerate routing decisions with eBPF, but packets still require a valid forwarding model. firewalld is a host firewall-management service and is not the underlying Kubernetes Service implementation replaced by kube-proxy replacement.
Relevant installations must satisfy the kernel and device requirements for Cilium’s eBPF service load-balancer functionality.
Official references
Kubernetes Without kube-proxy
Study Guide topic: kube-proxy replacement, eBPF service maps, iptables, and IPVS.