Как правильно дать шаблоны для имени POD в kubernetes? - PullRequest
0 голосов
/ 30 апреля 2018

Я использую kubernetes для развертывания приложений, а

kubect logs

для просмотра логов. Перераспределения происходят очень часто, поэтому немного неудобно - каждый раз копировать pod имя для вставки в команду журнала (потому что конец имени модуля динамически меняется каждый раз), например, ниже приведены команды для одного приложения после 2 развертываний

kubectl logs -n=testns --since=1m testapp-2818008534-jx2vv
kubectl logs -n=testns --since=1m testapp-2818008534-xls93

Итак, я хочу использовать одну команду, которая будет правильно «подбирать» нужное POD-имя каждый раз, когда мы запускаем «kubectl logs».

Но что-то вроде

$kubectl logs -n=testns --since=1h $(kubectl get pods --namespace=testns | grep testapp)

возвращает ошибку, что мы не «даем» имя модуля, НО этот модуль существует наверняка:

error: expected 'logs (POD | TYPE/NAME) [CONTAINER_NAME]'.
POD or TYPE/NAME is a required argument for the logs command

Итак, как правильно установить эту команду, чтобы использовать ее каждый раз, когда мы хотим просмотреть журналы, без необходимости повторно копировать и вставлять полное имя POD?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Принятый ответ должен работать в большинстве случаев, но на всякий случай попробуйте этот вариант:

kubectl get po | grep testapp | tr -s ' ' | cut -d\  -f 1
0 голосов
/ 30 апреля 2018

Когда вы делаете:

kubectl get pods --namespace=testns | grep testapp

Вы получаете что-то вроде:

testapp-54d99599bc-g2gs4 1/1 Running 0 56m

Так что это не будет хорошо с командой logs, так как в ней есть некоторые дополнительные данные, которые Kubectl не может понять. Что вы можете сделать, это:

kubectl get pods --namespace=testns | grep testapp | cut -d' ' -f1

Который выдаст только имя POD, и тогда ваша команда log должна работать.

...