【发布时间】:2021-01-21 02:36:07
【问题描述】:
我有用 pytest 编写的端到端测试,在命名空间 foo 中的 Kubernetes 集群上运行。现在我想在测试中添加简单的混沌工程来检查我的服务的弹性。为此,我只需要删除foo内的特定Pod——由于K8s重启了对应的服务,这就模拟了服务暂时不可达。
用 Python 删除当前命名空间中特定 pod 的简单方法是什么?
到目前为止我所尝试的:
由于我在https://github.com/kubernetes-client/python/tree/master/examples 中没有找到合适的示例,但是使用 pod 的示例看起来很复杂,
我查看了kubetest,看起来非常简单优雅。
我想使用kube 夹具,然后执行以下操作:
pods = kube.get_pods()
for pod in pods:
if can_be_temporarily_unreachable(pod):
kube.delete(pod)
我认为使用参数--in-cluster 调用 pytest 会告诉kubetest 使用当前集群设置而不是创建新的 K8s 资源。
但是,kubetest 想要为每个使用 kube 夹具的测试用例创建一个新的命名空间,这是我不想要的。
有没有办法告诉kubetest 不要创建新的命名空间,而是在当前命名空间中做所有事情?
虽然kubetest 在其他方面看起来非常简单和优雅,但我也很乐意使用其他解决方案。
一个简单的解决方案,需要很少的时间和维护,并且不会使(阅读)测试复杂化。
【问题讨论】:
标签: python kubernetes microservices pytest chaos