如何在 Kubernetes 中回收 Pod

ray*_*han 5 kubernetes kubectl kubernetes-pod

我希望我的 Pod 在一段时间后(例如每周或每月)从我的部署中优雅地回收。我知道如果我知道 Kubernetes 命令,我可以为此添加一个 cron 作业。

问题是在 Kubernetes 中执行此操作的最佳方法是什么。哪个命令可以让我实现这个目标?

非常感谢你帮助我解决这个问题。

Von*_*onC 5

由于OP Rayhan的已经发现了,并且在评价kubernetes/kubernetes发行13488,环境变量的kubectl补丁是不够的。

但是...... K8s 1.15 将带来kubectl rollout restart......那是PR 77423被接受和合并的时候。

kubectl rollout restart 现在适用于守护进程集和状态集。


Rya*_*son 0

如果您需要手动重新启动 Pod,您可以运行

'kubectl get pods|grep somename|awk '{print $1}' | xargs -i sh -c 'kubectl 删除 pod -o 名称 {} && sleep 4'

根据 KIVagant 在https://github.com/kubernetes/kubernetes/issues/13488#issuecomment-372456851中的建议,进行基于计时器的作业(例如,从 CI 系统)

GitHub 线程表明,目前没有单一的最佳方法,人们提出了不同的建议。我提到这个是因为它最接近您的建议,并且如果您确实必须这样做的话,这是一个简单的解决方案。人们普遍认为,您应该尽量避免重新启动作业并使用探针来确保不健康的 Pod 自动重新启动。

定期升级(而不是重新启动)是非常好的做法,尤其是滚动升级。但如果您这样做,请注意所有升级都不会掩盖问题。如果您的 Pod 存在内存泄漏或在长时间运行时耗尽连接池,那么您需要尝试让不健康的 Pod 将自己报告为不健康 - 既因为它们可以自动重新启动,也因为它将帮助您监控代码问题并解决它们。