【问题标题】:Restarting statefulset pods quickly without affecting readiness check在不影响就绪检查的情况下快速重启 statefulset pod
【发布时间】:2020-05-18 18:12:45
【问题描述】:

我们有一个 statefulset,我们希望有最短的停机时间(就像我想的任何其他 statefulset 一样),但是由于就绪探测失败阈值为 5,因此 Pod 卡在“终止”状态(在“ 终止”状态无缘无故)。因此,为了更快地终止,我将故障阈值降低到 1,它现在终止得更快,但是现在故障阈值如此之低,由于 CPU 达到 100% 或其他瞬态,它偶尔会导致随机未就绪的 Pod问题。

我的问题:如何让 Pod 更快地终止,同时保持 Readiness failure 阈值较高,以减少 Pod 重启期间的停机时间? (另外,我希望有任何其他随机提示可以使 pod 重新启动更快(例如,在 ContainerCreating 上花费更少的时间)

【问题讨论】:

  • 你的环境是什么(Kubectl 版本,使用 kubeadm/minikube)。它是我们的本地环境还是您的集群在云中?谁能提供您的配置 YAML?
  • 对不起@PjoterS,我现在才看到你的回复。我们使用的是 Amazon EKS 1.16。您想查看 yaml 的哪些部分?

标签: kubernetes kubernetes-statefulset readinessprobe


【解决方案1】:

如果要使用 kubectl version >= 1.5 强制删除 Pod,请执行以下操作:

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

如果您使用任何版本的 kubectl

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

如果即使在执行这些命令后 pod 仍停留在 Unknown 状态,请使用以下命令将 pod 从集群中移除:

kubectl patch pod <pod> -p '{"metadata":{"finalizers":null}}'

参考:https://kubernetes.io/docs/tasks/run-application/force-delete-stateful-set-pod/

【讨论】:

  • 您好,感谢您的回复!但这并不能解决我的问题,我不是在谈论手动删除 pod,而是在谈论滚动部署情况。就我而言,我需要优雅的终止,因为 pod 正在将一些状态保存到存储中。但是在它完成并且主容器终止之后,吊舱又浪费了 5 秒,因为准备就绪并没有失败。但是一旦容器被终止,我希望 pod 立即消失,以便它可以更快地重新启动
猜你喜欢
  • 2021-08-15
  • 2020-06-27
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2011-12-27
  • 1970-01-01
  • 2013-11-03
相关资源
最近更新 更多