Извлечение журналов модуля во время развертывания скаффолда

Мы запускаем несколько автоматических тестов для нашего приложения, развернутого локально (для агента сборки CI) с использованием k3s и skaffold.

Как мы можем просмотреть (стандартный вывод или файл) журналы модуля при запуске skaffold deploy --status-check? (У нас были ошибки во время развертывания, которые мы не можем увидеть, если не используем ssh для агента сборки.)

Следующее, когда запускается после успешного развертывания, записывает журналы, но это не работает, если мы запускаем его перед запуском skaffold deploy, предположительно потому, что он не принимает никакие модули, запущенные после выполнения этой команды:

kubectl logs \
    --namespace x \
    --follow \
    --ignore-errors \
    --max-log-requests 50 \
    --all-containers \
    --prefix \
    --timestamps \
    --selector release=y >"k8s.log" 2>&1 &

Результат skaffold deploy --status-check выглядит примерно так:

LAST DEPLOYED: Tue Oct 13 18:14:03 2020
NAMESPACE: smoke
STATUS: deployed
REVISION: 1
TEST SUITE: None
Waiting for deployments to stabilize...
 - smoke:deployment/smoke-assets is ready. [7/8 deployment(s) still pending]
 - smoke:deployment/smoke-b is ready. [6/8 deployment(s) still pending]
 - smoke:deployment/smoke-c is ready. [5/8 deployment(s) still pending]
 - smoke:deployment/smoke-d: waiting for rollout to finish: 0 of 1 updated replicas are available...
 - smoke:deployment/smoke-e: waiting for rollout to finish: 0 of 1 updated replicas are available...
 - smoke:deployment/smoke-f: waiting for rollout to finish: 0 of 1 updated replicas are available...
 - smoke:deployment/smoke-g: waiting for rollout to finish: 0 of 1 updated replicas are available...
 - smoke:deployment/smoke-h: waiting for rollout to finish: 0 of 2 updated replicas are available...
 - smoke:deployment/smoke-d is ready. [4/8 deployment(s) still pending]
 - smoke:deployment/smoke-g is ready. [3/8 deployment(s) still pending]
 - smoke:deployment/smoke-e is ready. [2/8 deployment(s) still pending]
 - smoke:deployment/smoke-h: waiting for rollout to finish: 1 of 2 updated replicas are available...
 - smoke:deployment/smoke-h is ready. [1/8 deployment(s) still pending]
1/8 deployment(s) failed
 - smoke:deployment/smoke-f: running [kubectl --context k3d-smoke-tests-cluster rollout status deployment smoke-f --namespace smoke --watch=false]
 - stdout: ""
 - stderr: "error: deployment \"smoke-f\" exceeded its progress deadline\n"
 - cause: exit status 1
 - smoke:deployment/smoke-f failed. Error: running [kubectl --context k3d-smoke-tests-cluster rollout status deployment smoke-f --namespace smoke --watch=false]
 - stdout: ""
 - stderr: "error: deployment \"smoke-f\" exceeded its progress deadline\n"
 - cause: exit status 1.

person Graham Russell    schedule 14.10.2020    source источник


Ответы (2)


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

Итак, запускаем:

stern -n namespace . >my.log &

прежде, чем skaffold deploy сделает свое дело.

person Graham Russell    schedule 14.10.2020

@Graham Russell --status-check должен регистрировать отказавший модуль, если он существует. Единственное, что я мог придумать, это то, что контейнер для стручков отключился и был очищен до того, как скаффолд смог захватить журналы.

В настоящее время нет возможности передавать журналы на стандартный вывод до того, как все развертывания стабилизируются.

Можете ли вы вставить текущий status-check вывод

person Tej    schedule 14.10.2020