当重新运行服务中的pod时,K8S是否通过健康检查自动确保pod可用性?

时间:2016-02-26 11:42:04

标签: kubernetes kubernetes-health-check

假设我有2个pod(副本)的服务。每个pod只包含一个容器,它是在Tomcat上运行的REST API war。此外,每个pod都有imagePullPolicy: Always所以当有一个新版本的图像时,它会拉动它。

当容器启动时,显然Tomcat需要几秒钟才能启动。这将在两个容器中发生。

有可能在特定时间内我的REST API不可用吗?我的意思是,Tomcat是否可能尚未启动且请求失败?

在尝试重新运行另一个之前,K8S是否使用了pod上的运行状况检查?如果是这样,我可以对我的REST API端点执行http运行状况检查。这是正确的方式吗?

提前致谢。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:3)

  

有可能在特定时间内我的REST API不可用吗?我的意思是,Tomcat是否可能尚未启动且请求失败?

是。您可以通过确保在创建服务之前至少有一个pod准备好为请求提供服务(然后使用滚动更新来避免在升级应用程序时停机)来防止这种情况发生。

  

在尝试重新运行另一个之前,K8S是否使用了pod上的运行状况检查?如果是这样,我可以对我的REST API端点执行http运行状况检查。这是正确的方式吗?

你应该看看liveness and readiness probes。它们旨在捕获正在运行的容器和准备为请求提供服务的容器内的应用程序之间的差异。