【问题标题】:Faced the error "ModuleNotFoundError: No module named 'airflow'" during deploy Apache Airflow on OpenShift在 OpenShift 上部署 Apache Airflow 期间遇到错误“ModuleNotFoundError: No module named 'airflow'”
【发布时间】:2021-12-28 15:53:06
【问题描述】:

我尝试在 corp OpenShift 集群上部署 Apache Airflow,但遇到了问题:

Traceback (most recent call last):
File "/home/airflow/.local/bin/airflow", line 5, in <module>
    from airflow.__main__ import main
    ModuleNotFoundError: No module named 'airflow'

我在airflow github 中发现了类似的问题。这个问题似乎与 UID\GID 有关。但在airflow docs 中说:

Airflow 图像与 Open-Shift 兼容,这意味着您可以使用随机用户 ID 和组 id 0(root)启动它。

下面是我的 OpenShift 模板示例。在这里,我尝试运行 airflow kerberos 来刷新 kerberos 令牌。我知道,这不是一个“整体气流”,但我想命令 airflow kerberos 应该在这个容器中工作,而无需其他气流服务。

apiVersion: v1
kind: Pod
metadata:
  name: airflow-kerberos
  labels:
    name: ${APPLICATION_NAME}
spec:
  volumes:
    - name: keytab-shared-volume
      persistentVolumeClaim:
        claimName: ${PERSISTENT_VOLUME_KRB5}
    - name: airflow-dags
      persistentVolumeClaim:
        claimName: ${PERSISTENT_VOLUME_CLAIM_DAG}
    - name: airflow-logs
      persistentVolumeClaim:
        claimName: ${PERSISTENT_VOLUME_CLAIM_LOG}
  containers:
    - name: airflow-kerberos
      image: apache/airflow:2.2.3
      env:
        - name: AIRFLOW__KERBEROS__KEYTAB
          value: ${KEYTAB_FILE}
      imagePullPolicy: Always
      resources:
        requests:
          cpu: 1
          memory: "512Mi"
      volumeMounts:
        - name: keytab-shared-volume
          mountPath: ${KRB5_SHARED_DIR}
        - name: airflow-dags
          mountPath: "/opt/airflow/dags"
        - name: airflow-logs
          mountPath: "/opt/airflow/logs"
      command: ["sh", "-c", "airflow kerberos"]
  dnsPolicy: ClusterFirst
  imagePullSecrets:
    - name: docker-hub-secret
  restartPolicy: Always
  serviceAccount: default

【问题讨论】:

  • 所以,它似乎是不正确的命令。我应该使用args: ["kerberos"] 而不是command: ["sh", "-c", "airflow kerberos"]

标签: openshift airflow kerberos


【解决方案1】:

新的气流 2.2.X,在 Docker Swarm 中运行,成功部署。 当我尝试在 Azure Kubernetes 中进行部署时,我遇到了同样的问题。 可以在这里找到错误和修复https://github.com/apache/airflow/issues/14520 您应该使用非 root 用户。 作为临时解决方法,您还可以将包含用户模块的目录添加到 PYTHONPATH 环境变量中。

环境: &airflow-common-env PYTHONPATH: "/home/airflow/.local/lib/python3.6/site-packages"

添加环境变量后我就可以成功部署AKS了,希望对你有帮助

【讨论】:

    猜你喜欢
    • 2022-11-17
    • 2021-05-20
    • 2020-09-26
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    相关资源
    最近更新 更多