1

我正在使用 Azure Kubernetes 服务来运行从 RabbitMQ 中提取、运行一些处理并返回它的 Go 应用程序。豆荚可扩展以处理增加的工作。相当普通的东西。

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 个 pod 保持运行。我们发现,运行这么久之后,这些 Pod 上的 Go 应用程序会超时。有时是几天,有时是几周。是的,我们可能可以深入研究代码并弄清楚这一点,但对于那个团队来说,这是一种低优先级。

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

但是,我没有看到任何明确的方法来做到这一点。完全有可能不是,但它似乎是可行的。

我错过了什么吗?有没有办法使这项工作?

4

1 回答 1

0

在我看来(我也在评论中提到) - 最简单的(不确定优雅)方法是有一些cronjob会定期清理超时的 pod。

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

Cronjobs 示例和操作方法:

于 2020-11-25T14:19:22.147 回答