首页 > 解决方案 > 在不终止的情况下在完成时缩减副本

问题描述

我正在使用 Kubernetes 副本来运行“运行到完成”任务。

目前,当我们在队列中有要完成的工作项并且容器立即使用该项目时,我会增加副本的数量。由于所需的副本从未改变,Kubernetes 启动一个新的副本,然后发现没有什么可做的,因此立即终止(并重复)。如果我在容器完成之前缩减副本(即,一旦队列项被消耗),正在工作的副本之一会过早终止。

有没有办法减少副本而不强制终止?

标签: kubernetesqueuemessage-queueamazon-eks

解决方案


您可以termination grace period为所有 pod 添加,因此当容器终止时,它会等待一段时间。

您还可以在生命周期中添加 SIG 术语,该特定 pod 也不会从队列中获取下一个项目。

lifecycle:
          preStop:
            exec:
              # SIGTERM triggers a quick exit; gracefully terminate instead
              command: ["/usr/sbin/nginx","-s","quit"]

你也可以看看这个:https ://cloud.google.com/blog/products/gcp/kubernetes-best-practices-terminating-with-grace


推荐阅读