[英]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.