如果不同的SHA摘要,则气流KubernetesPodOperator映像拉取策略拉取

时间:2020-07-29 19:18:15

标签: kubernetes airflow

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

是否有一种映像策略可以检查sha摘要(而不是标签ID)是否存在,如果不存在,则将其下载?

1 个答案:

答案 0 :(得分:0)

在容器图像定义中,您可以指定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",
    ...
)