首页 > 解决方案 > Airflow 与 Kerberos 的集成如何工作?

问题描述

我们正在使用具有以下设置的 Airflow 2.0.1:

首先,我们设置了一个自己的作业来更新 run_as_user 用户的 Kerberos 票证。大约一周后它运行良好,然后一名工人开始因丢失 Kerberos 票而失败。我们找不到上次成功运行和失败作业之间的任何变化;节点上有有效票证;所以我们阻止了工人。第二天,我们完全重新启动了 Airflow,所有工作人员都报告了缺少 Kerberos 票证。暂时,当 kinit 在 DAG 中运行并根据https://airflow.apache.org/docs/apache-airflow/2.0.1/security/kerberos启用 Kerberos 时,我们可以使用一名工作人员运行作业.html?highlight=kerberos

问题是

标签: airflowkerberos

解决方案


感谢您的评论。我做了一些测试,并认为现在更好地理解发生在我们身上的事情:

从 BashOperator 访问 hdfs 开始因 Kerberos 错误而失败,我认为我必须根据https://airflow.apache.org/docs/apache-airflow/2.0.1/security/kerberos.html?highlight=kerberos设置配置。在测试它时,工作人员试图通过在airflow.cfg 中配置并由airflow kerberos 创建的run_as_user 用户票证缓存文件读取它并没有权限...

因此,我正在检查票在生产中的存储位置,它们位于运行 Airflow 工作程序的服务的 /tmp 中。我的意思是 kinit 创建的票证在 DAG 中的 BashOperators 中运行,但是我们更新票证的脚本对 Airflow 工作程序运行的所有节点执行 ssh,因此票证存储在常规服务器 /tmp 中。

在我们在服务中启动 Airflow 几天后,失败就开始了。我们仍然有很多直接在 DAG 中的 kinit(因为这是我们之前使用的方式,因为之前我们使用了队列)。通过在几个没有队列的节点上启动工作人员,我们还设置了更新 ticktes 的脚本(执行 ssh ...),以确保在所有节点上更新票证。我认为 Kerberos 问题是在服务重新启动后发生的,因为 DAG 中 kinit 创建的票证已被删除。如果是这样的话,我们第一次启动服务时也会出现Kerberos问题,但我们也有其他问题,所以可能我们没有注意到。


推荐阅读