Kubernetes部署终止最旧的Pod



我正在使用Azure Kubernetes Service运行一个Go应用程序,该应用程序从RabbitMQ中提取、运行一些处理并返回。pod可以扩展以处理增加的作业。很普通的东西。

HPA设置如下:

NAME          REFERENCE                TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
production    Deployment/production    79%/80%   2         10        10         4d11h
staging       Deployment/staging       2%/80%    1         2         1          4d11h

当HPA上下缩放时,总会有2个吊舱保持运行。我们发现,在运行了这么长时间后,这些吊舱上的Go应用程序会超时。有时是几天,有时是几周。是的,我们可能会深入研究代码并弄清楚这一点,但这对团队来说是一个低优先级的问题。

我想到的另一个解决方案是让HPA首先移除最古老的吊舱。这意味着最古老的吊舱永远不会超过几个小时。先进先出的模式。

然而,我看不出有什么明确的方法可以做到这一点。这完全有可能不是,但这似乎是可行的。

我是不是错过了什么?有没有办法做到这一点

在我看来(我在评论中也提到过(,最简单(不确定是否优雅(的方法是使用一些cronjob,它会定期清理超时的pod。

一个CronJob对象就像一个crontab(cron表(文件的一行。它以Cron格式编写的给定时间表定期运行作业。CronJobs可用于创建周期性和重复性任务,如运行备份或发送电子邮件。CronJobs还可以安排特定时间的单个任务,例如为当您的集群可能处于空闲状态时。

Cronjobs示例和操作方法:

  • 如何使用Kubernetes的Job和CronJob
  • Kubernetes:删除X天以上的pod
  • https://github.com/dignajar/clean-pods<--真实的例子

相关内容

  • 没有找到相关文章

最新更新