我正在尝试使用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版本和集群升级除外。
答案 0 :(得分:0)
我认为针对1.17之前的kubernetes版本有一种解决方法。
在 kubernetes版本v1.16 上,您可以运行Sonobuoy(Sonobuoy版本v0.16.1或更高版本),并提供以下测试框架标志:--allowed-not-ready-nodes=1
sonobuoy run --plugin-env=e2e.E2E_EXTRA_ARGS="--allowed-not-ready-nodes=1"
在v1.16之前的 kubernetes版本上,情况更为复杂。我还没有测试过,但是根据文档:
--allowed-not-ready-nodes=1