我有一个长时间运行的作业。目前我需要pod在整个作业中定期重新启动,由于刷新一些令牌,这个过程不能由我改变不幸的是,没有很长的提前期。
因此,我所做的是针对pod模板将activeDeadlineSeconds
设置为几个小时,将restartPolicy
设置为OnFailure
。我还针对作业设置了backoffLimit
,因此它只会在永久失败之前执行几次,或者在此之前完成。
现在发生的情况是pod将在截止日期后出错,新的pod将启动,出错的pod将累积,直到作业完成或达到回退限制。鉴于我知道这些pod处于错误状态的原因,我希望它们只是被清理,这样它们就不会占用资源。有没有办法告诉Kubernetes为我做这件事,或者我应该只把请求设置得足够低,让他们有可能逗留几天?是否有任何其他特性可能导致这些累积的pod处于错误状态?
Ide更喜欢避免使用cronjob,因为它不能很好地与我们的ccd管道一起使用,而且我认为cronjob无论如何都没有完成设置。
1条答案
按热度按时间gjmwrych1#
如本git link中所述,有一个命令可用于删除故障pod,您可以使用kubectl命令并grep收回的pod,然后将此值传递给kubectl delete pod命令
但是,要自动执行此操作,您需要自己创建一个脚本。使用监视系统(如prometheus)非常简单,您可以通过该系统生成警报,随后此警报会触发CICD管道的webhook,并且在CICD管道中,您可以使用上述命令编写一个小脚本,用于删除被逐出的pod。
**注意:**该命令由一个名为
dankeder
的用户在附加的github链接中提供。