首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带KubernetesPodOperator: TemplateNotFound的气流2.0

带KubernetesPodOperator: TemplateNotFound的气流2.0
EN

Stack Overflow用户
提问于 2021-10-03 17:41:15
回答 1查看 347关注 0票数 0

我在KubernetesPodOperator中使用Airflow2.0 2.0,希望运行一个命令,该命令使用操作符运行的映像中的文件作为参数。这就是我所用的:

代码语言:javascript
复制
KubernetesPodOperator(
    namespace=commons.kubernetes_namespace,
    labels=commons.labels,
    image=f"myregistry.io/myimage:{config['IMAGE_TAG']}",
    arguments=[
        "python",
        "run_module.py ",
        "-i",
        f'args/{config["INPUT_DIR"]}/{task_id}.json'
    ],
    name=dag_name + task_id,
    task_id=task_id,
    secrets=[secret_volume]
)

但这给了我一个错误:

代码语言:javascript
复制
raise TemplateNotFound(template)
jinja2.exceptions.TemplateNotFound: args/airflow2test/processing-pipeline.json

图像不使用任何宏。

有人有线索吗?我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-03 18:19:20

这是以按下apache-airflow-providers-cncf-kubernetes的版本2.0.0中发布的bug开始的。更改的目的是允许对.json文件进行模板化。有一个关于它所造成的问题的GitHub问题。该错误最终由按下解决,该版本在提供程序的2.0.2版本中发布。

解决方案:

  1. 升级到最新的apache-airflow-providers-cncf-kubernetes (当前为2.0.2)
  2. 如果升级不是选项,请使用自定义KubernetesPodOperator

解决这个问题有两种方法,一种是改变template_fields,另一种是改变template_ext

第一个选项:正如raphaelauv在问题上发布的那样,不允许呈现arguments字段:

代码语言:javascript
复制
class MyKubernetesPodOperator(KubernetesPodOperator):
    template_fields = tuple(x for x in KubernetesPodOperator.template_fields if x != "arguments")

2st选项:如果您不喜欢呈现.json文件:

代码语言:javascript
复制
class MyKubernetesPodOperator(KubernetesPodOperator):
    template_ext = ('.yaml', '.yml',)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69427381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档