簡體   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