Назад | Перейти на главную страницу

Невозможно записать на stderr или stdout из модуля Kubernetes в журналы модуля

Я пытаюсь отладить, почему мои журналы приложений не собираются Promtail для передачи в Loki.

Чтобы исключить сложность ведения журнала моего PHP-приложения, являющегося виновником, я просто пытаюсь распечатать сообщение в stderr поток из корпуса капсулы, который может поднять kubectl logs counter. Чтобы еще больше уменьшить сложность, я создал новый модуль, используя php:fpm-alpine изображение, используя конфигурацию ниже:

apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
    - name: count
      image: php:fpm-alpine

Когда модуль готов, я получаю доступ к оболочке, запустив kubectl exec -it counter -- /bin/ash а затем запустить i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done. Я вижу следующий вывод в оболочке модуля:

0: Sun May 24 13:51:09 UTC 2020
1: Sun May 24 13:51:10 UTC 2020
2: Sun May 24 13:51:11 UTC 2020
3: Sun May 24 13:51:12 UTC 2020
4: Sun May 24 13:51:13 UTC 2020

etc...

Однако когда я бегу kubectl logs counter возвращенные данные:

[24-May-2020 13:36:20] NOTICE: fpm is running, pid 1
[24-May-2020 13:36:20] NOTICE: ready to handle connections

Кажется, я не могу получить результат i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done команда для отображения в журналах модуля.

Похоже, это связано с тем, что изображение позволяет catch_workers_output = yes

В будущем было бы отличным механизмом устранения неполадок попытаться запустить тот же образ локально и посмотреть, сможете ли вы создать минимальное воспроизведение для себя: то есть можете любой php-скрипт, запущенный в этом контейнере, выдает вывод на stderr контейнера?