【问题标题】:pod - How to kill or stop only one pod from n replicas of a deploymentpod - 如何从部署的 n 个副本中仅杀死或停止一个 pod
【发布时间】:2021-07-29 22:33:46
【问题描述】:

我有一个测试场景来检查 API 请求是否正在由另一个 Pod 处理,如果一个 Pod 出现故障。我知道这是默认行为,但我想激发以下场景。

Pod 副本 - 2 个(Pod A 和 B)

在我的 API 请求期间,我只想杀死/停止 pod A。 在A停机期间,请求应由B处理。

我知道我们可以重新启动部署并将副本扩展到 0 并再次扩展到 2,但这对我不起作用。

有什么方法可以杀死/停止/崩溃仅 pod A? 任何帮助将不胜感激。

【问题讨论】:

  • 您应该能够在负载测试期间 kubectl scale deployment ... --replicas=1 杀死其中一个 Pod,但不能杀死另一个;您将无法控制它是哪一个,但您仍然应该看到所有流量都流向了幸存者。
  • 好吧,不控制我要杀哪一个,可以考虑。谢谢!这给了我想要的答案! @大
  • @DavidMaze 你能把这个作为答案发布吗,会接受吗?这个解释真好。

标签: kubernetes kubernetes-pod


【解决方案1】:

如果您想模拟其中一个 pod 丢失时会发生什么,您可以缩减部署规模

kubectl scale deployment the-deployment-name --replicas=1

Kubernetes 将终止除一个 Pod 之外的所有 Pod;您应该几乎可以立即看到所有流量都流向了幸存的 pod。

但是,如果您想模拟其中一个 pod 崩溃并重新启动时会发生什么,您可以删除该 pod

# kubectl scale deployment the-deployment-name --replicas=2
kubectl get pods
kubectl delete pod the-deployment-name-12345-f7h9j

一旦 pod 开始被删除,Kubernetes 服务应该将所有流量路由到幸存的 pod(状态为 Running 的那些)。但是,Pod 是由一个 ReplicaSet 管理的,它希望有 2 个副本,所以如果其中一个 Pod 被删除,ReplicaSet 将立即创建一个新的。这类似于 pod 崩溃并重新启动时会发生的情况(在这种情况下,您将获得相同的 pod 和相同的节点,如果您删除 pod,它可能会回到不同的位置)。

【讨论】:

  • 谢谢!你很好地解释了这两种情况!这有帮助!
  • 谢谢,每个命令模拟什么的解释很有帮助
【解决方案2】:

正如您所提到的,您可以手动 杀死重新启动作为测试案例的唯一解决方案的 pod,否则您可以尝试崩溃单个 POD,但最终,它会创建相同的场景 POD 将自动重启。

否则您可以增加部署的正常关闭时间,这样 POD 可能需要一些时间并在很长一段时间内保持终止状态,然后您可以执行测试。

【讨论】:

  • (就本次测试而言,当其中一个 Pod 正在重新启动时,其他(S)应该成功处理流量,并且查看重新创建的 Pod 是否会正确接受请求也很有趣。如果你试图模拟的是“如果 pod 崩溃会发生什么”,Kubernetes 会自行重启它,所以这种方法也可以模拟。)
  • @Harsh,我希望 Pod 重新启动,这不是问题,我只是希望在第一个 Pod 关闭时将负载转移到另一个 Pod。你的回答给了我关于优雅关机的新知识。也会检查的。谢谢!
【解决方案3】:

在 pod 由副本集控制的 kubernetes 中,如果您杀死一个 pod,它将再次重新创建。所以唯一的办法就是减少副本的数量。 假设您的部署有 4 个副本。您可以通过运行以下命令来缩小到 3

kubectl scale deployment <deployment-name> --replicas=3

我的例子如下所示

kubectl scale  deployment hello-world --replicas=3
deployment.apps/hello-world scaled

【讨论】:

  • 感谢@Baguma 的及时回复。我知道将再次创建 pod,并且我希望再次创建它。你的建议也有帮助!谢谢。
  • @TechGirl 我认为对于你的情况,优雅的关机是大卫使用下面的命令建议的工作 kubectl delete pod --grace-period= 60 其中60表示秒数
猜你喜欢
  • 2017-06-22
  • 2021-02-18
  • 2021-05-07
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 2022-08-03
  • 1970-01-01
相关资源
最近更新 更多