繁体   English   中英

如何实现 kubernetes pod 终止的自定义逻辑?

[英]How to implement custom logic for kubernetes pod termination?

我有一个有状态的 pod(处理来自 IVR 的电话),因此,执行更新或让 HPA 执行 pod 终止可能会导致电话掉线。 我可以将terminationGracePeriodSeconds 延长到大约10 分钟,但如果没有电话通过这个吊舱,我不想延长到那么远。

有没有办法通过 rest 端点查询 pod 以验证有多少电话处于活动状态? 我想快速终止 pod,但如果它仍然有正在进行的对话,也可以扩展它。

一些可能相关的细节:

  • K8s:v1.20
  • 语言:NodeJS v16

您可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM