当前使用带有default_image_policy(IfNotPresent
)的KubernetesPodOperator。将针对不同环境使用静态标签ID。例如,在dev env中,标签将为dev
,在qa env中,标签将为qa
,依此类推。问题是图像是否实际上有新版本(不同的摘要),但标签ID相同。我可以将映像策略更改为Always
,但是它将一直下载。 Airflow DAG包含使用同一图像的KubernetesPodOperator的多个任务,我不希望总是为每个任务运行都下载图像。
是否有一种映像策略可以检查sha
摘要(而不是标签ID)是否存在,如果不存在,则将其下载?
答案 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",
...
)