我正在运行一个服务,写在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,将健康暴露应用程序作为边车并将工作过程放在不同的容器中。