大佬们,能问大家一个问题吗
我们这边使用k8s部署的开发环境(单master节点,master节点同时作为工作节点),其中MySQL也是使用k8s部署的
现在的问题是,从外部访问MySQL(8.3.0版本)的时候会出现连接持续一段时间后就失效了,具体现象是查询会有很长的超时等待,重新建立连接后恢复。
这个问题只有从外部访问MySQL的时候会出现,我们把应用部署到k8s中,应用通过k8s的集群内网连接不会出现这个问题。
外部访问是通过NodePort端口访问的,内部访问是通过Headless访问的。
同样方式部署在开发环境的Redis不会有这个问题。
补充:
MySQL只部署了1个pod。
目前发现问题应该是和NodePort有关,因为尝试直接用hostPort的方式访问的时候问题就消失了。
所以现在的问题是,NodePort这里发生了什么?同样使用NodePort端口访问的Redis没有这个问题。
MySQL 部署了几个 pod?推荐阅读:Load balancing and scaling long-lived connections in Kubernetes
如果部署了多个 pod,建议改为1个pod试试
感谢大佬,因为是开发环境,只部署了1个pod。
@JXPanda: 用的是什么操作系统?
有没有在本机用公网ip进行访问过?先排除是不是dns解析问题
这个等我测试一下,但是似乎应该不是dns的问题,因为刚才我们改为用hostPort的方式暴露端口,然后问题就消失了。
@JXPanda: 那可能你使用的Kubernetes网络插件(如Flannel、Calico、Weave等)在外部访问时存在一些兼容性问题,可能会导致网络流量的不稳定,你用Ingress代替NodePort试试,没问题的话就用Ingress吧
@sudebao点com: 感谢大佬,我去折腾一下试试