有人能解释一下MetalLB是如何在Kubernetes环境中获取IP地址的吗?我已经在GCP计算引擎中安装了Kubernetes集群。我在MetalLB ConfigMap中提供了一系列内部IP地址。
NAME STATUS INTERNAL-IP EXTERNAL-IP
instance-1 Ready 10.140.0.20 56.169.53.26
instance-2 Ready 10.140.0.21 57.11.92.241
instance-3 Ready 10.140.0.22 54.7.255.253在我的例子中,我在CM中给出的IP范围是10.140.0.30-10.140.0.40。
它按预期工作,但我想知道MetalLB get的IP地址是如何工作的。
发布于 2021-07-05 11:34:58
总结一下我的意见:
第二层模式下的MetalLB是在每个节点上部署一个对ARP(IPv4)和NDP(IPv6)请求响应的扬声器Pod。
如果您现在连接到IP,您的Kubernetes服务通过type: LoadBalancer从您在MetalLB配置中定义的范围获得,您的客户端将向网络发送一个arp请求who-has <IP-Service>, tell <IP-Client>。由于议长Pods正在监听arp-请求,他们将使用reply <IP-Service> is-at <node-MAC-address-of-the-leader>进行应答。
这并不意味着,您的Pod运行在解决Mac地址的节点上,只有MetalLB“领导者”在这个节点上运行。你的请求将传递给库贝代理,它知道你的波德住在哪里。
还请记住:
从这个意义上说,第二层
不实现负载平衡器.相反,它实现了故障转移机制,以便在当前的领导节点因某种原因而失败时,不同的节点可以接管。
https://metallb.universe.tf/concepts/layer2/#load-balancing-behavior
https://stackoverflow.com/questions/68224438
复制相似问题