KEDA Scaling Down pod高效(在缩减前检查用户活动)



我有一个spring-boot应用程序,它从rabbitmq.我在k8s上部署了这个应用程序,并创建了keda文件来扩展它,如果队列的大小通过x条消息,它工作正常,我创建了新的pod,但现在我想在缩减部分制定一个规则,我想确保在缩减之前没有用户使用该pod,这样我就不会干扰我在谷歌和聊天平台上搜索的任何活动。我发现了一些类似prestop和readnessProbe的东西,谁知道如何做到这一点,我会寻求一种帮助:)

我假设您的应用程序从接收请求到完成请求需要45秒的时间来处理请求。

在这种情况下,我会使用terminationGracePeriodSeconds,默认情况下是30s,但您可以将其扩展为任何值。

幕后发生的事情是,当KEDA将开始缩小,并且您的pod将处于Terminating状态时,它将立即从service端点中删除,并且不会接收到新的请求(如果该pod存在service)。然后它会发送SIGTERM信号,等待进程完成它的工作(请确保您的应用程序正确处理SIGTERM)。处理完当前请求后,pod应在terminationGracePeriodSeconds定义的时间之前终止。如果处理请求的时间超过terminationGracePeriodSeconds,它将在不等待的情况下杀死pod,消息应该返回队列。

因此,如果处理请求正在进行,例如120s样本清单应该看起来像这个

apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
terminationGracePeriodSeconds: 130

最新更新