Я использую изображение докера ffmpeg из KubernetesPodOperator () внутри Airflow для извлечения кадров из видео.
Работает нормально, но я не могу получить сохраненные кадры: как можно сохранитькадры, сгенерированные Pod непосредственно в мою файловую систему (хост-машину)?
Обновление:
С https://airflow.apache.org/kubernetes.html# Мне кажется, я понял, что янужно работать с параметрами volume_mount
, volume_config
и volume
, но все равно не повезло.
Сообщение об ошибке:
"message":"Not found: \"test-volume\"","field":"spec.containers[0].volumeMounts[0].name"
PV и PVC:
Команда kubectl get pv,pvc test-volume
дает:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/test-volume 10Gi RWO Retain Bound default/test-volume manual 3m
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/test-volume Bound test-volume 10Gi RWO manual 3m
Код:
volume_mount = VolumeMount('test-volume',
mount_path='/',
sub_path=None,
read_only=False)
volume_config= {
'persistentVolumeClaim':
{
'claimName': 'test-volume' # uses the persistentVolumeClaim given in the Kube yaml
}
}
volume = Volume(name="test-volume", configs=volume_config)
with DAG('test_kubernetes',
default_args=default_args,
schedule_interval=schedule_interval,
) as dag:
extract_frames = KubernetesPodOperator(namespace='default',
image="jrottenberg/ffmpeg:3.4-scratch",
arguments=[
"-i", "http://www.jell.yfish.us/media/jellyfish-20-mbps-hd-hevc-10bit.mkv",
"test_%04d.jpg"
],
name="extract-frames",
task_id="extract_frames",
volume=[volume],
volume_mounts=[volume_mount],
get_logs=True
)