我们的容器存在一些奇怪的内存泄漏问题,它们的生存时间越长,占用的资源就越多。目前,我们没有足够的资源来研究这些问题(因为它们已经一个多月没有成为问题了),但我们希望避免手动操作来“清理”膨胀的容器。
我想做的是以这样的方式配置部署,即“生存时间”是Pod状态的参数,如果超过某个值(例如几天),则Pod被杀死。并创建一个新的。我宁愿完全在kubernetes中执行此操作,因为虽然我们最终将在我们的服务中添加“运行状况检查”端点,但暂时无法完成。
在豆荚的健康状况上实施这种“最大年龄”参数的最佳方法是什么?另外,我猜我们可以根据资源使用情况来触发,但是如果使用是临时的,这只是个问题,只有短时间之后才释放资源。
答案 0 :(得分:3)
最简单的方法是对内存进行硬性资源限制,使其超出您在一个临时峰值中看到的水平:您希望在几个星期内看到的水平。
无论如何,这样做可能是一个好主意,因为k8会根据请求的资源而不是其限制来调度工作负载,因此随着内存使用量的增加,最终可能会导致节点内存压力。
一个问题是,如果您有大量的内存高峰,则在某些工作负载的中间可能会发生k8s杀死pod的pod重启,因此您需要能够吸收这种影响。
因此,从the documentation看起来像这样(显然,Deployment
比原始Pod
更为可取,如下所示,该示例可以延续到{{ 1}}):
PodTemplateSpec