【问题标题】:Kubernetes Job Pods Become In "Unknown" StateKubernetes Job Pod 进入“未知”状态
【发布时间】:2021-04-12 22:55:30
【问题描述】:

我正在使用 Kubernetes 的 K3s 发行版,它部署在 AWS 中的 Spot EC2 实例。

我已经安排了某个处理作业,有时这个作业正在被终止并进入“未知”状态(作业代码异常终止)

kubectl describe pod <pod_name>

它显示了这个:

 State:          Terminated
      Reason:       Unknown
      Exit Code:    255
      Started:      Wed, 06 Jan 2021 21:13:29 +0000
      Finished:     Wed, 06 Jan 2021 23:33:46 +0000

AWS 日志显示,崩溃前的 CPU 消耗为 99%。 从多个来源(123)我看到这可能是节点崩溃的原因,但没有看到, 可能是什么原因?

谢谢!

【问题讨论】:

    标签: kubernetes k3s kubernetes-jobs


    【解决方案1】:

    Job 的实际状态为 Terminated,原因为 Unknown。为了调试这种情况,您需要从您的 Job 创建的 Pod 中获取相关日志。

    When a Job completes,不再创建 Pod,但 Pod 已创建 也没有被删除。将它们放在身边可以让您仍然查看 已完成 pod 的日志,用于检查错误、警告或其他 诊断输出。

    为此,请执行 kubectl describe job $JOB 以查看“事件”部分下的 Pod 名称,然后执行 kubectl logs $POD

    如果这还不够,你可以尝试不同的方式Debug Pods,例如:

    • 使用容器 exec 进行调试

    • 使用临时调试容器进行调试,或

    • 通过节点上的 shell 进行调试

    上述方法将为您提供更多信息,以延迟工作终止背后的实际原因。

    【讨论】:

    • 我在 pod 上调用了 logs 命令(我有 pod),但没有生成相关日志,只是应用程序中的常规打印,它们被切断了——就像有人刚刚杀死了 pod 本身
    • 作业失败时节点的行为如何?是否有足够的资源来完成它的工作?您是集群的唯一负责人吗?也许还有其他用户可能会简单地搞砸 Job 或 Pod?
    • 这是一个在 VM 中运行且没有用户的单个节点 - 查看此时节点发生了什么的最佳方法是什么?需要对 Kubernetes 的哪个组件进行日志检查以查看问题所在?谢谢!
    • 这在these docs 中有很好的解释。您将在那里找到相关日志文件的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2018-11-14
    • 2019-09-19
    相关资源
    最近更新 更多