首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于OOM导致Pod崩溃的多个请求-这不是负载均衡器的工作吗?

由于OOM导致Pod崩溃的多个请求-这不是负载均衡器的工作吗?
EN

Stack Overflow用户
提问于 2020-01-29 13:18:09
回答 1查看 110关注 0票数 0

我尝试通过Kubernetes托管2-3个机器学习模型。我现在对模型的使用不多,但它们是关键的,需要在被调用时可用。

我通过flask应用程序提供对模型的访问,并使用负载均衡器将流量路由到flask应用程序。

一切正常,因为请求只是间歇性地发出,但我发现如果同时发出多个请求,我的pod就会因为OOM而崩溃。这不是负载均衡器的工作吗?以确保请求被适当地路由?(在这种情况下,在前一个请求完成后路由下一个请求?)

下面是我的部署:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: flask-service
  labels:
    run: flask-service
spec:
  selector:
    app: flask
  ports:
  - protocol: "TCP"
    port: 5000
    targetPort: 5000
  type: LoadBalancer
---  
apiVersion: apps/v1
kind: Deployment
metadata:
  name: flask
spec:
  selector:
    matchLabels:
      app: flask  
  replicas: 1
  template:
    metadata:
      labels:
        app: flask
    spec:
      containers:
      - name: flask
        imagePullPolicy: Always
        image: gcr.io/XXX/flask:latest
        ports:
        - containerPort: 5000
        resources:
          limits:
            memory: 7000Mi
          requests:
            memory: 1000Mi
EN

回答 1

Stack Overflow用户

发布于 2020-01-29 13:48:46

这不是负载均衡器的工作吗?以确保请求被适当地路由?

是的,你是对的。但是..。

副本:1

您只使用一个副本,因此负载均衡器没有路由到应用程序的其他实例的选项。给它多个实例。

我发现如果同时发出多个请求,我的pod就会因为面向对象对象模型而崩溃

听起来你的应用程序的资源非常有限。

代码语言:javascript
复制
    resources:
      limits:
        memory: 7000Mi
      requests:
        memory: 1000Mi

当你的应用程序使用了更多的7000Mi时,它将会被OOM杀死(还要考虑增加请求值)。如果你的应用需要更多的内存,你可以给它更多的内存(垂直扩展)或者添加更多的实例(水平扩展)。

卧式吊舱自动定标器

通常一切正常,因为请求只是间歇性地发出

考虑使用Horizontal Pod Autoscaler,当你有更多的请求时,它可以将你的应用程序扩展到更多的实例,当请求更少时,它可以缩小你的应用程序的规模。例如,这可以基于内存或CPU使用率。

使用队列

在前一个请求完成后,

会路由下一个请求吗?

如果这是您想要的行为,那么您需要使用队列,例如RabbitMQ或Kafka来一次处理一个请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59960860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档