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

#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 вывод