【问题标题】:Kubernetes: view logs of crashed Airflow worker podKubernetes:查看崩溃的 Airflow worker pod 的日志
【发布时间】:2020-02-12 12:50:52
【问题描述】:

我们的 k8s 集群上的 Pod 使用 AirflowKubernetesExecutor 调度,它在一个新的 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


【解决方案1】:

您需要启用远程日志记录。下面的代码示例用于使用 S3。在airflow.cfg 中设置以下内容:

remote_logging = True
remote_log_conn_id = my_s3_conn
remote_base_log_folder = s3://airflow/logs

my_s3_conn可以在airflow>Admin>Connections中设置。在Conn Type 下拉列表中,选择S3

【讨论】:

    猜你喜欢
    • 2017-11-26
    • 2018-09-15
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    相关资源
    最近更新 更多