我正在運行一個服務,寫在Kubernetes的一個容器中。該服務不公開HTTP接口;它正在處理來自隊列的工作。我應該如何檢查Kubernetes服務的健康狀況?
我能:
- 使用一個可執行的活躍度檢查,以查看是否正在運行的進程
- 暴露一個HTTP健康檢查端點
- 使用expvars揭露基本健康數據。
在go/Kubernetes中有這樣做的常見/習慣性方法嗎?
我正在運行一個服務,寫在Kubernetes的一個容器中。該服務不公開HTTP接口;它正在處理來自隊列的工作。我應該如何檢查Kubernetes服務的健康狀況?
我能:
在go/Kubernetes中有這樣做的常見/習慣性方法嗎?
一般來說,我推薦HTTP機制,因爲它很容易添加到Go中。如果您已有能夠返回有用狀態的exec
命令,請執行此操作。或者你可以考慮https://github.com/kubernetes/contrib/tree/master/exec-healthz
我不會理解便捷的方法來處理運行到該窗格中的過程以關注該問題。
我會避免在容器內部創建另一個進程來公開數據,或修改當前進程來公開健康端點,所以我會選擇活動檢查exec方式。它沒有進入你的應用程序,並且希望它只會週期性地消耗一些CPU週期。
無論如何,如果您決定從pod公開健康信息,我會使用multi-container pod,將健康暴露應用程序作爲邊車並將工作過程放在不同的容器中。