首页
/ SeleniumHQ/docker-selenium 项目中的Kubernetes Chrome节点部署详解

SeleniumHQ/docker-selenium 项目中的Kubernetes Chrome节点部署详解

2025-07-07 01:47:33作者:曹令琨Iris

概述

本文将深入解析SeleniumHQ/docker-selenium项目中用于在Kubernetes集群中部署Chrome浏览器的节点配置。这个YAML文件定义了一个Kubernetes Deployment资源,用于创建和管理Chrome浏览器节点实例,这些节点将连接到Selenium Hub以执行自动化测试任务。

核心配置解析

基础结构

该文件定义了一个标准的Kubernetes Deployment资源,主要包含以下关键部分:

  1. apiVersion:指定使用的Kubernetes API版本(apps/v1)
  2. kind:资源类型为Deployment
  3. metadata:包含部署的名称等元信息
  4. spec:定义部署的具体规格

副本与选择器

replicas: 1
selector:
  matchLabels:
    app: selenium-node-chrome
  • replicas: 1 表示默认创建1个Pod副本
  • selector 定义了如何选择属于此Deployment的Pod

Pod模板

template部分定义了Pod的具体配置:

template:
  metadata:
    labels:
      app: selenium-node-chrome
  spec:
    containers:
      - name: chrome
        image: selenium/node-chrome:4.34.0-20250707
  • 使用selenium/node-chrome:4.34.0-20250707镜像
  • 容器命名为"chrome"

环境变量配置

环境变量是配置Selenium节点的关键部分:

env:
  - name: SE_EVENT_BUS_HOST
    value: "selenium-hub"
  - name: SE_NODE_SESSION_TIMEOUT
    value: "600"
  - name: SE_NODE_OVERRIDE_MAX_SESSIONS
    value: "true"
  - name: SE_REGISTRATION_SECRET
    value: "secret"
  1. SE_EVENT_BUS_HOST:指定Selenium Hub的主机名(selenium-hub)
  2. SE_NODE_SESSION_TIMEOUT:设置会话超时时间为600秒(10分钟)
  3. SE_NODE_OVERRIDE_MAX_SESSIONS:允许覆盖最大会话数限制
  4. SE_REGISTRATION_SECRET:节点注册到Hub时使用的密钥

资源限制与请求

resources:
  requests:
    memory: "1Gi"
    cpu: "0.5"
  limits:
    memory: "2Gi"
    cpu: "2"
  • requests:Kubernetes调度时考虑的最小资源需求
    • 内存:1GB
    • CPU:0.5核
  • limits:容器运行时资源使用上限
    • 内存:2GB
    • CPU:2核

这些值应根据实际测试需求和集群资源情况进行调整。

共享内存配置

volumeMounts:
  - mountPath: /dev/shm
    name: dshm
volumes:
  - name: dshm
    emptyDir:
      medium: Memory
      sizeLimit: 2Gi
  • 创建了一个基于内存的emptyDir卷,挂载到容器的/dev/shm
  • 大小限制为2GB
  • 这种配置对于Chrome浏览器运行至关重要,可以防止共享内存不足导致的崩溃

实际应用建议

  1. 扩展性:可以根据测试负载调整replicas数量
  2. 版本管理:建议固定镜像版本(如示例中的4.34.0-20250707)
  3. 资源调整:根据测试场景调整内存和CPU限制
  4. 安全配置:生产环境应修改默认的SE_REGISTRATION_SECRET
  5. 会话管理:根据测试需求调整SE_NODE_SESSION_TIMEOUT

总结

这个Kubernetes部署文件为在集群中运行Selenium Chrome节点提供了完整的配置方案。通过合理调整资源限制、环境变量和副本数量,可以构建一个稳定可靠的自动化测试环境。理解每个配置项的作用对于优化测试执行和资源利用至关重要。