方便kubectl get 看下你的service以及bird所在机器执行下ip route ?
Porter+Bird作为负载均衡器,网络无法正常访问
既然你能够ping通, 那你可以先尝试在bird上抓取icmp数据包, 看是否数据包是否到达bird? 然后再检查下bird上的路由
- 已编辑
duanjiong service 信息如下,帮忙分析下哇 谢谢
[root@node1 anderson]# kubectl describe service spring-k8s-configmap-demo -n a111
Name: spring-k8s-configmap-demo
Namespace: a111
Labels: app=spring-k8s-configmap-demo
s2ibuilder=spring-k8s-configmap-demo-b2i-n3f8
version=v1
Annotations: lb.kubesphere.io/v1alpha1: porter
protocol.porter.kubesphere.io/v1alpha1: bgp
Selector: app=spring-k8s-configmap-demo,s2ibuilder=spring-k8s-configmap-demo-b2i-n3f8,version=v1
Type: LoadBalancer
IP: 10.233.1.17
LoadBalancer Ingress: 192.168.100.13
Port: http-8080 8080/TCP
TargetPort: 8080/TCP
NodePort: http-8080 31654/TCP
Endpoints: 10.233.96.3:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
[root@node1 anderson]# kubectl get service spring-k8s-configmap-demo -n a111
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
spring-k8s-configmap-demo LoadBalancer 10.233.1.17 192.168.100.13 8080:31654/TCP 12d
bird服务器的ip route
root@ubuntu:~# ip route
default via 192.168.1.1 dev eno4 onlink
10.42.0.0/24 dev cni0 proto kernel scope link src 10.42.0.1
10.42.1.0/24 via 10.42.1.0 dev flannel.1 onlink
10.42.2.0/24 via 10.42.2.0 dev flannel.1 onlink
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev br-f400fe52ff88 proto kernel scope link src 172.18.0.1 linkdown
172.19.0.0/16 dev br-c017bbc440d4 proto kernel scope link src 172.19.0.1 linkdown
172.20.0.0/16 dev br-f7149e2e2c8c proto kernel scope link src 172.20.0.1 linkdown
172.21.0.0/16 dev br-a5eedf8a78e9 proto kernel scope link src 172.21.0.1 linkdown
172.22.0.0/16 dev br-67fa49e9bef5 proto kernel scope link src 172.22.0.1 linkdown
192.168.1.0/24 dev eno4 proto kernel scope link src 192.168.1.106
192.168.100.13 proto bird
nexthop via 172.20.0.2 dev br-f7149e2e2c8c weight 1 linkdown
nexthop via 192.168.1.118 dev eno4 weight 1
nexthop via 192.168.1.124 dev eno4 weight 1
duanjiong 在bird服务器上使用tcpdump抓包,发现HTTP请求没有response。
看下 kubectl get nodes -o yaml
我看你只有两个节点,但是ip route显示nexthop有三条,其中有一条路由是这个nexthop via 172.20.0.2 dev br-f7149e2e2c8c weight 1 linkdown, 可能是这个导致不通, 你这个172.20.0.2哪里来得? 可以得话, 你可以尝试重新创建一个service, 贴下新service得event
- 已编辑
那这个service暴露是没问题的, 你需要检查下你bird那台机器ip forward是否开启。 另外, 你需要确认下你windows这台机器ping 192.168.100.13会经过bird, 如果以上步骤都确认完了, 不应该会有问题的。
duanjiong bird 服务器ip forward检查
我把eip-pool 从192.168.100.0/24换到10.0.0.0/24就可以了 这是什么原因呢? 我局域网的IP地址范围是192.168.1.0/24
- 已编辑
还是你的路由问题, 你这种使用方式建议你吧kube-proxy的strictARp给打开然后再用192.168.1.0/24这个网段的eip
duanjiong strictARP一直是false的
- 已编辑
duanjiong 遇到另一个问题咨询下
- 创建服务,部署落到了主机A,loadbanlance使用porter+bgp做负载均衡器,能正常访问服务
- 将主机A停止调度后,重新部署该服务,此时外部IP能ping通,但是不能访问服务,报错
Connection refused
,在bird主机查看ip route也是正常的
AndersonYangOh 直接通过nodeport访问?
AndersonYangOh 这里我说错了, 可以把strictARP设置为true
duanjiong 通过负载均衡器,port bgp访问
duanjiong 好 我试一下