Num*_*uis 4 kubernetes airflow kubernetes-helm microk8s
我想在 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 ':'
Run Code Online (Sandbox Code Playgroud)
microk8s.helm install --namespace "airflow" --name
"airflow" stable/airflowmicrok8s.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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如何airflow.cfg在 Kubernetes 部署中进行配置?在 Airflow 的非容器化部署中,可以在 中找到此文件~/airflow/airflow.cfg。
airflow.cfg指的是:https://github.com/helm/charts/blob/master/stable/airflow/templates/deployments-web.yaml#L69其中包含git。是否.yaml配置错误,并且错误地尝试使用git pull,但由于未指定 git 路径,因此失败?
microk8s.kubectl version:v1.15.4microk8s.helm version:v2.14.3如何正确地将正确的值传递到 Airflow Helm 图表,以便能够在 Kubernetes 上部署 Airflow,并且 Pod 可以访问共享持久卷上的相同 DAG 和日志?
小智 6
不确定你是否已经解决了这个问题,但如果你还没有解决,我认为有一个非常简单的方法接近你正在做的事情。
所有部署、服务、Pod 都需要持久卷信息——它在本地的位置以及在每种 kube 类型中应该放置的位置。看起来图表的 value.yaml 提供了一种方法来执行此操作。我只会在下面用 dags 来展示这一点,但我认为日志的过程也应该大致相同。
因此,基本步骤是,1) 告诉 kube “卷”(目录)在计算机上的位置,2) 告诉 kube 将其放在容器中的何处,以及 3) 告诉气流在哪里寻找 dags。因此,您可以从 helm 存储库复制values.yaml 文件并使用以下内容对其进行更改。
airflow部分首先,您需要创建一个包含本地目录中的项目的卷(如下所示extraVolumes)。然后,需要安装它 - 幸运的是,将其放在这里会将其模板化到所有 kube 文件中。创建该卷后,您应该告诉它 mount 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
Run Code Online (Sandbox Code Playgroud)
airflow:
config:
AIRFLOW__CORE__DAGS_FOLDER: "/usr/local/airflow/dags" # this needs to match the mountPath in the extraVolumeMounts section
Run Code Online (Sandbox Code Playgroud)
values.yaml文件安装。helm install --namespace "airflow" --name "airflow" -f local/path/to/values.yaml stable/airflow
Run Code Online (Sandbox Code Playgroud)
最后,这应该允许气流看到 dags 文件夹中的本地目录。如果您添加一个新文件,它应该显示在容器中 - 尽管可能需要一分钟才能显示在 UI 中 - 我不认为 dagbag 进程一直在运行?无论如何,希望这有帮助!
| 归档时间: |
|
| 查看次数: |
9477 次 |
| 最近记录: |