Как проверить, что выполнение конкретного скрипта завершается модулем Kubernetes - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть набор демонов, который развертывает контейнеры для проверки состояния нескольких точек монтирования. Это развертывание daemonset выполняется из скрипта Python, и вскоре после команды развертывания я собираю журналы, которые будут созданы вышеприведенными модулями daemonset. Я вижу, что журналы копируются вскоре после запуска создания демона, и по той же причине журналы не завершены.

После некоторого исследования я обнаружил, что модули 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 Ответ

0 голосов
/ 11 сентября 2018

Таким образом, вам также необходимо проверить, чтобы модули были в состоянии Running (все контейнеры в модуле)

# wait for the pod 
check_pod_state("cos-plugin-diag")

Так, если в модуле есть, например, 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>

Надеюсь, это поможет

...