Я наблюдаю странное поведение при выполнении скрипта на этапе рабочего процесса k8s / Argo.
Для начала, где я запускаю серверы Metamap Tagger (см. Фрагмент кода ниже), вместо того, чтобы ждать, пока каждый из них завершится, перед выполнением следующей команды, все они сразу же запускаются (мое kludgey решение заключалось в том, чтобы поставить /bin/bash/sleep 120
команда между каждым).
Другая странность заключается в том, что если я запускаю скрипт из скрипта, который устанавливает кучу переменных среды (в данном случае source set_uima.sh
делает это), переменная среды не устанавливается соответствующим образом. Я тестировал это вне рабочего процесса k8, и все работает как надо.
Есть ли что-то в k8, из-за чего этот скрипт не запускается в сеансе без TTY (k8) так же, как в сеансе TTY (с моей локальной рабочей станции)?
#!/bin/bash
export DATA_DIRECTORY=/data
export METAMAP_OUT=$DATA_DIRECTORY/metamap_out
export SAMPLE_FILE=$DATA_DIRECTORY/nlptab_manifest.txt
export DATA_IN=$DATA_DIRECTORY/in
export METAMAP_HOME=/usr/share/public_mm # /usr/share/public_mm
export JAVA_TOOL_OPTIONS=‘-Xms2G -Xmx6G -XX:MinHeapFreeRatio=25 -XX:+UseG1GC’
##### Start Metamap Tagger Servers #####
skrmedpostctl start
wsdserverctl start
mmserver &
##### Run UIMA against Metamap taggers #####
source ./setup_uima.sh
Неудивительно, что ваш скрипт работает в bash без TTY в вашем докер-контейнере в K8s.
Чтобы запустить модуль с TTY, вам нужно добавить tty: true
в развертывании:
spec:
containers:
- name: test
tty: true
а затем запустите сценарий.
Вы можете создать переменные env в своем развертывании: Развертывание будет выглядеть так:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: envtest
spec:
replicas: 1
template:
metadata:
labels:
name: envtest
spec:
containers:
- name: envtest
image: gcr.io/<PROJECT_ID>/envtest
ports:
- containerPort: 3000
env:
- name: DATA_DIRECTORY
value: "/data"
- name: METAMAP_OUT
value: "/data/metamap_out"
- name: SAMPLE_FILE
value: "/data/nlptab_manifest.txt"
- name: DATA_IN
value: "/data/in"
- name: METAMAP_HOME
value: "/usr/share/public_mm"
- name: JAVA_TOOL_OPTIONS
value: " -Xms2G -Xmx6G -XX:MinHeapFreeRatio=25 -XX:+UseG1GC"
Но этот метод может быть громоздким.