如何解决气流Unittest.cfg权限问题?
因此,我正在EKS上设置Airflow。一切似乎都准备就绪,但我不能使用KubernetesExecutor。每次尝试使用它时,都会出现此错误:
with open(TEST_CONFIG_FILE,'w') as f:
PermissionError: [Errno 13] Permission denied: '/usr/local/airflow/unittests.cfg'
我尝试过:进入Pod和chmod并整理文件。我在docker映像中尝试了相同的操作,还尝试创建unitttests.cfg文件,并将其从本地复制到映像中。它们都返回相同的错误。
Dockerimage:
FROM python:3.7.6-slim
ARG AIRFLOW_USER_HOME=/var/lib/airflow
ENV AIRFLOW_HOME=$AIRFLOW_USER_HOME
# Define en_US.
ENV LANGUAGE en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ENV LC_CTYPE en_US.UTF-8
ENV LC_MESSAGES en_US.UTF-8
RUN mkdir $AIRFLOW_USER_HOME && \
useradd -ms /bin/bash -d ${AIRFLOW_USER_HOME} airflow && \
buildDeps='freetds-dev libkrb5-dev libsasl2-dev libssl-dev libffi-dev libpq-dev' \
apt-get update && \
apt-get install -yqq --no-install-recommends $buildDeps build-essential default-libmysqlclient-dev && \
pip install psycopg2-binary \
pip install --no-cache-dir 'apache-airflow[crypto,kubernetes,postgres,mysql]' && \
apt-get purge --auto-remove -yqq $buildDeps && \
apt-get autoremove -yqq --purge && \
rm -rf /var/lib/apt/lists/*
COPY ./dags ${AIRFLOW_USER_HOME}/dags
COPY ./config/unittests.cfg ${AIRFLOW_USER_HOME}/unittests.cfg
RUN adduser airflow sudo
RUN chgrp -R airflow ${AIRFLOW_USER_HOME}
RUN chown -R airflow ${AIRFLOW_USER_HOME}
USER airflow
WORKDIR $AIRFLOW_USER_HOME
达斯
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime
default_args = {
"start_date": datetime(2020,9,24),"email_on_failure": False,"email_on_retry": False,"retries": 0,'run_as_user': 1000
}
dag = DAG("test_bash_dag",default_args=default_args,schedule_interval=None,catchup=False)
t1 = BashOperator(task_id="foo",bash_command="echo foo",xcom_push=True,dag=dag)
t2 = BashOperator(task_id="bar",bash_command="echo bar",dag=dag)
t2.set_upstream(t1)
如您所见,dag实际上只是一个测试,但已经被困在这里一段时间
解决方法
您可以尝试扩展气流映像 https://airflow.apache.org/docs/apache-airflow/1.10.13/production-deployment.html#extending-the-image 而不是在 python 映像上安装气流。
另外一个提示——官方的气流掌舵图https://airflow.apache.org/docs/helm-chart/stable/index.html已经发布,你可以将其用于Kubernetes executor。
,可能是由于缺少unittests.cfg
造成的。
尝试添加:
RUN airflow initdb
(此命令将创建它)
我遇到了类似的问题。我的 AIRFLOW_HOME env 变量指向错误的目录,并通过将 AIRFLOW_HOME
env 变量设置为正确的目录来修复它。
我认为 OP 的问题就是这种情况,因为 docker 图像集
ENV AIRFLOW_HOME="/var/lib/airflow"
,但权限被拒绝消息暗示 AIRFLOW_HOME 设置为 "/usr/local/airflow/"
。
不知何故,在执行气流时,它正在加载不同的 AIRFLOW_HOME 变量。
,我最近一直被这个问题困扰。希望这会有所帮助。 您需要在 kubernetes 设置 (pod_template_file) 中使用相同的运行用户
visitPage(){
if(this.hasFactor){
this.trackLink(SearchSharedTracking.goToFactor,this.Factor);
window.open('https://www.spacepln.com/factor/ ','_blank');
}else{
this.trackLink(SearchSharedTracking.goToQuickpay,this.Quickpay);
window.open('https://www.spacepln.com/quickpay','_blank');
}
}
确保它是用户 ID 而不是用户名。例如,值 50000 有效,但值 'airflow' 可能无效。
就你而言,你运行了这个
RUN chown -R 气流 ${AIRFLOW_USER_HOME}
所以你需要弄清楚这个用户名“airflow”的用户 ID 是什么,然后把它放在 pod 模板文件中,就像我上面在 AIRFLOW__KUBERNETES__RUN_AS_USER 环境变量中指定的那样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。