如何在Kubernetes中模拟电源故障

时间:2019-07-01 14:43:53

标签: amazon-web-services kubernetes openshift google-kubernetes-engine

我的rook-ceph集群在AWS上运行。它加载了数据。 有什么方法可以刺激电源故障,以便我可以测试群集的行为?

3 个答案:

答案 0 :(得分:0)

您可以从Docker发送Power failure (System V)

的KILL信号“ SIGPWR”
docker kill --signal="SIGPWR"

和Kubernet

kubectl exec <pod> -- /killme.sh

然后是scriplt killme.sh

beginning of script-----
#!/bin/bash
# Define process to find
kiperf=$(pidof iperf)
# Kills all iperf or command line
kill -30 $kiperf
script end -------------

信号30,您可以找到here

答案 1 :(得分:0)

这取决于崩溃测试的目的。我看到两个选择:

  1. 您想测试是否在AWS上正确部署了Kubernetes-然后,我将终止相关的AWS EC2实例(或一组实例)

  2. 您想测试您的最终应用程序是否可以应对Kubernetes节点故障-然后,我只需要检查给定节点上正在运行的POD,然后突然用以下命令杀死它们:

kubectl delete pods <pod> --grace-period=0 --force

答案 2 :(得分:0)

集群Pod不会消失,直到有人(一个人或一个控制器)破坏它们,或者出现不可避免的硬件或系统软件错误。

开发人员将这些不可避免的情况称为对应用程序的非自愿中断。例如:

  • 支持节点的物理机的硬件故障
  • 集群管理员误删除VM(实例)
  • 云提供商或虚拟机管理程序故障使虚拟机消失 内核恐慌
  • 该节点由于群集网络分区而从群集中消失
  • 由于节点资源不足而将Pod逐出。 除了资源不足的情况外,所有用户都应该熟悉所有这些条件;它们并非特定于Kubernetes。

开发人员将其他情况称为自愿中断。这些动作既包括应用程序所有者发起的动作,也包括集群管理员发起的动作。

典型的应用程序所有者操作包括:

  • 删除管理吊舱的部署或其他控制器
  • 更新部署的Pod模板,导致重新启动
  • 直接删除某个广告连播(例如,偶然)

您可以在这里找到更多信息:kubernetes-discruptionapplication-discruption

您可以在群集上设置Prometheus并在故障期间确保指标。