我在airflow中有一个使用KubernetesPodOperator的DAG,我正在尝试将pod中运行的容器生成的一些文件返回到airflow主机。对于开发,我的主机是一个Docker容器,运行带有Docker desktop K8s集群的airflow image,对于生产,我使用带有EKS的AWS EC2盒
volume_mount = VolumeMount('dbt-home',
mount_path=<CONTAINER_DIR>,
sub_path=None,
read_only=False)
volume_config= {
'hostPath':
{'path': <HOST_DIR>, 'type': 'DirectoryOrCreate'}
}
volume = Volume(name="dbt-home", configs=volume_config)
dbt_run = KubernetesPodOperator(
namespace='default',
image=MY_IMAGE>,
cmds=["bash", "-cx"],
arguments=[command],
env_vars=MY_ENVIRONMENT,
volumes=[volume],
volume_mounts=[volume_mount],
name="test-run",
task_id="test-run-task",
config_file=config_file,
get_logs=True,
reattach_on_restart=True,
dag=dag
)
我尝试对卷使用hostPath类型,但我认为它指的是pod的主机。我在kubernetes文档中查找了一些卷,在这些卷中我找到了EmptyDir,但也没有找到
根据您的评论,您正在询问pod中运行的一个任务如何完成并将日志写入pod中运行的另一个任务在启动时可以读取的位置。看起来你可以做一些事情
kubectl get logs
(即将kubectl放入任务映像并允许其服务帐户获取该名称空间中的pod日志)或使用Kubernetes python API获取已完成的上一个pod的日志李>我不确定你是否在寻找一种更为自然的方法来解决这个问题,但这些想法会在你脑海中浮现,从而解决你的问题
相关问题 更多 >
编程相关推荐