【问题标题】:What are the kubernetes pod phases equivalence to pod status?与 pod 状态等效的 Kubernetes pod 阶段是什么?
【发布时间】:2021-10-26 15:36:30
【问题描述】:

我需要知道 STATUSkubernetes pod 可以拥有的所有可能。

我的问题: - 我使用kubectl get pods 命令找到了这些状态

  • 正在运行
  • 待处理
  • ImagePullBackOff
  • CrashLoopBackOff
  • 已完成

但是当我打开一个 pod 的yaml 文件时,它在其状态中显示Completedyaml 定义成功。这是它的phase

也就是说,它在yaml 中有另一个值,而当我使用kubectl get pods 时,它会给出另一个值。

这些是yaml 定义中的pod phases

  • 待处理
  • 正在运行
  • 成功
  • 失败
  • 未知

我想知道当我执行kubectl get pods 时,我会得到什么与上述命令等效(例如:我得到Completed for Succeeded)?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    Kubernetes 正在为 pod 设置状态(因此状态为 Primary),状态本身可以具有 Phase。 因此,例如 Status Completed 可以分配给 Phase Succeeded 和 Phase Failed,而 Status Running 不能分配给此阶段。

    但总的来说,Running is Running,Pending 就是 Pending 几乎是一样的。据我所知,阶段Unknown 意味着节点无法访问,并且无法报告 pod 状态。

    正如官方文档所述:

    Pod 的状态字段是一个 PodStatus 对象,它有一个阶段字段。

    Pod 的阶段是对 Pod 在其生命周期中所处位置的简单、高级摘要。该阶段不是对 Container 或 Pod 状态观察的全面汇总,也不是一个全面的状态机。

    Pod 阶段值的数量和含义受到严格保护。除了此处记录的内容外,不应假设 Pod 具有给定的相位值。

    https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/

    【讨论】:

    • 所以你的意思是最好检查yaml清单文件中的阶段以明确了解pod的问题对吗?因为像Completed 这样的状态在不同的时间可能意味着不同的东西
    • 我想最好用官方 pod 生命周期页面的引用来更新我的答案,这样可以更好地理解阶段。
    • @JananathBanuka;最好依靠状态和就绪检查(kubectl get pods 将显示两列);不在阶段,因为 pod 阶段可能会产生误导;例如,即使在运行阶段,我们也可以拥有状态为 Error、Terminating、Crashloop 等的 Pod。另一个例如是失败且正在运行,两个阶段都可以拥有状态为 Complete 的 Pod。使用状态列检查 pod 是否已就绪 (x/x)。
    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 2021-09-15
    相关资源
    最近更新 更多