Как проверить, что выполнение конкретного скрипта завершается модулем Kubernetes
У меня есть набор демонов, который развертывает контейнеры для проверки состояния нескольких точек монтирования. Это развертывание демона производится из скрипта Python, и вскоре после команды развертывания я собираю журналы, которые будут созданы вышеупомянутыми модулями демона. Я вижу, что журналы копируются вскоре после запуска создания демона, и по той же причине журналы не завершены.
После некоторого исследования я обнаружил, что модули daemonset все еще находятся в процессе выполнения сценария и записи журналов. Между тем основной сценарий уже перешел к следующей команде копирования журналов с использованием kubectl cp
команда.
Есть ли способ я могу поставить ожидание на основе условия, что копирование журналов, только если выполнение скрипта завершено.
Это часть кода, который у меня есть
# Create diag pod
cmd = "kubectl apply -f diagnostic_daemon.yaml"
(rc, cmd_out, cmd_err) = cmdHandle.cmd_run(cmd)
if cmd_err.strip():
print "ERROR: Unbale to create diag POD. Exiting!!!"
print "> " + REDC + cmd_err.strip() + ENDC
sys.exit(1)
# wait for the daemonset pod to reach running state
check_daemonset_state("cos-plugin-diag")
print "\n*****Collecting cos-plugin-diag logs*****"
# Collect diag pod logs
global nodeQdigl
1 ответ
Так что вы также должны проверить, чтобы стручки были в Running
состояние (все контейнеры в пакете)
# wait for the pod
check_pod_state("cos-plugin-diag")
Так, если у Pod есть 2 контейнера, например, вы должны проверить 2/2
Пример:
NAME READY STATUS RESTARTS AGE
calico-node-9wnst 2/2 Running 0 6d
Другой аспект, который вам нужно проверить строку в файле журнала, которая определяет конец вашего журнала, и вы можете проверить его с помощью
kubectl logs <pod-name> -c <container-if-multiple-containers> -n <your-namespace>
Надеюсь, поможет