我使用来自KubernetesPodOperator()内部气流的ffmpeg对接图像从视频中提取帧。
它工作得很好,但我无法检索存储的帧:如何将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
)发布于 2019-03-06 10:30:53
下面是一些猜测,对可能出了什么问题的猜测:
发布于 2020-03-25 15:10:25
您应该创建一个测试荚来验证您的k8s对象(卷、荚、configmap、机密等),然后再用KubernetesPodOperator包装在DAG中创建这个容器。根据上面的代码,它可以如下所示:
apiVersion: v1
kind: Pod
metadata:
name: "extract-frames-pod"
namespace: "default"
spec:
containers:
- name: "extract-frames"
image: "jrottenberg/ffmpeg:3.4-scratch"
command:
args: ["-i", "http://www.jell.yfish.us/media/jellyfish-20-mbps-hd-hevc-10bit.mkv", "test_%04d.jpg"]
imagePullPolicy: IfNotPresent
volumeMounts:
- name: "test-volume"
# do not use "/" for mountPath.
mountPath: "/images"
restartPolicy: Never
volumes:
- name: "test-volume"
persistentVolumeClaim:
claimName: "test-volume"
serviceAccountName: default我希望您会得到与您所犯的相同的错误:"message":"Not found: \"test-volume\"","field":"spec.containers[0].volumeMounts[0].name"
我认为这是PersistentVolume清单文件中的一个问题。你设置路径test-volume了吗?类似于:
path: /test-volume路径是否存在于目标卷中?如果没有,则创建该目录/文件夹。也许能解决你的问题。
https://stackoverflow.com/questions/54828390
复制相似问题