kubectl — получение имен модулей с определенной меткой

#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}"