#bash #kubernetes #k3s #skaffold
#bash #kubernetes #k3s #skaffold
Вопрос:
Мы запускаем несколько автоматических тестов для нашего приложения, развернутого локально (для агента сборки CI), используя k3s и skaffold.
Как мы можем просматривать (стандартный вывод или файл) журналы pod при запуске 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>amp;1 amp;
Вывод из skaffold deploy --status-check
выглядит примерно так:
ПОСЛЕДНЕЕ РАЗВЕРТЫВАНИЕ: Вт 13 октября 18:14:03 2020 ПРОСТРАНСТВО ИМЕН: smoke СТАТУС: развернуто ПЕРЕСМОТР: 1 НАБОР ТЕСТОВ: отсутствует Ожидание стабилизации развертывания... - smoke: развертывание / smoke-assets готово. [развертывание 7/8 все еще не завершено] - smoke: развертывание / smoke-b готово. [развертывание 6/8 еще не завершено] - smoke: развертывание / smoke-c готово. [5/8 развертывание (развертывания) все еще не завершено] - smoke: развертывание / smoke-d: ожидание завершения развертывания: доступно 0 из 1 обновленных реплик... - smoke: развертывание / smoke-e: ожидание завершения развертывания: доступно 0 из 1 обновленных реплик... - smoke: развертывание / smoke-f: ожидание завершения развертывания: доступно 0 из 1 обновленных реплик... - smoke: развертывание / smoke-g: ожидание завершения развертывания: доступно 0 из 1 обновленных реплик... - smoke: развертывание / smoke-h: ожидание завершения развертывания: доступно 0 из 2 обновленных реплик... - smoke: развертывание / smoke-d готово. [развертывание 4/8 все еще не завершено] - smoke: развертывание / smoke-g готово. [3/8 развертывания все еще не завершены] - smoke: развертывание / smoke-e готово. [2/8 развертывания все еще не завершены] - smoke: развертывание / smoke-h: ожидание завершения развертывания: доступна 1 из 2 обновленных реплик... - smoke: развертывание / smoke-h готово. [1/8 развертывания (ов) все еще не завершено] сбой 1/8 развертывания (ов) - smoke: развертывание / smoke-f: выполняется [kubectl --контекст k3d-smoke-тесты-развертывание статуса развертывания кластера smoke-f --пространство имен smoke --watch=false] - стандартный вывод: "" - stderr: "ошибка: развертывание "smoke-f" превысило крайний срок выполнения n" - причина: состояние выхода 1 - smoke: сбой развертывания / smoke-f. Ошибка: выполняется [kubectl --context k3d-smoke-tests-статус развертывания развертывания кластера smoke-f --пространство имен smoke --watch=false] - стандартный вывод: "" - stderr: "ошибка: развертывание "smoke-f" превысило крайний срок выполнения n" - причина: состояние выхода 1.
Ответ №1:
Я обнаружил, что stern может справиться с добавлением новых модулей в пространство имен.
Итак, запуск:
stern -n namespace . >my.log amp;
прежде skaffold deploy
чем это сработает.
Ответ №2:
@Graham Russell --status-check
должен регистрировать для модуля, который не удался, если они существуют. Единственное, о чем я мог подумать, это то, что контейнер pod был завершен и был очищен до того, как skaffold смог захватить журналы.
В настоящее время нет способа передавать журналы в std до стабилизации всех развертываний.
Можете ли вы вставить текущий status-check
вывод