我正在构建一个API,并使用Kubernetes作为基于云的协调器。作为参考,我将Spring和Tomcat用于微服务。
我希望使用HPA和VPA自动扩展。但是,缩放需要一些时间来对负载做出反应,并且根据配置可能会不准确。
我的问题是,如果有人向我的API发出请求,而Kubernetes需要生成一个pod,那么我的API的客户端是否必须等待这30秒的响应时间?我该如何优雅地对待这种行为?
答案 0 :(得分:1)
您可以在Kubernetes服务后运行api服务器。 Kubernetes服务将创建一个负载平衡器(及其负载端点),并且默认情况下将使用循环机制在Web服务器之间分配请求。
当CPU使用率开始增加时,我认为请求延迟将受到影响,由于负载增加,您可能会看到响应时间增加。
请求不应该等待新的Pod旋转起来。因为pod尚未向负载均衡器注册。负载均衡器直到该Pod实际准备好服务该请求时,才会知道该Pod。 (您也可以检查LivenessProbe)
我想除非请求没有长时间在负载均衡器中排队(大于启动新Pod所需的时间),否则它不应转到新Pod。
您可以随时间调整阈值,以留出一些缓冲区CPU来处理流量高峰(还考虑启动新Pod所需的时间),然后在不减少的情况下开始添加新Pod。
当负载减少时,您还可以查看关闭容器。 (不确定是否可行)。