首页 > 解决方案 > 如果 SHA 摘要不同,则 Airflow KubernetesPodOperator 图像拉取策略拉取

问题描述

IfNotPresent当前使用带有 default_image_policy ( ) 的KubernetesPodOperator 。将为不同的环境使用静态标签 ID。例如,在 dev env 中,标签将为dev,在 qa env 中,标签将为qa,依此类推。问题是是否真的有图像的新版本(不同的 sha 摘要)但标签 ID 相同。我可以将图像策略更改为,Always但它会一直下载。Airflow DAG 包含多个使用相同映像的 KubernetesPodOperator 的任务,我不希望每次运行任务时都下载一个映像。

是否有图像策略检查sha摘要(而不是标签 ID)是否存在,如果不存在则下载它?

标签: kubernetesairflow

解决方案


在容器图像定义中,您可以指定sha以确保它提取/使用正确的图像。例如:

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
spec:
  containers:
  - name: ubuntu
    image: ubuntu@sha256:bc2f7250f69267c9c6b66d7b6a81a54d3878bb85f1ebb5f951c896d13e6ba537
    command: [ "/bin/bash", "-c", "--" ]
    args: [ "while true; do sleep 30; done;" ]

或者对于 Airflow KubernetesPodOperator,您可以使用:

example = KubernetesPodOperator(
    image=ubuntu@sha256:bc2f7250f69267c9c6b66d7b6a81a54d3878bb85f1ebb5f951c896d13e6ba537,
    task_id="example_task",
    ...
)

推荐阅读