在具有节点异味的K8S集群上运行Sonobuoy e2e测试的解决方法

时间:2019-11-26 09:32:58

标签: kubernetes e2e-testing

我正在尝试使用Sonobuoy运行端到端Kubernetes测试,但是如果其中一个节点具有自定义污点(NoSchedule),我会得到

Nov 26 08:31:14.626: INFO: >>> kubeConfig: /tmp/kubeconfig-744133672
Nov 26 08:31:14.635: INFO: Waiting up to 30m0s for all (but 0) nodes to be schedulable
Nov 26 09:01:14.652: INFO: Unexpected error occurred: timed out waiting for the condition
Failure [1800.028 seconds]
BeforeSuite] BeforeSuite 
/workspace/anago-v1.12.1-beta.0.52+4ed3216f3ec431/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/test/e2e/e2e.go:137

Expected error:
<*errors.errorString | 0xc4200836b0>: {
s: "timed out waiting for the condition",
}
timed out waiting for the condition
not to have occurred

/workspace/anago-v1.12.1-beta.0.52+4ed3216f3ec431/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/test/e2e/e2e.go:175

Kubernetes版本为1.12。如果我删除测试群集中的污点,则E2E测试成功通过。

我发现它已在1.17版本中修复(请参阅:https://github.com/vmware-tanzu/sonobuoy/issues/599 https://github.com/kubernetes/kubernetes/issues/74282 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.17.md

是否有一种解决方法可以在具有节点污点的生产1.12 Kubernetes集群上运行e2e测试?当然,等待1.17版本和集群升级除外。

1 个答案:

答案 0 :(得分:0)

我认为针对1.17之前的kubernetes版本有一种解决方法。


kubernetes版本v1.16 上,您可以运行Sonobuoy(Sonobuoy版本v0.16.1或更高版本),并提供以下测试框架标志:--allowed-not-ready-nodes=1

  • 然后测试框架允许1个节点(受污染的节点)“未就绪”
  • 这种方法在kubernetes v1.16.4和Sonobuoy版本:v0.17.1上对我来说很好用
  • 在此处查看文档:{​​{3}}
  • Sonobuoy调用看起来像:
sonobuoy run --plugin-env=e2e.E2E_EXTRA_ARGS="--allowed-not-ready-nodes=1"

在v1.16之前的 kubernetes版本上,情况更为复杂。我还没有测试过,但是根据文档: