yyuan9 由于没有三层交换机的权限,无法使用BGP,希望使用Layer2来实现Porter负载均衡。但是在文档中看到“限制:客户端通过Eip连接服务端时会存在单点故障, Eip的所有流量都会发往同一个Node“,请问有办法即使用Layer2又能够做到多个Node的负载均衡吗?
duanjiong 这里可能是表述上有点误解。 使用layer2的时候, 由于是通过arp来应答下一跳信息的, 所以只能做到一个ip地址对应一个节点, 所以访问相同的service就会都被发往同一个节点。 但是不同service, 他们的ip不同, 互不干扰, 是随机选择节点,可能会被发往其他不同节点。
willqy Porter跟metallb很像,我在metallb上测试,关掉一个node 5分钟后eip可以恢复正常,这5分钟是master节点将故障node置为不用的时间。 是不是lb自己没有故障恢复手段,要依赖k8s节点超时才能自动完成故障切换?不知道porter lb是不是也这样,我验证下。
duanjiong https://github.com/kubesphere/porter/issues/137#issuecomment-739240287 有个issue记录, 这个是个bug, 节点挂了之后, 没有把notready的节点过滤掉, 所以有你这个问题, 你把externaltraficpolicy设置成local再测试一下, 这个问题我会修复的
duanjiong yyuan9 应用多副本可以分布在不同节点, 只是外部流量会通过同一个节点转发, 所以问题在这个转发节点这里, 如果你得转发节点没down掉, 应用还是可以访问得, 就算转发节点down掉了, layer2还是可以将转发节点切换为集群其他节点, 所以最终问题是转发节点同一个service只会有一个,这就是他得限制所在。