【问题标题】:Google Cloud Composer pulls stale image from Google Container RegistryGoogle Cloud Composer 从 Google Container Registry 中提取过时的镜像
【发布时间】:2020-10-08 21:08:53
【问题描述】:

我正在尝试通过 Google Cloud Composer 和 KubernetesPodOperator 在从私有 Google 容器注册表中的映像构建的环境中运行 Airflow 任务。 Container Registry 和 Cloud Composer 实例位于同一个项目下,一切正常,直到我也更新了 DAG 引用的映像。

当我更新 Container Registry 中的映像时,Cloud Composer 继续使用陈旧的映像。

具体来说,在下面的代码中

import datetime
import airflow
from airflow.contrib.operators import kubernetes_pod_operator


YESTERDAY = datetime.datetime.now() - datetime.timedelta(days=1)


# Create Airflow DAG the the pipeline
with airflow.DAG(
        'my_dag',
        schedule_interval=datetime.timedelta(days=1),
        start_date=YESTERDAY) as dag:

    my_task = kubernetes_pod_operator.KubernetesPodOperator(
        task_id='my_task',
        name='my_task',
        cmds=['echo 0'],
        namespace='default',
        image=f'gcr.io/<my_private_repository>/<my_image>:latest')

如果我在 Container Registry 中更新映像 gcr.io/&lt;my_private_repository&gt;/&lt;my_image&gt;:latest,Cloud Composer 会继续使用 Container Registry 中不再存在的陈旧映像并引发错误。

这是一个错误吗?

非常感谢!

【问题讨论】:

  • 我想知道当前的答案是否有助于解决您的问题。如果没有,我有两个问题; 1)您是否使用latest 标签推送了图像? 2)您收到的错误是什么?

标签: kubernetes airflow google-cloud-composer


【解决方案1】:

documentation for KubernetesPodOperator 中所述,image_pull_policy 的默认值为'IfNotPresent'。您需要将 Pod Spec 配置为始终拉取镜像。

最简单的方法是将image_pull_policy 设置为'Always'

K8s Container Images documentation 中提到的其他方法很少。

【讨论】:

    猜你喜欢
    • 2015-09-04
    • 2018-10-31
    • 2020-02-01
    • 2019-03-05
    • 2020-10-10
    • 1970-01-01
    • 2017-07-02
    • 2016-05-11
    • 2021-06-07
    相关资源
    最近更新 更多