You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Nicolas (Jira)" <ji...@apache.org> on 2020/02/28 09:24:00 UTC
[jira] [Updated] (AIRFLOW-6953) KubernetesExecutor: ba able to
mount volumes in all worker pods
[ https://issues.apache.org/jira/browse/AIRFLOW-6953?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nicolas updated AIRFLOW-6953:
-----------------------------
Summary: KubernetesExecutor: ba able to mount volumes in all worker pods (was: Kubernetes: Mount Volumes in all worker pods )
> KubernetesExecutor: ba able to mount volumes in all worker pods
> ----------------------------------------------------------------
>
> Key: AIRFLOW-6953
> URL: https://issues.apache.org/jira/browse/AIRFLOW-6953
> Project: Apache Airflow
> Issue Type: Improvement
> Components: configuration
> Affects Versions: 1.10.0, 1.10.1, 1.10.2, 1.10.3, 1.10.4, 1.10.5, 1.10.6, 1.10.7, 1.10.8, 1.10.9
> Environment: Linux (Debian), on K8S
> Reporter: Nicolas
> Priority: Major
>
> As far as I can tell, there is no easy way to mount one or more volumes into all worker pods when using the {{KubernetesExecutor}}. Though most of the code infrastructure is there (add to address AIRFLOW-3022) one has to add this kind of snippet of code in all his/her DAG to be able to mount a volume systematically.
> {code:python}
> volume_config = {
> 'nfs': {'path': '/',
> 'server': 'fs-23d987e8.efs.eu-west-1.amazonaws.com',
> },
> }
> default_args = {
> # Other args ...
> 'executor_config': {
> 'KubernetesExecutor': {
> 'volumes': [{'name': 'nfs-synchronised-dags', **volume_config}],
> 'volume_mounts': [{'name':'nfs-synchronised-dags',
> 'mountPath': '/usr/local/airflow/dags',
> 'readOnly': True,
> 'subPath': None,
> },
> ],
> },
> },
> }
> {code}
> Not very DRY.
> This makes it particularly difficult to use methods other than git-sync or a PVC to mount a DAG volume. On the long run allowing this could also great simplify the config: instead of having many config stanzas for specific case, you just declare volumes, volumes
> mount and on happens to be a DAG volume, it is only a matter to setting the right path into dags_folder. I really don't understand why Airflow cares so much about PVC and such, that's K8S's deal.
> It would be a matter of adding these sections to Airflow's configuration:
> {code:java}
> [kubernetes_volumes]
> # e.g. for an NFS volume
> <volume name1> = {"nfs": {"path": "/", "server": "my-server.provider.could"}}
> <volume name2> = ...
> [kubernetes_volume_mounts]
> <volume name1> = {"mountPath": "/usr/local/airflow/dags", "readOnly": true, "subPath": null}
> <volume name2> = ..{code}
> The key is the name of the volume and the value is the volume spec, as a JSON document.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)