为了测试高可用性模式是否能达到应有的效果,我需要在测试期间终止实例,并且需要以某种方式终止它们,使它们无法报告断开连接或类似情况。
出于实际原因,我需要在较小的环境上进行测试,该环境没有为每个 pod 设置单独的节点,因此我无法通过关闭机器进行测试,而是需要终止进程。我可以使用 来终止它们docker kill
,但这需要登录节点并找到容器的 docker id。有没有办法通过 来实现类似的效果exec kill
,但SIGKILL
不允许发送到进程 ID 1。
我也看到使用删除,但在某些情况下存在差异:删除时,容器以干净状态重新创建,但仅重新启动它却不行,而我正在测试的部署实际上在启动期间查看状态并且在启动时出现问题,所以我需要测试没有被删除的情况。
我可以强制终止 Pod 而不给它们任何通过 kubernetes API/ 进行清理的机会kubectl
吗?
答案1
您可以尝试使用命令
kubectl delete pods <pod> --grace-period=0 --force
密钥--grace-period=<seconds>
是 Kubernetes 等待 Pod 正常关闭的时间。如果密钥为 0,则会立即向 Pod 中的任何进程发送 SIGKILL。--force
在 Kubernetes 1.5 及更高版本中,必须为此类操作指定密钥。
欲了解更多信息,您可以查看官方文档。