Selenium 4 Chrome Node无法正常注册到Hub问题排查求助
问题根因
- 版本不兼容:你部署的Selenium Hub版本是4.1.0,Node版本是4.0.0,Selenium Grid 4的早期迭代版本对跨版本通信支持极差,不同小版本的事件总线、注册协议存在不兼容情况,会导致Hub无法识别Node发送的注册请求。
- Node上报地址无法被Hub解析:Node配置的
SE_NODE_HOST值为node-chrome,但你集群中对应Node的Service名称为selenium-node-chrome,node-chrome并不是集群内可解析的DNS记录,Hub收到Node的注册请求后,需要回调上报的http://node-chrome:5555地址验证Node可用性,解析失败就会丢弃注册请求,也不会返回注册成功响应。 - 可选排查项:如果你的Openshift集群开启了默认网络策略限制,需要确认
selenium-hub和selenium-node-chrome两个服务所在命名空间的Pod之间,4442、4443、5555端口的通信是放行状态。
修复方案
- 统一Hub和Node的版本:将Hub的镜像从
selenium/hub:latest改为和Node一致的selenium/hub:4.0.0-20211102,避免版本兼容问题。 - 修改Node的
SE_NODE_HOST环境变量取值:将原来的node-chrome改为集群内可解析的地址,推荐直接填Node Service的名字selenium-node-chrome。 - 手动验证通信:进入Hub Pod,执行
curl http://selenium-node-chrome:5555/status确认可以正常访问Node的状态接口;进入Node Pod,执行curl http://selenium-hub:4444/status确认可以正常访问Hub接口。 - 重启两个DeploymentConfig后观察日志,正常情况下Node发送1次注册请求后就会收到Hub的成功响应,不会重复发送注册请求。
内容的提问来源于stack exchange,提问作者Jakob Wilmesmeier
相关产品推荐
相关产品推荐

