L2 Announcement
L2 Announcements is a feature which makes services visible and reachable on the local area network. This feature is primarily intended for on-premises deployments within networks without BGP based routing such as office or campus networks.
When used, this feature will respond to ARP/NDP queries for ExternalIPs and/or LoadBalancer IPs. These IPs are Virtual IPs (not installed on network devices) on multiple nodes, so for each service one node at a time will respond to ARP/NDP queries and respond with its MAC address. This node will perform load balancing with the service load balancing feature, thus acting as a north/south load balancer.
- Can be used to advertise L2 (MAC) addresses
- No need to run BGP
- Nodes will respond to arp requests for IP addresses of services
Enable L2 Announcement
kubeProxyReplacement: true
l2Announcements:
# -- Enable L2 pod announcements
enabled: true
After enabling L2 accouncements, create a policy (Policies provide fine-grained control over which services should be announced, where, and how.):
apiVersion: "cilium.io/v2alpha1"
kind: CiliumL2AnnouncementPolicy
metadata:
name: policy1
spec:
serviceSelector:
matchLabels:
color: blue
nodeSelector:
matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: DoesNotExist
interfaces:
- ^eth[0-9]+
externalIPs: true
loadBalancerIPs: true
Useful commands
$ kubectl -n kube-system get lease