保持kubernetes pod运行,直到最后一个用户断开连接

时间:2018-06-27 10:51:24

标签: kubernetes

我在kubernetes上运行一个node.js容器,该容器处理Websocket连接,这些连接通常保持打开状态,直到用户退出。现在,当我进行滚动更新或按比例缩小部署时,是否有办法阻止Pod被杀死,直到最后一个用户断开连接?

1 个答案:

答案 0 :(得分:0)

目前,Kubernetes不支持正常连接关闭。

terminationGracePeriodSeconds仅在Pod终止之前定义计时器。它不会处理Pod连接。

处理滚动更新的唯一方法是调整您的应用程序,使其能够透明地将客户端切换到其他Pod。

您可能还想看看Disruption Budget。在某些情况下,进行更可靠的设置可能会有所帮助。

  

PDB指定应用程序可以复制的副本数   相对于打算拥有的数量,可以容忍拥有。对于   例如,具有.spec.replicas:5的部署应该   在任何给定时间有5个豆荚。如果其PDB允许有4个   一段时间后,Eviction API将允许自愿中断一个,   但一次不能两个豆荚。

     

PDB无法阻止involuntary disruptions的发生,但是   他们确实计入了预算。

     

由于滚动升级到   应用程序确实计入了中断预算,但是 controllers   (例如 deployment stateful-set )不受PDB的限制   滚动升级–处理应用程序更新期间的故障   在控制器规格中配置。 (了解有关更新   deployment。)

     

使用驱逐API驱逐Pod时,它会优雅地   终止(请参见PodSpec中的terminationGracePeriodSeconds。)