Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 使用GKE处理流量突然增加(多个数量级)_Kubernetes_Google Kubernetes Engine_Scalability_Serverless - Fatal编程技术网

Kubernetes 使用GKE处理流量突然增加(多个数量级)

Kubernetes 使用GKE处理流量突然增加(多个数量级),kubernetes,google-kubernetes-engine,scalability,serverless,Kubernetes,Google Kubernetes Engine,Scalability,Serverless,如果一个网站有一次上门推销,有很多人(约5万人)正在等待倒数计时结束并进入页面,那么如何用GKE以一种经济高效的方式解决这个问题 这似乎是GKE存在的原因,解决方案可能是使用集群autoscaler和HPA,GKE可以处理流量。但实际上情况不同,当autoscaler尝试创建节点并提取容器的图像时,可能需要花费一定的时间(在某些情况下可能需要一到两分钟)。在此期间,用户会看到5XX错误,这并不理想 为了解决这个问题,我想到了暂停的pod的过度供应。但是,考虑到服务器的大小通常非常小(正常情况下一

如果一个网站有一次上门推销,有很多人(约5万人)正在等待倒数计时结束并进入页面,那么如何用GKE以一种经济高效的方式解决这个问题

这似乎是GKE存在的原因,解决方案可能是使用集群autoscaler和HPA,GKE可以处理流量。但实际上情况不同,当autoscaler尝试创建节点并提取容器的图像时,可能需要花费一定的时间(在某些情况下可能需要一到两分钟)。在此期间,用户会看到5XX错误,这并不理想

为了解决这个问题,我想到了暂停的pod的过度供应。但是,考虑到服务器的大小通常非常小(正常情况下一天只能处理100个请求),而且突然之间一秒钟就处理了50K个请求,这是一个可行的解决方案吗?暂停的POD似乎只能确保autoscaler不会删除不工作的节点,因此在这种情况下,50个节点必须始终被暂停的POD占用,我假设GKE中的运行时间仍然是可计费的(因为节点没有做任何事情)


哪种可行的解决方案可以每天使用n1-standard-1服务100个请求,但也可以在10秒内扩展到~50k?

最快不到10秒。只有在无服务器的情况下才能访问

Pods自动缩放的最佳时间为20-30秒(取决于您的准备就绪探测器、负载平衡器探测器、映像缓存等)。但是你仍然需要有一个节点池来适应这个容量,这是同样的钱——你是对的

节点+吊舱自动缩放大约需要5分钟

如果您选择无服务器,请确保您知道(增加?)您的帐户限制。因为它的扩展速度如此之快,而且每运行一次都会收取费用,所以很容易意外地增加您的账单。因此,所有提供程序都限制了并发函数执行的默认数量,例如,AWS默认每个帐户有1000个。这可以通过支持来增加


我记得AWS的这篇文章:。不幸的是,google函数没有类似的写入,但我相信它们的功能非常相似。

Max,感谢您的回答和建议(尤其是最后一个链接)。无服务器的问题是所有配置都不再受您的控制。此外,即使对于Lambda,它们也提供了并发性,这本质上是保持一些空闲电源来处理流量。我对使用GKE并以某种方式处理大型(预期)负载的解决方案感兴趣。公平地说,我将等待一段时间,看看是否有人或您可以想出一个解决方案,然后我将接受您的回答(老实说,我不知道在这一点上是否有这样的解决方案。)作为一个疯狂的想法,您会推荐任何半/自动调度(这听起来与autoscalar和整个KE概念是多余的)要解决这个问题?是的,lambdas也必须“预热”,但这仍然比5分钟快得多。此外,配置的并发性根据时间表工作,因此您可以尝试猜测突发窗口并做好准备:说到猜测突发窗口:您可以使用
--upscale period
标志和cluster autoscaler一起尝试此守护进程。Cluster autoscaler有一个名为PodFitsResources的谓词,它会注意到您要求的pod比Cluster能够容纳的要多得多,并进行扩展。即使没有实际的负载,节点的数量也会增加,只是为了运行所有的pod。在这种情况下,请确保您对部署设置了资源请求和限制。k8s是当今最强大、最先进的调度程序,如果您仍然想使用容器,我会坚持使用它。请注意,serverless也不仅限于PaaS产品,还有,但您仍然需要处理基础服务器的预测/计划扩展。有一份关于通过
GKE
处理流量的官方文档:。特别是这一部分:准备基于云的kubernetes应用程序。非常好的文章Dawid。非常感谢。