Docker 通过在k8s中的主吊舱上执行exec来触发提交作业

Docker 通过在k8s中的主吊舱上执行exec来触发提交作业,docker,apache-spark,kubernetes,pyspark,exec,Docker,Apache Spark,Kubernetes,Pyspark,Exec,我已经成功地在kubernetes上创建了spark cluster,有1个master和2个worker吊舱。spark v2.4.3在k8s上运行Java 8和scala 2.11.12,kubectl v1.16.0和minikube v1.4.0 对于详细的kubectl get pods显示如下- NAME READY STATUS RESTARTS AGE spark-master-fcfd55d7d-qrpsw

我已经成功地在kubernetes上创建了spark cluster,有1个master和2个worker吊舱。spark v2.4.3在k8s上运行Java 8和scala 2.11.12,kubectl v1.16.0和minikube v1.4.0

对于详细的
kubectl get pods
显示如下-

NAME                            READY   STATUS    RESTARTS   AGE
spark-master-fcfd55d7d-qrpsw    1/1     Running   0          66m
spark-worker-686bd57b5d-6s9zb   1/1     Running   0          65m
spark-worker-686bd57b5d-wrqrd   1/1     Running   0          65m
我还可以通过
exec
运行内置的spark应用程序,例如
pyspark
spark shell

kubectl exec spark-master-fcfd55d7d-qrpsw -it spark-shell` 
kubectl exec spark-master-fcfd55d7d-qrpsw /Users/atekade/IdeaProjects/scala-spark-streaming/logstreamer.sh
因为我已经有足够的环境,我正试图运行我的火花工作就这样上面。但它不起作用。spark submit命令如下所示

#!/usr/bin/env bash

spark-submit \
   --class com.cloudian.spark.main.RequestInfoLogStreamer \
   /Users/atekade/IdeaProjects/scala-spark-streaming/target/scala-2.11/scala-spark-streaming_2.11-1.0.jar
然后将
.sh
脚本提交给主pod-

kubectl exec spark-master-fcfd55d7d-qrpsw -it spark-shell` 
kubectl exec spark-master-fcfd55d7d-qrpsw /Users/atekade/IdeaProjects/scala-spark-streaming/logstreamer.sh
但这给了我一个错误-

OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"/Users/atekade/IdeaProjects/scala-spark-streaming/logstreamer.sh\": stat /Users/atekade/IdeaProjects/scala-spark-streaming/logstreamer.sh: no such file or directory": unknown
command terminated with exit code 126

我做错了什么?我的目的是让这些主节点和工作节点完成工作

从错误中可以看出:

OCI runtime exec失败:exec失败:容器\u linux.go:345:启动容器进程导致“exec:\”/Users/atekade/IdeaProjects/scala spark streaming/logstreamer.sh\”:stat/Users/atekade/IdeaProjects/scala spark streaming/logstreamer.sh:无此类文件或目录:未知 命令终止,退出代码为126

我们最感兴趣的是部分
/Users/atekade/IdeaProjects/scala spark streaming/logstreamer.sh:没有这样的文件或目录
,这意味着pod无法找到
logstreamer.sh
文件

脚本
logstreamer.sh
需要上传到
spark master
pod。 另外,scala-spark-streaming_2.11-1.0.jar也需要在那里

您可以配置,这将非常有用,因为如果您的pod将被重新调度,所有未存储在PV上的数据都将丢失

这里是指向永久卷的链接

您也可以使用不同的