Есть ли способ получить список модулей для указанного пространства имен, приложения, имени узла и состояния модуля?Применяя lablelSelector к строке запроса, можно указать имя приложения, используя fieldSelector
Я могу выбрать имя узла (spec.nodeName==node
) и даже фазу (status.phase==Running
).Но status.phase вернет все модули, которые находятся в указанной фазе, включая те, которые на самом деле находятся в CrashLoopBackOff или расположены на потерянных узлах.
После анализа ответа JSON я обнаружил, что есть раздел «status»на самом деле это поле «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 = condition.type.Ready == True.
Конечно, я могу проанализировать ответ в Python и выбрать только те условия, которые мне нужны, но это мне не подходит.
У кого-нибудь есть идея, как указать условие pod в запросе API?
В настоящее время я использую: /api/v1/namespaces/<namespace>/pods?labelSeletor=app%3D<appname>&fieldSelector=status.phase%3D%3DRunning,spec.nodeName%3D%3D<nodename>
.