在 Kubernetes 上运行的 Airflow 中检索已删除 Pod 的日志

问题描述 投票:0回答:1

我正在 Kubernetes 集群上运行 Apache Airflow,并且在从已删除的 Pod 中检索日志时遇到问题。我可以使用 kubectl 日志轻松地从当前正在运行或最近终止的 pod 获取日志,但我无法从旧的、已删除的 pod 获取日志。

我的版本

awswrangler==2.19.0
apache-airflow-providers-cncf-kubernetes==4.3.0
apache-airflow-providers-amazon==5.0.0
boto3==1.24.56
gnupg==2.3.1
PyYAML==6.0

这是我尝试过的:

# This works fine and gives me the actual log
kubectl logs my-current-pod-239847283947

# This doesn't work for an old, deleted pod
kubectl logs my-old-pod-928374928374
The second command returns the following error:

错误

Error from server (NotFound): pods "my-old-pod" not found

我知道 Pod 已被删除,但是有没有办法检索其日志或至少配置 Airflow 或 Kubernetes 来保存这些日志以供将来参考?

注意:我使用 AWS 进行存储

任何帮助将不胜感激!

kubernetes logging airflow kubectl
1个回答
0
投票

如果 pod 被删除,您将无法访问其日志。

如果您需要日志进行调查,则需要保留 Pod。 Airflow 提供了任务完成后删除 Pod 的选项,您只需禁用删除即可。

对于

apache-airflow-providers-cncf-kubernetes>=7.2.0

KubernetesPodOperator(..., on_finish_action='keep_pod')

注意:这一点已更改,因为通常用户不介意成功任务的日志,因此您也可以设置为

on_finish_action='delete_succeeded_pod'
,这将仅删除成功的 pod,从而留下错误的 pod 以供进一步调查。这就是这一变化背后的动机(参见PR)。

对于

apache-airflow-providers-cncf-kubernetes<7.2.0

KubernetesPodOperator(..., is_delete_operator_pod=False)

如果您不再需要 Pod,可以使用 kubectl 删除它们。您还可以设置脚本(使用 Airflow 执行)来清理较旧的 pod(例如删除所有早于 X 天的 pod)。

© www.soinside.com 2019 - 2024. All rights reserved.