❯ 如何查看某个 eip 由哪个节点的 speaker 在宣告?
● 有几种方式,按易用性排列:
- 查看 Service 的 Events(最简单)
kubectl describe svc <service-name> -n <namespace> | grep "nodeAssigned"
输出类似:
Events:
Normal nodeAssigned ... announcing from node "xs4772" with protocol "layer2"
- 查看 Speaker 的 metrics
在任意节点上 curl speaker 的 metrics 端口
curl -s http://<node-ip>:7472/metrics | grep metallb_speaker_announced
metallb_speaker_announced{...} 1 表示该节点正在宣告对应服务。
- 查看 ServiceL2Status CRD
kubectl get servicel2status -n metallb-system
MetalLB 会为每个 L2 宣告的服务创建 status 对象,里面包含宣告节点信息。
- 直接查 ARP(网络层验证)
从集群外或其他节点
arping -c 1 <EIP>
回复的 MAC 地址对应哪个节点的 bond0,那就是当前 owner。