Как получить логи со всех подов в работе Kubernetes? - PullRequest
1 голос
/ 04 августа 2020

Я использую задание Kubernetes для запуска теста; сценарий оболочки запускает задание и имеет журнал настройки / разрыва c. В задании указано

  • restartPolicy: Never
  • backoffLimit: 2

, что означает, что если задание не удастся, оно создаст новый модуль и попытается еще раз.

После завершения задания я хотел бы выгрузить журналы из всех модулей в задании. Но когда я делаю

kubectl logs job/my-test

, я получаю журналы только от одного из модулей с префиксом Found 2 pods, using pod/my-test-ntb4w.

Флаг --all-containers=true не дает мне журналов со всех pods.

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

Ответы [ 2 ]

1 голос
/ 04 августа 2020

В качестве справки, пожалуйста, взгляните на kubectl logs --help:

   -- kubectl logs job/my-job
    # Return snapshot logs from first container of a job named hello
      kubectl logs job/hello -- will provide output only for one pod/container
    
    -- while using (either label or selector) it gives you more flexible way to deal with your resources
    # -l, --selector='': Selector (label query) to filter on.

В качестве альтернативы вы можете добавить собственные метки или использовать _ этикетка / селектор из описания работы:

labels:
      controller-uid: 55d965d0-0016-42ba-b4f5-120c1a78798b
      job-name: pi

Вы можете найти довольно похожий случай в документации: проверка вывода сразу всех заданий и Выполнение примера задания .

При использовании bash вы также можете попробовать:

pods=$(kubectl get pods --selector=job-name=pi --output=jsonpath='{.items[*].metadata.name}')

for pod in $pods ; do kubectl logs $pod ; done 

Очень полезная команда для работы с объектами k8s:

kubectl get pods,jobs --show-labels

NAME           READY   STATUS      RESTARTS   AGE   LABELS
pod/pi-25vcd   0/1     Completed   0          97s   controller-uid=55d965d0-0016-42ba-b4f5-120c1a78798b,job-name=pi
1 голос
/ 04 августа 2020

Использование --selector вместо job/my-test, похоже, позволяет получить журналы из всех модулей:

kubectl logs --selector job-name=my-test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...