我目前正在为我的应用程序部署后端服务API(当然要在python和flask环境中运行tensorflow模型,并带有GPU),该API需要具有可扩展性,以便我可以同时说1000个请求。
该模型需要为每个请求运行15秒,这相对较慢,并且我需要为每个请求满足firebaseapp的超时限制。问题是我想在google-kubernetes-engine中部署这个东西,但是我不知道如何部署我的映像,以便每个pod(运行一个映像)仅在一个gpu节点中运行(反之亦然)并且每个请求都定向到一个可用的容器,这意味着没有两个请求都定向到相同的容器。
我知道有一个名为Daemonset https://cloud.google.com/kubernetes-engine/docs/concepts/daemonset的东西,但是我不确定这是否适合我的需求。另一个问题是,是否可以按请求(或按Pod可用性)扩展Pod / gpu节点?例如,如果当前只有一个节点运行一个Pod,则可以服务第一个传入请求,如果第二个请求进入,则需要生成第二个Pod / gpu节点来服务该请求。什么是流量导向机制?是Ingress服务吗?如何在流量引导机制中检测pod的可用性?总结起来,这是三个问题:1.如何将每个请求定向到每个不同的Pod? 2.如何在一个GPU节点中仅运行一个Pod? 3.如何扩展(可能是一个Daemonset?)并快速扩展,以便可以在30秒内满足每个请求?
答案 0 :(得分:0)
您可以使用Container-native load balancing来定位广告连播并平均分配流量。
请查看Pod anti-affinity,其思想是,如果该节点X已经在运行一个或多个满足规则的Pod,则该Pod不应在节点X中运行。
对于自动缩放,我将使用HPA(水平的pod自动缩放器),以便pod可以根据要监视的指标进行缩放。