плейбуки, с помощью AWX, для обновления Kubernetes кластера.
Для выполнения Job'ы разворачивается pod с образом Execution Environment.
Обновление кластера проходит по всем нодам, в самом конце на этапе выполнения постинсталляционных таск, Job'а фейлится.
В деталях по Job'е ошибка:
Failed to JSON parse a line from worker stream. Error: Expecting value: line 1 column 1 (char 0) Line with invalid JSON data: b''
В AWX UI, в Output джобы видно только 6500 строк вывода.
При этом пока Job'а отрабатывала я наблюдал за логами pod'а в котором она выполнялась, и там было около 11 000 строк. То есть awx-web не успел засинхронизировать весь output Job'ы из отдельно поднятого pod'а.
Может кто-то в курсе откуда в этом вопросе ноги растут? И как с этим бороться.
В интернетах пока не нашел вариантов решения.
Вероятно виноваты параметры ротации логов в кластере k8s, сталкивался с похожим, maxcontainerlog, как-то так. в ветке awx есть подробное описание
containerLogMaxSize containerLogMaxFiles Похоже что Вы все таки были правы. Я начал отлавливать в pod'е, в котором выполняется Job'а, ошибку: failed to watch file "/var/log/pods/awx_automation-job-289-ksrs6_c6d0f6d5-e307-4dff-9446-c93128981b02/worker/0.log": no such file or directory Наверняка можно будет сказать только когда поменяем параметры ротации логов контейнеров.
учтите что данная настройка глобальная и применяется целеком на кластер
ее не надо менять, это супер плохая идея. Как уже сказали параметр глобальный. Надо искать воркераунд - не знаю, пайплайнить логи из Джобы во временный файл, который не будет ротировать, или в сислог отправлять по сокету
это рекомендация разработчиков..
Это все замечательно, но как заставить AWX UI читать вывод джобы не из файла на воркер ноде, а к примеру из сислога ?
во! это правильный вопрос
Обсуждают сегодня