导语:记录一下k8s中因为LoadBalancer产生的问题
端口是80返回404 page not found 改成800就可以访问了。
抓包可以看到请求是进来了
404 page not found 并不是nginx返回 说明没到nginx 。以为是被劫持了。
换800端口测试就可以
k3s kubectl edit daemonset svclb-traefik -n kube-system
这里的确是用的hostPort
参考文档https://zhuanlan.zhihu.com/p/266422557
如下图 也是通过nodeport开放的slb-traefik 访问ip:80 也会通过traefik转发到pod。
感觉像是80的流量都需要通过traefik 转发一下。
定义:LoadBalancer: 在使用一个集群内部IP地址和在NodePort上开放一个服务之外,向云提供商申请一个负载均衡器,会让流量转发到这个在每个节点上以:NodePort的形式开放的服务上。在公有云环境下,当购买或指定一个负载均衡器时,云平台将为用户分配一个IP地址,通过这个IP地址就能实现LoadBalancer
宿主机ip被当作类似cluster-ip,负载均衡的方式使用了。
查看Metallb介绍
https://zhuanlan.zhihu.com/p/103717169
Metallb在Layer2模式下,会从k8s节点中选一个Leader节点,我这里是单节点,在这个节点上面响应LB地址段的ARP请求,从而使上层路由把发往LB的流量都发到Leader节点。
按照上面的解释就有点能解释通了。发往172.16.20.3的请求,即发往LB的流量,通过上层路由被转发到了trafik。