【问题标题】:Complete list of pod statuses完整的 pod 状态列表
【发布时间】:2021-09-02 18:15:29
【问题描述】:

当您运行“kubectl get pods -A -o wide”时,您会得到一个 pod 列表和一个 STATUS 列。

我在哪里可以获得可能的状态选项列表?

我试图做的是生成一个状态列表以及每个状态中有多少个 pod。如果我有一个可能的状态列表,我可以做我需要的。

谢谢。

【问题讨论】:

标签: kubernetes kubectl


【解决方案1】:

如果您还想了解容器基础知识,请尝试此命令

kubectl get pods -A -o wide --no-headers | cut -b 85-108 | sort | uniq -c

如果输出看起来像

 2   0/1   CrashLoopBackOff
  1   0/3   Pending
260   1/1   Running
  4   2/2   Running

【讨论】:

    【解决方案2】:

    喜欢Complete list of pod statuses的评论:

    $ kubectl get pod -A --no-headers |awk '{arr[$4]++}END{for (a in arr) print a, arr[a]}'
    
    Evicted 1
    Running 121
    CrashLoopBackOff 4
    Completed 5
    Pending 1
    

    这个命令会显示当前有多少个 pod 处于什么状态。

    但是如何得到所有状态的可能值呢?

    在我看来,没有 api 或命令可以获取它。
    此状态:“此 pod 中容器的聚合状态。”源代码可以在https://github.com/kubernetes/kubernetes/blob/master/pkg/printers/internalversion/printers.go#L741 中找到,在pod.Status.Phase 的基础上显示status 并将进行更改。

    【讨论】:

      【解决方案3】:

      Pod 的一个阶段是对 Pod 在其生命周期中所处位置的简单、高级摘要。

      该阶段并非旨在全面汇总对 Container 或 Pod 状态的观察,也无意成为全面的状态机。 以下是相位的可能值:

      Pending Pod 已被 Kubernetes 系统接受,但尚未创建一个或多个 Container 镜像。这包括计划之前的时间以及通过网络下载图像所花费的时间,这可能需要一段时间。

      Running Pod 已经绑定到一个节点,所有的 Container 都已经创建完毕。至少有一个 Container 仍在运行,或者正在启动或重新启动。

      Succeeded Pod 中的所有 Container 都已成功终止,不会重新启动。

      失败 Pod 中的所有 Container 都已终止,并且至少有一个 Container 因失败而终止。也就是说,Container 要么以非零状态退出,要么被系统终止。

      未知由于某种原因无法获取 Pod 的状态,通常是由于与 Pod 的主机通信时出错。

      如果您对具有 Pod 条件的详细数组感兴趣,我建议您查看 Kubernetes 文档中的 Pod Lifecycle 并查看 source code 以获取剩余信息。

      【讨论】:

        猜你喜欢
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-13
        • 2023-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多