K8S在re-运行podsinside service时会自动通过健康检查确保pod可用性吗?

Does K8S automatically ensure pod availability by health checking when re-run pods inside service?

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

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

是否有可能在特定时间我的 REST API 不可用?我的意思是,有没有可能 Tomcat 都还没有开始并且请求失败了?

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

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

Is it possible that in a particular time my REST API is not available? I mean, is it possible that both Tomcat aren't started yet and a request fails?

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

Does K8S use health checking on a pod before attemp to re-run the another one? If so, I could perform an http health checking against my REST API endpoint. Is it the right way?

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