[英]How to implement custom logic for kubernetes pod termination?
我有一个有状态的 pod(处理来自 IVR 的电话),因此,执行更新或让 HPA 执行 pod 终止可能会导致电话掉线。 我可以将terminationGracePeriodSeconds 延长到大约10 分钟,但如果没有电话通过这个吊舱,我不想延长到那么远。
有没有办法通过 rest 端点查询 pod 以验证有多少电话处于活动状态? 我想快速终止 pod,但如果它仍然有正在进行的对话,也可以扩展它。
一些可能相关的细节:
您可以使用preStop
处理程序,请参阅https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/
假设您的 /calls 端点返回当前调用的数量,您可以执行以下操作,每 5 秒查询一次该端点,直到调用数量达到零
containers:
- name: your container
# . . .
lifecycle:
preStop:
exec:
command: ["/bin/bash","-c","while [ \"$(curl localhost/calls)\" != '0' ]; do echo 'there are active calls'; sleep 5; done; echo 'no active calls, exiting'; exit 0" ]
这需要curl
出现在您的图像中,并且您可能还希望将 stderr 重定向到 /dev/null 和/或添加其他故障保护,但应该足以作为概念证明
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.