Readiness Probe 和 HealthCheck 有什么好处?
What is benefit of readiness probe and healthCheck?
我正在开发一个应用程序,正如我所见,它正在执行多项健康检查?
- 数据库就绪探测
- 另一个 API 依赖准备探测
当我查看集群日志时,我意识到我的服务在数据库检查失败时仅抛出 500 并关闭。我在这里无法理解的是,如果 DB 已关闭或另一个 API 已关闭,并且如果我没有就绪探测器,那么我的容器无论如何都会关闭。另外,我会看到我的应用程序确实抛出了大约 500,因为数据库或其他服务已关闭。
无论如何,我的容器就绪探测有什么好处?我的另一个问题是,只有当我将服务部署到集群时,我才应该考虑 Healthcheck 吗?如果不是集群微服务环境,执行 healtheck 会 increase/decrease 好处吗?
在一些地方使用了就绪探测。一个重要的问题是未就绪的 pods 已从所有引用它们的服务中删除。它们对于 Deployments/StatefulSets 上的滚动更新也很重要,因为滚动不会继续,直到新的 pods 达到就绪状态。一般来说,用于就绪探测的检查应该只检查当前服务。所以它不应该接触到数据库。有时这很难实施,而且确实会降低它们的用处。但是检查每个 pod 的东西,比如 Web 服务器正在监听端口并且可以 return HTTP 响应。
Kubernetes 使用三种类型的探测器来检查 Pod
:
的健康状况
Liveness
:告诉Kubernetes容器内部出了问题,最好重启看看Kubernetes是否能解决错误。
Readiness
:告诉 Kubernetes Pod
已准备好接收流量。有时发生的事情并没有完全使 Pod
丧失能力,但无法满足客户的要求。例如:失去与数据库的连接或第三方服务失败。在这种情况下,我们不希望 Kubernetes 重置 Pod
,但我们也不希望它发送它无法满足的流量。当 Readiness
探测失败时,Kubernetes 从服务中删除 Pod
并停止与 Pod
的通信。解决错误后,Kubernetes 可以将其添加回来。
Startup
:当 Pod
已启动并准备接收流量时通知 Kubernetes。这些探针对于需要一段时间才能开始的应用程序特别有用。 Pod
启动时,Kubernetes 不会发送 Liveness
或 Readiness
探测。如果是这样,他们可能会干扰应用程序启动。
您可以获得有关探测器如何在此 link: 上工作的更多信息
我正在开发一个应用程序,正如我所见,它正在执行多项健康检查?
- 数据库就绪探测
- 另一个 API 依赖准备探测
当我查看集群日志时,我意识到我的服务在数据库检查失败时仅抛出 500 并关闭。我在这里无法理解的是,如果 DB 已关闭或另一个 API 已关闭,并且如果我没有就绪探测器,那么我的容器无论如何都会关闭。另外,我会看到我的应用程序确实抛出了大约 500,因为数据库或其他服务已关闭。
无论如何,我的容器就绪探测有什么好处?我的另一个问题是,只有当我将服务部署到集群时,我才应该考虑 Healthcheck 吗?如果不是集群微服务环境,执行 healtheck 会 increase/decrease 好处吗?
在一些地方使用了就绪探测。一个重要的问题是未就绪的 pods 已从所有引用它们的服务中删除。它们对于 Deployments/StatefulSets 上的滚动更新也很重要,因为滚动不会继续,直到新的 pods 达到就绪状态。一般来说,用于就绪探测的检查应该只检查当前服务。所以它不应该接触到数据库。有时这很难实施,而且确实会降低它们的用处。但是检查每个 pod 的东西,比如 Web 服务器正在监听端口并且可以 return HTTP 响应。
Kubernetes 使用三种类型的探测器来检查 Pod
:
Liveness
:告诉Kubernetes容器内部出了问题,最好重启看看Kubernetes是否能解决错误。Readiness
:告诉 KubernetesPod
已准备好接收流量。有时发生的事情并没有完全使Pod
丧失能力,但无法满足客户的要求。例如:失去与数据库的连接或第三方服务失败。在这种情况下,我们不希望 Kubernetes 重置Pod
,但我们也不希望它发送它无法满足的流量。当Readiness
探测失败时,Kubernetes 从服务中删除Pod
并停止与Pod
的通信。解决错误后,Kubernetes 可以将其添加回来。Startup
:当Pod
已启动并准备接收流量时通知 Kubernetes。这些探针对于需要一段时间才能开始的应用程序特别有用。Pod
启动时,Kubernetes 不会发送Liveness
或Readiness
探测。如果是这样,他们可能会干扰应用程序启动。 您可以获得有关探测器如何在此 link: 上工作的更多信息