оператор времени в jsonpath kubectl

#kubectl #jsonpath

#kubectl #jsonpath

Вопрос:

Я установил метку «mytime» в формате timestemp для своего модуля. Теперь я хочу выбрать все модули с истекшим временем? некоторые думают так:

kubectl get pods -o jsonpath='{range .items[*]}{.metadata.labels.mytime<$now()}{.metadata.name}{ "n"}{end}'

но я вижу ошибку

 error: error executing jsonpath "{range .items[*]}{.metadata.labels.mytime<$now()}{.metadata.name}{ "\n"}{end}": Error executing template: unrecognized identifier now(). Printing more information for debugging the template:
        template was:
                {range .items[*]}{.metadata.creationTimestamp>$now()}{.metadata.name}{ "n"}{end}
        object given to jsonpath engine was: ...
  

как использовать время в условии?

Ответ №1:

 kubectl -n test get deployment -o jsonpath='{.items[?(@.metadata.labels.mytime<"2020-10-08_14-15-07")].metadata.name}'
  

Ответ №2:

Это помогло мне:

Я не смог получить результат с помощью now, возможно, из-за разницы в формате.

 kubectl get pods -o=jsonpath="{range .items[?(@.metadata.labels.mytime<="2022-12-19")]}[{.metadata.labels.mytime},{.metadata.namespace},{.metadata.name}] {end}"