如何解决为气流将创建的Pod分配内存限制并限制其在kubernetes中运行任务
我已经部署了具有头盔稳定/气流的气流:https://github.com/helm/charts/tree/master/stable/airflow
我已将其与celery executor一起部署,并且运行了需要读取一张大桌子的任务。我在运行此任务的Pod中收到此错误:
The node was low on resource: memory. Container base was using 3642536Ki,which exceeds its request of 0.
I understand that I have exceed the memory of the node is running this pod.
我要修改内存限制,并限制每个Pod在气流中使用的CPU。我看到我可以限制工人的资源。
我的问题是:
如何指定内存请求,即将要从工作程序创建的Pod的限制?因为我只能看到如何设置工人的资源,而不能看到工人创建的花盆。
解决方法
我认为您可能会将Celery Executor与Kubernetes Executor混为一谈。 Kubernetes执行器为每个任务实例创建一个新的Pod。使用Celery Executor,您将获得预设数量的工作人员吊舱来运行任务。例如,您将提前设置工人数here。在这种情况下,设置these values应该为您的工作人员提供所需的资源。他们的自述文件很好地说明了您追求的是如何利用动态缩放。
,您可以通过修改头盔图表中的values.yaml
为调度程序指定资源。
您可以通过以下方式在本地拉动图表来完成此操作:
helm fetch --untar stable/airflow
然后在values.yaml
中修改scheduler:resources
文件,例如:
163 scheduler:
164 resources:
165 requests:
166 cpu: "100m"
167 memory: "1Gi"
168 limits:
169 cpu: "100m"
170 memory: "1Gi"
然后安装图表helm install airflow .
,指定的资源将分配给pod。