我有用 pytest 编写的端到端测试,在 Namespace 的 Kubernetes 集群上运行foo
。现在我想在测试中添加简单的混沌工程来检查我的服务的弹性。为此,我只需要删除其中的特定foo
pod——由于 K8s 重启了相应的服务,这就模拟了该服务暂时无法访问。
使用 Python 删除当前命名空间中特定 pod 的简单方法是什么?
到目前为止我已经尝试过:
由于我在https://github.com/kubernetes-client/python/tree/master/examples中没有找到合适的示例,但是使用 pods 的示例看起来很复杂,因此我查看了kubetest
,看起来非常简单和优雅。
我想使用kube
夹具,然后做这样的事情:
pods = kube.get_pods()
for pod in pods:
if can_be_temporarily_unreachable(pod):
kube.delete(pod)
我认为使用参数调用 pytest--in-cluster
会告诉kubetest
我们使用当前的集群设置而不是创建新的 K8s 资源。但是,kubetest
想要为每个使用该夹具的测试用例创建一个新的命名空间kube
,这是我不想要的。有没有办法告诉kubetest
不要创建新的命名空间,而是在当前命名空间中做所有事情?
虽然kubetest
看起来非常简单和优雅,但我也很乐意使用另一种解决方案。一个需要很少时间和维护并且不会使测试复杂化(阅读)的简单解决方案会很棒。