百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

在 K8S 中运行 Locust 与 Selenium:安装 Chrome 和 ChromeDriver

ninehua 2025-01-06 14:44 69 浏览

在现代软件开发中,性能和用户体验是至关重要的,而负载测试和自动化测试可以帮助我们实现这一目标。在本文中,我们将讨论如何在 Kubernetes 环境中运行 Locust 和 Selenium,并详细介绍如何安装 Chrome 和 ChromeDriver。

1. Dockerfile 配置

首先,我们需要创建一个 Dockerfile,以构建一个包含 Locust 和 Selenium 的 Docker 镜像。以下是 Dockerfile 的内容:

FROM locustio/locust:2.31.3
# 设置 Chrome 的版本ENV CHROME_VERSION 130.0.6723.69
USER root RUN apt-get update -qq -y && \ apt-get install -y wget unzip && \ apt-get install -y \ libasound2 \ libatk-bridge2.0-0 \ libgtk-4-1 \ libnss3 \ xdg-utils && \ wget -q -O chrome-linux64.zip https://storage.googleapis.com/chrome-for-testing-public/$CHROME_VERSION/linux64/chrome-linux64.zip && \ unzip chrome-linux64.zip && \ rm chrome-linux64.zip && \ mv chrome-linux64 /opt/chrome/ && \ ln -s /opt/chrome/chrome /usr/local/bin/ && \ wget -q -O chromedriver-linux64.zip https://storage.googleapis.com/chrome-for-testing-public/$CHROME_VERSION/linux64/chromedriver-linux64.zip && \ unzip -j chromedriver-linux64.zip chromedriver-linux64/chromedriver && \ rm chromedriver-linux64.zip && \ mv chromedriver /usr/local/bin/
# 设置 Chrome 的配置和缓存目录ENV XDG_CONFIG_HOME=/tmp/.chromiumENV XDG_CACHE_HOME=/tmp/.chromium
COPY . .RUN pip install -r requirements.txt

解释

  1. 基础镜像:使用 locustio/locust 作为基础镜像。

  2. 安装依赖:更新包管理器并安装必要的库,以确保 Chrome 和 ChromeDriver 正常运行。

  3. 下载和安装 Chrome 和 ChromeDriver:从 Google 的存储库下载 Chrome 和 ChromeDriver。https://developer.chrome.com/docs/chromedriver/downloads/version-selection

  4. 配置目录:通过环境变量设置 Chrome 的配置和缓存目录,这一步非常重要。若未设置正确,可能会在 Kubernetes 中出现权限问题,具体参考 https://github.com/hardkoded/puppeteer-sharp/issues/2633

requirements.txt 示例

locust=2.31.3selenium==4.21.0

2. Chrome 选项配置

在使用 Selenium 时,我们需要为 Chrome 配置一些选项,以确保它能够在无头模式下正常工作。以下是获取 Chrome 选项的代码示例:

import platformfrom selenium import webdriver
def is_running_in_linux(): return platform.system() == 'Linux'
def get_chrome_options(): is_in_linux = is_running_in_linux() options_custom = webdriver.ChromeOptions()
# Linux 下的 Chrome 选项 if is_in_linux: options_custom.add_argument("--headless") # 无头模式 options_custom.add_argument('--disable-gpu') # 禁用 GPU 加速 options_custom.add_argument("--no-sandbox") # 禁用沙箱模式 else: options_custom.add_argument("--start-maximized") # 启动时最大化窗口
# 其他通用选项 options_custom.add_argument("--disable-dev-shm-usage") # 解决资源限制问题 options_custom.add_argument("--ignore-ssl-errors=yes") # 忽略 SSL 错误 options_custom.add_argument("--disable-cache") # 禁用缓存
return options_custom

解释

  • 操作系统检测:根据当前操作系统选择适当的 Chrome 选项。

  • 无头模式:在 Linux 环境中使用无头模式,以便在没有图形界面的情况下运行 Chrome。

  • 禁用沙箱:在 Kubernetes 环境中,禁用沙箱模式可以避免潜在的权限问题。


3. Locust 用户定义

下面是一个简单的 Locust 用户示例,使用 Selenium 控制 Chrome 访问特定页面:

from locust import User, task
class GetUrl(User): customdriver = None
def on_start(self): self.customdriver = webdriver.Chrome(options=get_chrome_options())
@task def load_page(self): self.customdriver.get("http://example.com") # 根据需要替换为实际 URL
解释
  • 用户定义:创建一个继承自 User 的类,使用 Selenium 控制 Chrome。

  • 启动时操作:在用户启动时初始化 customdriver

  • 任务定义:在 load_page 方法中执行实际的页面加载操作。


4. Kubernetes 部署

完成 Dockerfile 和代码后,可以将其构建为 Docker 镜像,并在 Kubernetes 中部署。以下是一个基本的 Kubernetes YAML 配置示例:

apiVersion: apps/v1kind: Deploymentmetadata: name: locustspec: replicas: 1 selector: matchLabels: app: locust template: metadata: labels: app: locust spec: containers: - name: locust image: your-docker-image:latest ports: - containerPort: 8089 env: - name: XDG_CONFIG_HOME value: /tmp/.chromium # 设置 Chrome 的配置目录 - name: XDG_CACHE_HOME value: /tmp/.chromium # 设置 Chrome 的缓存目录---apiVersion: v1kind: Servicemetadata: name: locust-servicespec: type: NodePort ports: - port: 8089 targetPort: 8089 selector: app: locust

解释

  • Deployment:定义 Locust 的 Deployment,指定容器镜像和服务端口。

  • Service:创建一个 Service,使外部能够访问 Locust Web 界面。

结论

通过以上步骤,我们成功在 Kubernetes 中运行了 Locust 和 Selenium,并安装了 Chrome 和 ChromeDriver。确保配置正确的环境变量和 Chrome 选项,可以大大提高在 Kubernetes 环境中的稳定性。

关注获取技术分享

相关推荐

苹果发布iTunes 12.3更新下载:支持iOS9正式版双重验证

IT之家讯9月17日凌晨,苹果如约正式推送了iOS9正式版固件更新,不过watchOS2却因为出现了某些关键bug被延期推送。同时,苹果也将iTunes更新至12.3版本,正式支持iOS9的双重验...

别费事了,图文教你用 iTunes 轻松升级 iOS 8

本文是一年前《升级/恢复iOS7图文教程》的2.0版本,其实本文所描述无论是操作流程还是方法都与之类似,你完全可以举一反三,融会贯通的用在iOS8的升级上。关于系统升级的重点设备要...

苹果更新iTunes到12.4版本 界面发生改变

在发布iOS9.3.2正式版更新的同时,还带来了新版的iTunes12.4,这个版本的iTunes改动最大的莫过于导航界面。苹果方面表示,改动后的导航栏有助于用户在不同内容之间更为便捷地切换。更新到i...

iTunes商店走过13年 它不再只专注于音乐

iTunes改变了音乐行业2003年4月28日,苹果开始了一场全新的革命,史蒂夫·乔布斯骄傲地在发布会上宣布iTunesMusicStore(音乐商店)正式开张。或许他早就意识到了...

苹果更新日iTunes也升至 12.3.1 提升稳定性

威锋网讯,今天又是苹果的更新日,除了iOS、OSX和watchOS之外,苹果还对iTunes进行了更新。在当地时间21日,苹果将iTunes更新到了12.3.1。和今天更新的其...

iTunes怎么用?iTunes最详尽使用教程

大家在平常使用iTunes时是不是往往感到很困惑呢?新版的iTunes又该怎么用呢?今天我们就给大家带来最新的iTunes使用教程,让大家再也不会为了“iTunes怎么用”这样的问题而烦恼。说到iTu...

一代传奇落幕,iTunes不再是苹果的宠儿

还有不到24小时,苹果一年一度的WWDC就将在美国旧金山举行。作为2019年的苹果全球开发者的盛宴,软件也势必将依旧是此次活动的核心,而包括全新的iOS13、macOS10.15、watchOS...

修复提权漏洞,苹果推荐用户尽快升级PC版iTunes至12.12.9

IT之家6月2日消息,苹果官方于5月23日发布适用于Win10、Win11的iTunes12.12.9版本更新,重点修复了提权漏洞,并推荐用户尽快安装。根据苹果官网发布的新闻...

iTunes12正式版更新,使用更加轻松惬意

IT之家(www.ithome.com):iTunes12正式版更新,使用更加轻松惬意此次iTunes在iPad发布会过后版本号正式更新到12,本次更新包含多项设计和性能方面的改进,使用iTunes从...

只需要简单几步,普通电脑也可以安装iTunes,尤其是Windows系统

随着苹果电脑、手机的出现,人们习惯了使用苹果系统,但却对Windows系列电脑的使用方法缺乏了解,以iTunes为例,很多用户以为只有苹果电脑或手机可以安装该软件,但实际上并不是这样,本期文章教各位...

古典也流行 苹果推送iTunes新版本12.3.2

Yesky天极新闻2015-12-1211:04:33【Yesky新闻频道消息】苹果近日更新了iTunes到12.3.2版本。苹果为iTunes增加了与iOS9.2AppleMusic相同...

ipad系统太老无法更新怎么办(ipad系统版本太低更新不了)

如果你的ipad已经使用了很多年,可能会遇到一个问题:系统无法更新。这是因为苹果每年都会推出新的iOS或iPadOS版本,但并不是所有的ipad都能支持最新的系统。苹果会根据ipad的硬件性能和用户体...

苹果发布Win10/Win11版iTunes 12.12.8更新

IT之家3月30日消息,苹果于今天发布了适用于Windows平台的iTunes12.12.8版本更新,主要提升了安全性,并添加了对某些新设备的支持。苹果上次更新是在2022年1...

iTunes 12.3.2更新:提升古典音乐浏览体验

这次更新为OSX版iTunes带来了与iOS9.2正式版AppleMusic相同的功能。威锋网12月13日消息数天前苹果推出了iOS9.2正式版,其中预装了最新的...

产品线更丰富,电动汽车制造商Rivian推出R1S SUV和R1T皮卡

来源:环球网【环球网科技综合报道】6月7日消息,电动汽车制造商Rivian近日宣布推出第二代旗舰车型——R1SSUV和R1T皮卡,进一步丰富了其产品线。从性能层面来看,得益于Rivian设计和...