我使用helm在k8s集群中部署了使用CeleryExecutor的airflow。我定义了工人的数量。我最初认为这是工人的最大数量,但看起来工人豆荚总是向上的。因此,这就变成了一个静态的工作者数量。为了解决这个静态的工作线程集,我希望使用HorizontalPodAutoScaler使它动态。好吧,我使用的是KubernetesPodOperator,这意味着工作者本身并不做工作/任务,而是为每个任务旋转一个新的资源(Pod)。因此,这成为我实现HorizontalPodAutoScaler的一个问题,因为我需要扩展工作线程的数量,但由于不是工作进程在做工作,因此它将无法正确地测量CPU/内存使用量来扩展/缩减。我认为HorizontalPodAutoScaler可以用于运行KubernetesExecutor的气流,但对CeleryExecutor不确定。基本上,我需要的是基于KubernetesPodOperator将创建的pods的度量来实现HorizontalPodAutoScaler,然后增加/减少工作进程的数量。
那么,我如何使用HorizontalPodAutoScaler,或者是否有其他替代方案来使工作进程大小动态变化呢?
发布于 2020-03-12 04:48:52
如果您使用KubernetesExecutor,则不需要添加HorizontalPodAutoScaler,因为它确实基于矩阵扩展pod,从技术上讲,KubernetesExecutor每次为将要执行的DAG创建新的pod,是的,您可以在DAG中为pod定义资源。如果airflow部署在kube上,那么celeryExecutor不是一个好主意。
https://stackoverflow.com/questions/60603234
复制相似问题