前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试Kubernetes的一致性是否让你摸不着头脑?在测试运行时获取进度更新

测试Kubernetes的一致性是否让你摸不着头脑?在测试运行时获取进度更新

作者头像
CNCF
发布2019-12-23 18:09:17
1.5K0
发布2019-12-23 18:09:17
举报
文章被收录于专栏:CNCF

客座文章最初发表在Sonobuoy上,作者John Schnake

在Sonobuoy 0.15.4中,我们引入了插件通过使用可定制的webhook向Sonobuoy报告插件进展的功能。报告状态对于运行Kubernetes一致性测试的长时间运行的、不透明的插件(如e2e plugin)非常重要。

我们很高兴地宣布,从Kubernetes 1.17.0开始,Kubernetes端到端(E2E)测试框架将利用这个webhook来提供关于将运行多少测试、已经运行了多少测试以及哪些测试失败的反馈。

这个反馈可以帮助你在等待整个运行完成之前查看测试是否失败(以及哪些测试失败)。它还帮助你确定测试是死了的还是正在进行的。

如何使用它

在e2e插件中使用这个特性有两个要求:

  • 所使用的一致性镜像必须符合Kubernetes 1.17或更高版本
  • 必须使用Sonobuoy 0.16.5或更高;我们在0.17.0之前添加了这个支持,以支持预发布版本的Kubernetes。

首先,运行以下命令来运行e2e插件,这将启动一组长期运行的测试:

代码语言:javascript
复制
$ sonobuoy run

现在,你可以轮询状态使用这个命令:

代码语言:javascript
复制
$ sonobuoy status --json | jq

测试开始运行后,你将开始看到输出,其中包括如下部分:

代码语言:javascript
复制
{
    "plugin": "e2e",
    "node": "global",
    "status": "running",
    "result-status": "",
    "result-counts": null,
    "progress": {
        "name": "e2e",
        "node": "global",
        "timestamp": "2019-11-25T17:21:32.5456932Z",
        "msg": "PASSED [sig-storage] HostPath should give a volume the correct mode [LinuxOnly] [NodeConformance] [Conformance]",
        "total": 278,
        "completed": 2
    }
}

瞧!在运行期间的任何时候,你现在都可以检入并获得有关运行情况的更多信息。当测试失败时,输出还将返回一个字符串数组,其中包含failure字段中的测试名称(“msg”字段只报告最后一次测试完成及其结果)。例如:

代码语言:javascript
复制
    {
      ...
      "progress": {
        ...
        "msg": "FAILED [sig-network] [Feature:IPv6DualStackAlphaFeature] [LinuxOnly] should create service with ipv4 cluster ip [Feature:IPv6DualStackAlphaFeature:Phase2]",
        ...
        "failures": [
          "[sig-network] [Feature:IPv6DualStackAlphaFeature] [LinuxOnly] should create service with ipv4 cluster ip [Feature:IPv6DualStackAlphaFeature:Phase2]"
        ]
      }
    },

问答

问:我使用的是Kubernetes的一个新版本,但是我使用的是一个高级测试配置,我将它存储为一个YAML文件。我还可以得到进度更新吗?

答:可以,e2e插件只有两个环境变量需要设置,这样就能工作:

代码语言:javascript
复制
- name: E2E_USE_GO_RUNNER
  value: "true"
- name: E2E_EXTRA_ARGS
  value: --progress-report-url=http://localhost:8099/progress

E2E_USE_GO_RUNNER值确保一致性测试镜像使用基于Golang的runner,该runner允许在调用测试时传递额外的参数。E2E_EXTRA_ARGS值设置标记,通知框架将进度更新发送到何处。

状态更新只是发送到localhost,因为测试容器和Sonobuoy sidecar位于同一个pod中。

问:我想尝试这个功能,但没有可用的Kubernetes 1.17.0集群;如何测试它?

答:重要的是一致性测试镜像是1.17或更高版本,所以如果你只是想试试,你可以手动指定镜像版本。由于测试镜像版本和API服务器版本不匹配,结果可能不可靠(例如,可能测试你的集群不支持的特性),并且对于Kubernetes一致性认证无效。

https://www.cncf.io/certification/software-conformance

可以指定运行Sonobuoy时要使用的版本;这里有一个例子:

代码语言:javascript
复制
sonobuoy run --kube-conformance-image-version=v1.17.0-beta.2

问:我想在我自己的自定义插件中实现进度更新。怎么做呢?

答:要查看此功能的示例用法,请查看progress reporter的自述文件。Sonobuoy sidecar会一直监听你的插件是否要发送进度更新,所以只要把一些JSON数据发送到预期的端点就可以了。

https://github.com/vmware-tanzu/sonobuoy/tree/master/examples/plugins/progress-reporter

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档