问题:基于K8S的服务部署好了之后,其他页面都跳转正常,但是点击某页面跳转到errpage
介绍一下环境背景:K8S集群有一个master节点,两个node节点,master节点和node A节点在同一台物理机上面,node B节点在另外一台物理机上面;这两台物理机连着同一个交换机
再说一下点击某页面的业务逻辑:点击某页面后,由固定部署在node B节点的api-gateway pod将请求转发给第三方服务系统处理;
当时点击某页面后,跳转到errpage,问前端,前端说只有账号权限不够,才会出现这种情况;于是进数据库查表,发现权限是OK的;以为前端日志也没啥好看的,无非就是返回状态码200,然后打印一些没用的东西;
后面问后端,后端也说权限问题;
最后去看api-gateway的日志,出现一个报错:连接第三方系统的路径超时;
这就好办了;
api-gateway固定在node B 上面,于是登录节点,ping第三方系统ip C,不通;但是不能判定网络不通,有时候不能ping但是可以ssh wget telnet;把这三个命令都试了一遍,都是不通的;
跑到node A和master节点,ping ip C,是OK的;
以为是node B的网卡有问题,在node B上ssh node A、master,是OK的;
查看了这三台机器,网卡配置、路由都是一样的,防火墙也是关闭了的;懵逼了;
本来打算用traceroute命令 但是没有,只有tracepatch
打印的信息也看不出来,到底有没有出网关;
node B所在的物理机和node A、master所在的物理机接着同一台交换机,并且nodeB所在的物理机还有有其他虚机,也是ping不通ip C;
这就很奇怪了,十有八九是这台物理机有问题;
没办法,只能手动规避了,询问了一下前端后端,了解到所有和第三方有关的业务都以api-gateway为入口进行交互;所以就将api-gateway固定调度到node A节点;这样问题就解决了;
在节点A打个标签,kubectl label nodes node-name gateway=gateway然后将该pod调度过去
curl -X POST -d '{}' "路径"



