我正在使用Go中的client-go API来访问给定 Controller (部署)下的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的最新状态,应该怎么做?从我在本地集群中进行的一项试验中,获得了 Controller 的其中一个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条件类型和状态?
最佳答案
Pod并未从ContainersReady
转换为Ready
,那些ConditionStatus
的PodConditionTypes
从False
变为True
。PodCondition
数组包含有关每个ConditionType的详细信息,但它们不相关,因此您不应依赖PodCondition更新的顺序。
相反,您可以监视您感兴趣的每个PodCondition的详细信息。
如果您只是想知道Pod是否正在运行,请查看 PodPhase
。它也是PodStatus
结构的一部分。
关于kubernetes - 如何使用客户端API返回的Pod条件数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63154258/