0

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

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

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

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

提前致谢。任何建议将被认真考虑。

4

1 回答 1

3

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

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

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

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

于 2016-02-26T16:47:00.023 回答