当我们尝试ping负载均衡器(kubernetes)类型的服务的外部IP时,到底会发生什么?

bvpmtnay  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(107)

我的群集在本地运行。目前,当我尝试ping服务类型LoadBalancer的外部IP时,从Metal LB分配给它。我从托管Pod的其中一个VM收到回复-Destination Host unreachable。这是因为pod在内部kubernetes网络上(我使用calico),无法ping到。对场景的详细解释有助于更好地理解它。所有的服务都按预期进行。我只是好奇知道这背后的确切原因,因为我是新的。任何帮助将不胜感激。谢谢你

2mbi3lxu

2mbi3lxu1#

LoadbalancerIP或External SVC IP永远无法ping通。
当你定义一个类型为LoadBalancer的服务时,你是在说我想在TCP端口8080上监听例如:这个SVC。
这是您的外部SVC IP将响应的唯一内容。
ping是与TCP端口8080的目的地不匹配的UDP UDP UDP数据包。
你可以做一个nc -v <ExternalIP> 8080来测试它。

使用像mtr这样的工具并通过--tcp --port 8080来进行测试

zour9fqk

zour9fqk2#

实际上,在金属LB的安装过程中,我们需要分配一个IP范围,金属LB可以从中分配IP。这些IP必须在您的DHCP网络范围内。例如,在虚拟机中,如果您使用仅主机适配器,则从Virtualbox仅主机适配器DHCP服务器分配网络IP。
金属LB的组分是:
Metallb系统/控制器部署。这是处理IP地址分配的群集范围控制器。金属系统/扬声器daemonset。这是一个组件,它使用您选择的协议来使服务可访问。
当您更改服务类型loadbalancer时,Metal LB将从其IP池中分配一个IP地址,这基本上是Kubernetes内部IP与Metal LB分配的IP的Map。你可以看到这一点,

kubectl get svc  -n namespaces

更多详情请查看document

相关问题