gpt4 book ai didi

kubernetes - Helm stable/airflow - 使用 Helm 图表失败的具有共享持久卷的 Airflow 部署的自定义值

转载 作者:行者123 更新时间:2023-12-02 11:36:55 24 4
gpt4 key购买 nike

客观的

我想在 Kubernetes 上部署 Airflow,其中 pod 可以在共享持久卷中访问相同的 DAG。
根据文档( https://github.com/helm/charts/tree/master/stable/airflow#using-one-volume-for-both-logs-and-dags ),似乎我必须设置这些值并将其传递给 Helm: extraVolume , extraVolumeMount , persistence.enabled , logsPersistence.enabled , dags.path , logs.path .

问题

我在安装官方 Helm 图表时传递的任何自定义值都会导致类似于以下内容的错误:

Error: YAML parse error on airflow/templates/deployments-web.yaml: error converting YAML to JSON: yaml: line 69: could not find expected ':'
  • 工作正常:microk8s.helm install --namespace "airflow" --name
    "airflow" stable/airflow
  • 不工作 :
  • microk8s.helm install --namespace "airflow" --name "airflow" stable/airflow \
    --set airflow.extraVolumes=/home/*user*/github/airflowDAGs \
    --set airflow.extraVolumeMounts=/home/*user*/github/airflowDAGs \
    --set dags.path=/home/*user*/github/airflowDAGs/dags \
    --set logs.path=/home/*user*/github/airflowDAGs/logs \
    --set persistence.enabled=false \
    --set logsPersistence.enabled=false
  • 也不起作用 :microk8s.helm install --namespace "airflow" --name "airflow" stable/airflow --values=values_pv.yaml , 与 values_pv.yaml :https://pastebin.com/PryCgKnC
  • 编辑:请改/home/*user*/github/airflowDAGs到您机器上的路径以复制错误。

  • 顾虑
  • 可能是因为默认 values.yaml 中的这些行而出错了:
  • ## Configure DAGs deployment and update
    dags:
    ##
    ## mount path for persistent volume.
    ## Note that this location is referred to in airflow.cfg, so if you change it, you must update airflow.cfg accordingly.
    path: /home/*user*/github/airflowDAGs/dags

    如何配置 airflow.cfg在 Kubernetes 部署中?在 Airflow 的非容器化部署中,可以在 ~/airflow/airflow.cfg 中找到此文件.
  • 69号线airflow.cfg指:https://github.com/helm/charts/blob/master/stable/airflow/templates/deployments-web.yaml#L69

  • 其中包含 git .是 .yaml错误配置,并错误地尝试使用 git pull ,但由于没有指定 git 路径,这会失败吗?

    系统
  • 操作系统:Ubuntu 18.04(单机)
  • MicroK8s:v1.15.4 修订版:876
  • microk8s.kubectl version :v1.15.4
  • microk8s.helm version :v2.14.3



  • 如何将正确的值正确传递给 Airflow Helm 图表,以便能够在 Kubernetes 上部署 Airflow,Pod 可以访问相同的 DAG 并在共享持久卷上登录?

    最佳答案

    不确定你是否已经解决了这个问题,但如果你还没有解决,我认为有一个非常简单的方法接近你正在做的事情。

    所有的部署、服务、Pod 都需要持久卷信息——它在本地的位置以及它应该在每个 kube 种类中的位置。看起来图表的 values.yaml 提供了一种方法。我只会用下面的 dag 来展示这一点,但我认为日志的过程也应该大致相同。

    所以基本步骤是,1)告诉 kube 'volume'(目录)在你的计算机上的位置,2)告诉 kube 把它放在你的容器中的哪个位置,以及 3)告诉 Airflow 在哪里寻找 dag。因此,您可以从 helm 存储库复制 values.yaml 文件并使用以下内容对其进行更改。

  • airflow

  • 首先,您需要创建一个包含本地目录中项目的卷(这是下面的 extraVolumes)。然后,需要安装它 - 幸运的是把它放在这里会将它模板化到所有 kube 文件中。创建该卷后,您应该告诉它挂载 dags .所以基本上, extraVolumes创建卷,然后 extraVolumeMounts挂载卷。
    airflow:
    extraVolumeMounts: # this will get the volume and mount it to that path in the container
    - name: dags
    mountPath: /usr/local/airflow/dags # location in the container it will put the directory mentioned below.

    extraVolumes: # this will create the volume from the directory
    - name: dags
    hostPath:
    path: "path/to/local/directory" # For you this is something like /home/*user*/github/airflowDAGs/dags

  • 告诉 Airflow 配置 dags 在容器中的位置(与上面相同的 yaml 部分)。
  • airflow:
    config:
    AIRFLOW__CORE__DAGS_FOLDER: "/usr/local/airflow/dags" # this needs to match the mountPath in the extraVolumeMounts section
  • 使用 helm 和您的新设备安装 values.yaml文件。
  • helm install --namespace "airflow" --name "airflow" -f local/path/to/values.yaml stable/airflow

    最后,这应该允许 Airflow 看到 dags 文件夹中的本地目录。如果您添加一个新文件,它应该显示在容器中 - 尽管它可能需要一分钟才能显示在 UI 中 - 我不认为 dagbag 进程一直在运行?无论如何,希望这会有所帮助!

    关于kubernetes - Helm stable/airflow - 使用 Helm 图表失败的具有共享持久卷的 Airflow 部署的自定义值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58299948/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com