3

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

我可以:

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

在 go/Kubernetes 中是否有一种通用/惯用的方式来执行此操作?

4

2 回答 2

1

我不会对检测运行到 pod 中的进程以专注于问题的便利性进行推理。

我会避免在容器内创建另一个进程来暴露数据,或者修改当前进程只是为了暴露健康端点,所以我会选择 liveness check exec 方式。它不会进入您的应用程序,并且希望它只会定期消耗一些 CPU 周期。

无论如何,如果您决定从 pod 公开健康信息,我会使用多容器 pod,将健康公开应用程序作为 sidecar 并将工作进程放在不同的容器中。

于 2016-05-24T18:06:44.693 回答
1

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

于 2016-08-31T22:25:03.700 回答