Я использую кластер kubernetes для запуска сред разработки для себя и других разработчиков.Я написал несколько функций оболочки, чтобы помочь каждому разобраться со своими модулями, не вводя длинные команды kubectl вручную.Например, чтобы получить подсказку на одном из модулей, мои функции используют следующее
kubectl exec -it $(kubectl get pods --selector=run=${service} --field-selector=status.phase=Running -o jsonpath="{.items[*].metadata.name}") -- bash;
, где $ service - это метка службы, к которой я хочу получить доступ, например postgres, redis или uwsgi.
Поскольку это среды разработки, всегда есть один из каждого типа модулей.Проблема, с которой я столкнулся, заключается в том, что если я удаляю модуль, чтобы он вытягивал свежий образ (все модули управляются развертыванием, поэтому, если я удаляю модуль, он создает новый), на некоторое время появляются два модуля, одинотображается как завершающий, а другой как работающий на kubectl get pods
выходе.Я хочу убедиться, что команда выше выбирает модуль, который работает, а не тот, который завершается.Я думал, что флаг --field-selector=status.phase=Running
сделает это, но это не так.Очевидно, что даже если модуль находится в процессе завершения, он все еще сообщает о статусе выполнения в поле status.phase.Что я могу использовать для фильтрации оконечных модулей?