Запуск процесса контейнера вызвал \ "exec: \\\" driver \\\ ": исполняемый файл не найден в $ path \" \ n "

У меня есть приложение Spark 2.3.0 на основе пружины. Я пытаюсь отправить искру на кубернетах (миникубе).

У меня есть Virtual Box с запущенным докером и миникубом.

opt/spark/bin/spark-submit --master k8s://https://192.168.99.101:8443 --name cfe2 --deploy-mode cluster --class com.yyy.Application --conf spark.executor.instances=1 --conf spark.kubernetes.container.image=docker.io/anantpukale/spark_app:1.3 local://CashFlow-spark2.3.0-shaded.jar

Ниже приведена трассировка стека:

 start time: N/A
 container images: N/A
 phase: Pending
 status: []
2018-04-11 09:57:52 INFO  LoggingPodStatusWatcherImpl:54 - State changed, new state: 
     pod name: cfe2-c4f95aaeaefb3564b8106ad86e245457-driver
     namespace: default
     labels: spark-app-selector -> spark-dab914d1d34b4ecd9b747708f667ec2b, spark-role -> driver
     pod uid: cc3b39e1-3d6e-11e8-ab1d-080027fcb315
     creation time: 2018-04-11T09:57:51Z
     service account name: default
     volumes: default-token-v48xb
     node name: minikube
     start time: 2018-04-11T09:57:51Z
     container images: docker.io/anantpukale/spark_app:1.3
     phase: Pending
     status: [ContainerStatus(containerID=null, image=docker.io/anantpukale/spark_app:1.3, imageID=, lastState=ContainerState(running=null, terminated=null, waiting=null, additionalProperties={}), name=spark-kubernetes-driver, ready=false, restartCount=0, state=ContainerState(running=null, terminated=null, waiting=ContainerStateWaiting(message=null, reason=ContainerCreating, additionalProperties={}), additionalProperties={}), additionalProperties={})]
2018-04-11 09:57:52 INFO  Client:54 - Waiting for application cfe2 to finish...
2018-04-11 09:57:52 INFO  LoggingPodStatusWatcherImpl:54 - State changed, new state: 
     pod name: cfe2-c4f95aaeaefb3564b8106ad86e245457-driver
     namespace: default
     labels: spark-app-selector -> spark-dab914d1d34b4ecd9b747708f667ec2b, spark-role -> driver
     pod uid: cc3b39e1-3d6e-11e8-ab1d-080027fcb315
     creation time: 2018-04-11T09:57:51Z
     service account name: default
     volumes: default-token-v48xb
     node name: minikube
     start time: 2018-04-11T09:57:51Z
     container images: anantpukale/spark_app:1.3
     phase: Failed
     status: [ContainerStatus(containerID=docker://40eae507eb9b615d3dd44349e936471157428259f583ec6a8ba3bd99d80b013e, image=anantpukale/spark_app:1.3, imageID=docker-pullable://anantpukale/spark_app@sha256:f61b3ef65c727a3ebd8a28362837c0bc90649778b668f78b6a33b7c0ce715227, lastState=ContainerState(running=null, terminated=null, waiting=null, additionalProperties={}), name=spark-kubernetes-driver, ready=false, restartCount=0, state=ContainerState(running=null, terminated=ContainerStateTerminated(containerID=docker://40eae507eb9b615d3dd44349e936471157428259f583ec6a8ba3bd99d80b013e, exitCode=127, finishedAt=Time(time=2018-04-11T09:57:52Z, additionalProperties={}), message=invalid header field value **"oci runtime error:  container_linux.go:247: starting container process caused \"exec: \\\"driver\\\": executable file not found in $PATH\"\n"**, reason=ContainerCannotRun, signal=null, startedAt=Time(time=2018-04-11T09:57:52Z, additionalProperties={}), additionalProperties={}), waiting=null, additionalProperties={}), additionalProperties={})] 
2018-04-11 09:57:52 INFO  LoggingPodStatusWatcherImpl:54 - Container final statuses:
     Container name: spark-kubernetes-driver
     Container image: anantpukale/spark_app:1.3
     Container state: Terminated
     Exit code: 127
2018-04-11 09:57:52 INFO  Client:54 - Application cfe2 finished.
2018-04-11 09:57:52 INFO  ShutdownHookManager:54 - Shutdown hook called
2018-04-11 09:57:52 INFO  ShutdownHookManager:54 - Deleting directory /tmp/spark-d5813d6e-a4af-4bf6-b1fc-dc43c75cd643 

Ниже приведено изображение моего файла докеров.

Трассировка ошибки предполагает, что что-то в докере я вызвал с помощью команды «докер». dockerfile

2
0
2 023
4

Ответы 4

в вашем Dockerfile используйте ENV PATH="/opt/spark/bin:${PATH}" вместо вашей строки.

Я изменил приведенную выше команду, как вы предлагаете. Тем не менее такая же ошибка сохраняется.

Anant Pukale 12.04.2018 06:28

Можно ли войти в контейнер, используя

#>docker run -it --rm docker.io/anantpukale/spark_app:1.3 sh

и попробуйте запустить основную программу или команду, которую вы хотите отправить. Основываясь на этом выводе, мы можем попытаться продолжить расследование.

Да, я могу запустить его в докере с помощью указанной выше команды в режиме sh. Но здесь мне нужно немного изменить мою команду. Ранее я отправлял свою искровую работу на сервер Kubernetes api в режиме локального клиента. /opt/spark/bin/spark-submit --master local --name cfe2 --deploy-mode client --class com.oracle.Application --conf spark.executor.instances=1 --conf spark.kubernetes.container.image=docker.io/anantpukale/spark‌​_app:1.3 CashFlow-2.2.1-SNAPSHOT-shaded.jar

Anant Pukale 12.04.2018 06:33

Я использую minikube для Kubernetes версии 1.9.4

Anant Pukale 12.04.2018 06:42

вместе с @hichamx предложенные изменения с приведенным ниже кодом помогли мне преодолеть проблему \ "exec: \" драйвер \ ". spark-submit --master k8s://http://127.0.0.1:8001 --name cfe2 --deploy-mode cluster --class com.oracle.Test --conf spark.executor.instances=2 --conf spark.kubernetes.container.image=docker/anantpukale/spark_app:1.1 --conf spark.kubernetes.driver.container.image=docker.io/kubespark/spark-driver:v2.2.0-kubernetes-0.5.0 --conf spark.kubernetes.executor.container.image=docker.io/kubespark/spark-executor:v2.2.0-kubernetes-0.5.0 local://spark-0.0.1-SNAPSHOT.jar Хотя это дало ошибку: код выхода: 127 и искр-кубернет-драйвер прекращен.

Я столкнулся с этой проблемой. Это связано с изображением докера ENTRYPOINT. В Spark 2.3.0 при использовании Kubernetes теперь есть пример Dockerfile, который использует определенный скрипт в ENTRYPOINT, найденном в kubernetes / dockerfiles /. Если образ докера не использует этот конкретный скрипт в качестве ENTRYPOINT, контейнер не запускается должным образом. Документация Spark Kubernetes Docker

Другие вопросы по теме