我应该如何检查Kubernetes的服务健康状况?

时间:2016-05-24 16:34:30

标签: go kubernetes kubernetes-health-check

我正在运行一个写在Kubernetes的pod中的服务。该服务不公开HTTP接口;它正在从队列中处理工作。

我可以:

  • 使用可执行的活动检查来确定进程是否正在运行
  • 公开HTTP运行状况检查端点
  • 使用expvars公开基本健康数据。

在go / Kubernetes中是否有一种常见的/惯用的方式?

2 个答案:

答案 0 :(得分:1)

我不会进一步推理有关检测流入pod的过程的便利性,以便专注于这个问题。

我避免在容器内部创建另一个进程来公开数据,或者修改当前进程只是为了公开健康端点,所以我选择了liveness check exec方式。它没有进入你的应用程序,希望它只会定期消耗一些CPU循环。

无论如何,如果你决定从pod中公开健康信息,我会使用multi-container pod,将健康暴露应用程序作为边车,将工作流程放在另一个容器中。

答案 1 :(得分:1)

一般来说,我推荐使用HTTP机制,因为它很容易在Go中添加。如果您已经有一个exec能够返回有用状态的命令,那就去吧。或者您可以考虑https://github.com/kubernetes/contrib/tree/master/exec-healthz