新闻详情

新闻详情

首页 / 资讯中心 / 详情

Kubernetes 如何用 make test-integration 运行 test/integration 集成测试

发布时间:2026/9/9 19:15:43来源:尧图网络
Kubernetes 如何用 make test-integration 运行 test/integration 集成测试
Kubernetes 如何用 make test-integration 运行 test/integration 集成测试【免费下载链接】kubernetesProduction-Grade Container Scheduling and Management项目地址: https://gitcode.com/GitHub_Trending/kuber/kubernetes在 Kubernetes 仓库中开发组件逻辑后通常需要跑一轮集成测试来验证这些测试位于各模块下的test/integration目录如 test/integration/它们会真实拉起一个本地 etcd 实例在接近运行时的环境中执行 API 写入、控制器逻辑等操作而不是仅跑单元测试。仓库提供了一个统一入口make test-integration它会自动准备 etcd、发现所有待测包、执行go test并在结束后清理环境。本文说明如何从准备 etcd 到完成一次完整的集成测试运行。前提条件etcd 必须在 PATH 中集成测试依赖一个真实的 etcd 进程。hack/make-rules/test-integration.sh 在开始测试前会执行checkEtcdOnPath如果which etcd找不到 etcd脚本会直接报错退出并提示用hack/install-etcd.sh安装一份副本。脚本还要求jq在 PATH 中kube::util::require-jq用于解析 workspace 模块列表。如果你没有 etcd可以在仓库根目录运行hack/install-etcd.sh该脚本会下载 etcd 并解压到仓库的third_party/目录下hack/install-etcd.sh 注释说明其用途是convenience to download and install etcd in third_party。注意它的副作用会从网络下载二进制包并解压写入third_party/目录。脚本结束时如果当前 PATH 中没有third_party/etcd会打印一行export PATH...提示把该目录加入 PATH 后再运行测试。hack/lib/etcd.sh 中定义的检查逻辑还会验证本机 etcd 版本不低于要求的最低版本脚本中默认ETCD_VERSION3.7.1不足时会尝试使用third_party/etcd中的副本仍不足则报错etcd version ... or greater required.默认端口2379必须空闲否则报unable to start etcd as port 2379 is in use需要先停掉占用该端口的进程再重试在 arm 架构机器上会自动导出ETCD_UNSUPPORTED_ARCHarm。所有脚本都要从 Kubernetes 仓库根目录运行见 hack/README.md 中 all scripts must be run from the Kubernetes root directory。完整运行make test-integration在仓库根目录直接运行make test-integration该目标定义在 Makefile即build/root/Makefile的符号链接中实际执行KUBE_TEST_ARGS$(value KUBE_TEST_ARGS) hack/make-rules/test-integration.sh $(WHAT)KUBE_TEST_ARGS以显式取值方式传递目的是保留值中的美元符号例如-run正则中的$$不被 make 提前展开。脚本内部按以下顺序工作见 hack/make-rules/test-integration.sh设置两个环境变量KUBE_CACHE_MUTATION_DETECTORtrue默认开启缓存变更检测器便于发现 cache mutator 问题KUBE_PANIC_WATCH_DECODE_ERRORfalse集成测试会故意插入无法解码的数据避免解码错误触发 panic。通过kube::test::find_integration_test_pkgs枚举当前 Go workspace 中所有模块收集各模块下存在测试文件的test/integration包作为测试目标列表。启动本地 etcdkube::etcd::start默认监听127.0.0.1:2379数据目录使用临时目录启动后等待/health就绪并做一次写操作确认同时开始周期性抓取 etcd metrics。以make -C ${KUBE_ROOT} test运行测试默认参数--shorttrue默认超时KUBE_TIMEOUT-timeout600s。结束后cleanup停止 etcd 进程并删除临时数据目录trap cleanup EXIT保证中途中断时也会执行清理。缩小范围用 WHAT 和 KUBE_TEST_ARGS 只跑部分测试test-integration目标支持两个参数Makefile 中的帮助文本WHAT要测试的目录名这些目录下所有*_test.go都会被运行不指定时运行全部发现的集成测试包。KUBE_TEST_ARGS透传给底层go test的参数。Makefile 中给出的两个官方示例# 只跑 kubelet 的集成测试并收集覆盖率 make test-integration WHAT./test/integration/kubelet GOFLAGS-v -coverpkg./pkg/kubelet/... KUBE_COVERy # 只跑 pods 目录中指定的单个测试函数 make test-integration WHAT./test/integration/pods GOFLAGS-v KUBE_TEST_ARGS-run ^TestPodUpdateActiveDeadlineSeconds$$第二个示例值得注意KUBE_TEST_ARGS的值在 shell 层用单引号包裹其中的$$在 make 展开后变成 go test 正则所需的$锚定符——这正是显式传$(value KUBE_TEST_ARGS)以保留美元符号这条注释的用途。想定位某个失败场景时用这种方式精确过滤到单个测试函数比全量跑完整个test/integration树快得多。另外可用KUBE_INTEGRATION_TEST_MAX_CONCURRENCY控制并行度设为大于 0 的值时脚本会把GOMAXPROCS设为该值并打印Setting parallelism to ...默认为-1不做限制。超时默认 600 秒可通过KUBE_TIMEOUT覆盖。如何判断运行成功正常运行时脚本会依次打印Starting etcd instance、Running integration test cases等状态日志测试本身按go test的常规输出展示各包结果make test的退出码即最终结果——任何一个包失败整个命令以非零码结束。测试全部通过后脚本自动执行Cleaning up etcd并打印Integration test cleanup complete说明 etcd 进程已被停止、临时数据目录已清理不会留下残留进程。如果卡在启动阶段而非测试失败优先检查两个前置问题which etcd是否可用以及 2379 端口是否被占用hack/lib/etcd.sh 中kube::etcd::validate对这两种情况都会给出对应的明确报错。限制说明该入口面向本地开发环境它会自行启动、使用并停止一个本地 etcd只覆盖test/integration目录下的包不包含 e2e 或 node 测试。etcd 版本低于 3.7.1hack/lib/etcd.sh中的ETCD_VERSION默认值时无法运行需按上文安装或自行提供满足版本要求的 etcd。由于脚本会在结束后清理 etcd 临时数据不要把ETCD_DIR指向需要保留数据的目录hack/lib/etcd.sh 中kube::etcd::clean_etcd_dir会删除ETCD_DIR。完成一次全量make test-integration并确认所有包通过后集成测试层面的验证就告一段落改动较大或提交 PR 前仓库惯例是再运行hack/verify-all.sh做整体校验见 hack/README.md。【免费下载链接】kubernetesProduction-Grade Container Scheduling and Management项目地址: https://gitcode.com/GitHub_Trending/kuber/kubernetes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

出生医学证明公证办理全攻略:材料清单、流程步骤与常见问题详解 2026/9/9 20:00:51

出生医学证明公证办理全攻略:材料清单、流程步骤与常见问题详解

摘要:出生医学证明公证是涉外场景高频用到的文书,很多人分不清出生医学证明公证和出生公证,不清楚材料准备、线上线下办理方式,也容易在翻译、认证环节踩坑。本文结合大众高频搜索问题,梳理出生医学证明公证基础常识、…

阅读更多 →
Unity游戏打包成zip:从项目结构到压缩与分发全攻略 2026/9/9 20:00:51

Unity游戏打包成zip:从项目结构到压缩与分发全攻略

简介:面向Unity初学者的古迹探险游戏成品包,基于Unity与C#开发,定位为可直接运行的完整样例,适合想了解游戏发布后文件构成、体验小型探险玩法的新手。压缩包共184个文件,大小64.08MB,包含94个dll库文件、6…

阅读更多 →
Ruflo / Claude Flow V3 CLI 现代化改造指南:模块化命令、交互式提示与智能 Hooks 工作流 2026/9/9 20:00:51

Ruflo / Claude Flow V3 CLI 现代化改造指南:模块化命令、交互式提示与智能 Hooks 工作流

Ruflo / Claude Flow V3 CLI 现代化改造指南:模块化命令、交互式提示与智能 Hooks 工作流 【免费下载链接】ruflo 🌊 The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversat…

阅读更多 →
2026年身份证公证出国办理流程:线上操作、材料与新政策变化 2026/9/9 20:00:51

2026年身份证公证出国办理流程:线上操作、材料与新政策变化

摘要:2026年留学、移民、境外办事人群,常需要办理身份证涉外公证。由于海外机构无法核验国内身份证真伪,该公证成为跨境办事核心材料。本文结合2026年新政策,详解身份证出国公证的适用场景、必备材料、线上办理完整流程、平台挑选…

阅读更多 →
论文降AI率工具实测:10款主流工具对比与避坑指南 2026/9/9 20:00:51

论文降AI率工具实测:10款主流工具对比与避坑指南

每年三四月份,我的微信就会涌入一批“论文救急”的消息。今年有个学弟直接把检测报告截图甩过来,上面一行红字“AIGC疑似比例 43%”,配文是“姐,这还有救吗”。我看了下他那段文字,典型的AI生成特征:句式工…

阅读更多 →
零基础用AI编程实战:从需求描述到调试,跑通你的第一个项目 2026/9/9 19:57:51

零基础用AI编程实战:从需求描述到调试,跑通你的第一个项目

常有人问我:零基础的人能不能用AI写出一个真正能运行的项目?我的回答一直是能,但前提是你要先把AI当成一个“水平不错但特别需要你把需求讲清楚的外包程序员”,而不是什么魔法水晶球。这篇内容就是围绕这个核心思路展开的&#xf…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞