我正试图按照官方网站上的说明在Kubernetes上启动spark:Spark Kubernetes。我按照说明使用他们提供的脚本创建了一个图像,如下所示:
./bin/docker-image-tool.sh -r <repo> -t my-tag -p ./kubernetes/dockerfiles/spark/bindings/python/Dockerfile build
对于<repo>
,我使用了pyspark。我为Kubernetes提交的spark如下:
./bin/spark-submit
--master k8s://https://<ipaddress>:<port>
--deploy-mode cluster
--name spark-pi
--class org.apache.spark.examples.SparkPi
--conf spark.executor.instances=5
--conf spark.kubernetes.container.image=pyspark/spark-py:my-tag
--conf spark.kubernetes.file.upload.path=/usr/local/spark/examples
local:///usr/local/spark/examples/spark-examples_2.12-3.0.0.jar
kubernetes的设置看起来还可以,但是pod获取的图像出现问题,导致重新启动。我不确定我对这张照片的命名是否正确。
该示例使用pyspark/spark py:my标记作为应该存在的容器映像,由于不存在,您将得到作为image Pull error的错误。您可以将您的映像推送到dockerhub或您的私人注册表,并将其用作example.com/repo/spark:v1.0.0
,其中example.com是您的私人注册中心,repo是您在那里的存储库。
此外,当您运行./bin/docker-image-tool.sh -r <repo> -t my-tag build
时,您需要指定一个repo。你的命令应该像./bin/docker-image-tool.sh -r docker.io/myrepo -t v2.3.0 -p kubernetes/dockerfiles/spark/bindings/python/Dockerfile build
如果您使用的是minikube,那么构建镜像将直接进入minikube的Docker守护进程。没有必要将图像推送到minikube中。在这种情况下,当在minikube集群内运行应用程序时,它们将自动可用。