client-goAPI返回的Pod条件数组如何使用?
How to use the Pod conditions array returned from the client-go API?
我在 Go 中使用 client-go API 来访问给定控制器(部署)下的 Pods 列表。在使用选择器标签查询属于它的 pods 列表时,您会得到一个 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 的最新状态,应该怎么做?从我在本地集群中进行的一项试验中,我获得了控制器 Pods 之一的更新(Pod Conditions 数组),如下所示
{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 几乎同时 08:01:22 +0000 UTC
从 ContainersReady
过渡到 Ready
。但是他们都不在第一个或最后一个索引中。
所以 TLDR,问题是如何从这个值数组中推断出最新的 Pod 条件类型和状态?
Pod 没有从 ContainersReady
过渡到 Ready
,那些 PodConditionTypes
的 ConditionStatus
从 False
变为 True
.
PodCondition
数组包含每个 ConditionType 的详细信息,但它们不相关,您不应该依赖 PodCondition 更新的顺序。
相反,您可以监控您感兴趣的每个 PodCondition 的详细信息。
如果您只想知道 pod 是否 运行,请查看 PodPhase
。它也是 PodStatus
结构的一部分。
我在 Go 中使用 client-go API 来访问给定控制器(部署)下的 Pods 列表。在使用选择器标签查询属于它的 pods 列表时,您会得到一个 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 的最新状态,应该怎么做?从我在本地集群中进行的一项试验中,我获得了控制器 Pods 之一的更新(Pod Conditions 数组),如下所示
{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 几乎同时 08:01:22 +0000 UTC
从 ContainersReady
过渡到 Ready
。但是他们都不在第一个或最后一个索引中。
所以 TLDR,问题是如何从这个值数组中推断出最新的 Pod 条件类型和状态?
Pod 没有从 ContainersReady
过渡到 Ready
,那些 PodConditionTypes
的 ConditionStatus
从 False
变为 True
.
PodCondition
数组包含每个 ConditionType 的详细信息,但它们不相关,您不应该依赖 PodCondition 更新的顺序。
相反,您可以监控您感兴趣的每个 PodCondition 的详细信息。
如果您只想知道 pod 是否 运行,请查看 PodPhase
。它也是 PodStatus
结构的一部分。