【发布时间】:2020-02-12 12:50:52
【问题描述】:
我们的 k8s 集群上的 Pod 使用 Airflow 的 KubernetesExecutor 调度,它在一个新的 Pod 中运行所有 Tasks。
我有一个这样的Task,它的 pod 会立即(1 或 2 秒后)崩溃,当然我想查看日志。
这似乎很难。一旦 Pod 崩溃,它就会被删除,并且能够检索崩溃日志。我已经尝试了所有:
-
kubectl logs -f <pod> -p: 不能使用,因为这些 pod 是唯一命名的 (由KubernetesExecutor提供)。 -
kubectl logs -l label_name=label_value:我 很难将标签应用到 pod(如果这是一种已知/使用过的工作方式,我很乐意进一步尝试) - 一个共享的
nfs挂载在一个固定日志目录的所有 pod 上。但是,失败的 pod 不会登录到此文件夹。 - 当我真的很快时,我会在运行和崩溃之间运行
kubectl logs -f -l dag_id=sample_dag --all-containers (dag_idlabel is added byAirflow),然后查看Error from server (BadRequest): container "base" in pod "my_pod" is waiting to start: ContainerCreating。这可能会给我一些线索,但是:- 这些只是最后的日志行
- 这真是倒退了
我基本上是在寻找从瞬态 pod 中检索日志的规范方法
【问题讨论】:
-
我也看到了同样的问题,我添加了 s3 连接,但它无法将日志发送到 S3,我也没有看到任何错误消息,请告诉我你是如何解决这个问题的?
-
按照公认的答案做对我有用...此外,Octant/Dashboard 等 UI 给了我额外的线索,而我用普通的
kubectl错过了这些线索
标签: kubernetes airflow