Kubernetes部署Selenium 4.0时chrome节点向hub注册失败问题求助
问题根因
Selenium Grid 4 基于事件总线实现Hub与节点的通信,依赖4442(事件发布端口)、4443(事件订阅端口)两个核心端口,你当前的Hub配置未暴露这两个端口,导致节点的注册请求无法送达Hub,这是注册失败的核心原因。
具体修改方案
1. 调整Hub的ReplicaSet配置
在Hub的容器端口列表中新增4442、4443端口声明,修改后的Hub-deployment.yaml示例:
apiVersion: apps/v1 kind: ReplicaSet metadata: name: selenium-hub spec: selector: matchLabels: app: selenium-hub replicas: 1 template: metadata: labels: app: selenium-hub spec: containers: - name: selenium-hub image: selenium/hub:4.0 imagePullPolicy: IfNotPresent ports: - containerPort: 4444 # 新增事件总线端口 - containerPort: 4442 - containerPort: 4443 resources: limits: cpu: 1000m memory: 1000Mi requests: cpu: 50m memory: 100Mi imagePullSecrets: - name: regcred
2. 调整Hub的Service配置
在Hub的Service中新增4442、4443端口的暴露规则,修改后的hub-service.yaml示例:
apiVersion: v1 kind: Service metadata: name: selenium-hub spec: ports: - name: "selenium-hub" port: 4444 targetPort: 4444 # 新增事件发布端口 - name: "event-publish" port: 4442 targetPort: 4442 # 新增事件订阅端口 - name: "event-subscribe" port: 4443 targetPort: 4443 selector: app: selenium-hub type: ClusterIP
3. 可选优化配置
- 节点配置中的
HUB_HOST、HUB_PORT是Selenium 3的遗留环境变量,Selenium 4中不需要,可以删除避免配置冲突 - 建议将ReplicaSet替换为Deployment,更适合K8s中应用的日常管理、滚动更新
验证方法
重新Apply修改后的Hub配置,待Hub启动完成后重启Chrome节点,即可在Hub日志中看到节点注册成功的记录,访问http://<Hub访问地址>:4444/ui可以直观查看已注册的节点信息。
内容的提问来源于stack exchange,提问作者sunil
相关产品推荐
相关产品推荐

