【问题标题】:How to use the Pod conditions array returned from the client-go API?如何使用 client-go API 返回的 Pod 条件数组?
【发布时间】:2023-04-08 05:18:02
【问题描述】:

我在 Go 中使用 client-go API 来访问给定控制器(部署)下的 Pod 列表。在使用选择器标签查询属于它的 pod 列表时,您会得到一个 PodConditions - https://pkg.go.dev/k8s.io/api/core/v1?tab=doc#PodCondition 的数组。

这与 Pod 条件的官方文档 - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-conditions 非常吻合。但是文档并不清楚如何访问这个条目数组。它是按最近的条目排序的吗?例如如果我只想访问 Pod 的最新状态,应该怎么做?从我在本地集群中进行的一项试验中,我得到了控制器 Pod 之一的更新(Pod 条件数组),如下所示

{Initialized True 0001-01-01 00:00:00 +0000 UTC 2020-07-29 08:01:15 +0000 UTC  } 
{Ready True 0001-01-01 00:00:00 +0000 UTC 2020-07-29 08:01:22 +0000 UTC  } 
{ContainersReady True 0001-01-01 00:00:00 +0000 UTC 2020-07-29 08:01:22 +0000 UTC  } 
{PodScheduled True 0001-01-01 00:00:00 +0000 UTC 2020-07-29 08:01:15 +0000 UTC  }

如您所见,给定的 Pod 几乎同时从 ContainersReady 转换为 Ready 08:01:22 +0000 UTC。但它们都不在第一个或最后一个索引中。

那么 TLDR,问题是如何从这个值数组中推断出最新的 Pod 条件类型和状态?

【问题讨论】:

    标签: kubernetes kubernetes-pod kubernetes-apiserver client-go


    【解决方案1】:

    Pod 没有从 ContainersReady 过渡到 ReadyConditionStatus 中的 PodConditionTypesFalse 更改为 True
    PodCondition 数组包含有关每个 ConditionType 的详细信息,但它们不相关,您不应依赖 PodCondition 更新的顺序。
    相反,您可以监控您感兴趣的每个 PodCondition 的详细信息。

    如果您只想知道 pod 是否正在运行,请查看 PodPhase。它也是PodStatus 结构的一部分。

    【讨论】:

      猜你喜欢
      • 2016-01-04
      • 2018-01-19
      • 1970-01-01
      • 2021-03-28
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 2021-08-01
      相关资源
      最近更新 更多