繁体   English   中英

如何在Kubernetes中模拟电源故障

[英]How to simulate Power Failure In Kubernetes

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

从Docker您可以发送KILL信号“ SIGPWR”,表明电源故障(系统V)

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你可以在这里找到

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

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

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

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

除非有人(一个人或一个控制器)破坏了集群Pod,或者出现不可避免的硬件或系统软件错误,否则集群Pod不会消失。

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM