#kubernetes #kubectl
#kubernetes #kubectl
Вопрос:
Я пытаюсь получить podname из pod json, используя команду, которая возвращает ошибку
kgp -o jsonpath="{.items[*].metadata[?(@.labels.module=='ddvv-script')].name}"
Ошибка
is not array or slice and cannot be filtered. Printing more information for debugging the template:
template was:
{.items[*].metadata[?(@.labels.module=='ddvv-script')].name}
object given to jsonpath engine was:
Пример файла
{
"apiVersion": "v1",
"items": [
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"creationTimestamp": "2020-09-18T17:42:50Z",
"generateName": "ddvv-script-6b784db6bd-",
"labels": {
"app": "my-configs",
"lf.module": "ddvv-script",
"module": "ddvv-script",
"pod-template-hash": "6b784db6bd",
"release": "config"
},
"name": "ddvv-script-6b784db6bd-rjtgh",
Что не так с этой командой
Ответ №1:
Вы можете использовать приведенную ниже команду. Он получает podname модулей, у которых есть label module=ddvv-script
kubectl get pods --selector=module=ddvv-script --output=jsonpath={.items..metadata.name}
Ответ №2:
kgp -o jsonpath="{.items[*].metadata[?(@.labels.module=='ddvv-script')].name}"
должно быть
kgp -o jsonpath="{.items[?(@.metadata.labels.module=='ddvv-script')].metadata.name}"