是否有一种方法可以获取指定名称空间,应用程序,节点名称和容器条件的容器列表?将lablelSelector应用于查询字符串可以指定应用程序名称,使用fieldSelector
,我可以选择节点名称(spec.nodeName==node
)甚至阶段(status.phase==Running
)。但是status.phase将返回处于指定阶段的所有Pod,包括那些实际上位于CrashLoopBackOff或位于丢失的节点上的Pod。
分析我发现的响应JSON之后,有一个“状态”部分实际上具有上面提到的“ status.phase”字段,还有一个名为“条件”的部分,用于存储描述了几种“类型”的记录的数组/列表相应参数的当前条件。其中有一个小节(Python术语词典),其中有我需要的"type" : "Ready"
和"status" : <value>
。
完整的响应部分如下所示:
"status": {
"phase": "Running",
"conditions": [
{
"type": "Initialized",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2018-09-11T15:49:09Z"
},
{
"type": "Ready",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2018-09-11T19:05:01Z"
},
{
"type": "ContainersReady",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": null
},
{
"type": "PodScheduled",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2018-09-11T15:49:09Z"
}
]
很明显,labelSelector和fieldSelector使用响应JSON的相应部分/字段来工作。但是我找不到为“条件”小节应用诸如fieldSelector之类的方法。像fieldSelector = conditions.type.Ready == True。
当然,我可以用Python解析响应并仅选择所需的吊舱条件,但这对我来说并不正确。
有人知道如何在API请求中指定pod条件吗?
当前我正在使用:/api/v1/namespaces/<namespace>/pods?labelSeletor=app%3D<appname>&fieldSelector=status.phase%3D%3DRunning,spec.nodeName%3D%3D<nodename>
。