尝试在k8s 上运行spark
spark-submit --master k8s://https://ip:port --deploy-mode cluster --name test-run-spark --conf spark.kubernetes.container.image=Docker-image --conf spark.kubernetes.driver.container.image=docker4tg/Docker-image --conf spark.kubernetes.executor.container.image=docker4tg/Docker-image --conf spark.kubernetes.driver.pod.name=test-run-spark --class [class] --num-executors 1 --executor-memory 512m --driver-memory 512m --driver-cores 2 --executor-cores 2 --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark local:///[jar].jar
使用相同的docker镜像,我可以将docker镜像拉到本地。但是k8s pod不能,但这里有缓存。同一个图像只有几个标签,我向上或向下移动mkdir命令来更改哈希,成功了。我没有进行逻辑更改,但它对3到4个标签都很有效,复制成功运行。我无法理解
请帮我解决这个问题。
Dockerfile
FROM ubuntu:18.04
ARG SPARKVERSION=tmpsVersion
ARG HADOOPVERSION=tmpHVersion
ENV SPARK_VERSION=$SPARKVERSION
ENV HADOOP_VERSION=$HADOOPVERSION
RUN sed -i s/http/ftp/ /etc/apt/sources.list && apt-get update -y
RUN apt-get install wget -y
RUN apt-get install openjdk-8-jdk -y
RUN sed -i s/http/ftp/ /etc/apt/sources.list && apt-get update -y
RUN mkdir -p /opt/spark/work-dir
WORKDIR /opt/spark/work-dir
RUN wget -O spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz https://archive.apache.org/dist/spark/spark-${SPARK_VERSION}/spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz
RUN tar -xzvf spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz -C /opt/spark/
RUN rm -rf spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz
RUN mv -f /opt/spark/spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}/* /opt/spark/
RUN rm -rf /opt/spark/spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}
ENV SPARK_HOME=/opt/spark
ENV PATH="${SPARK_HOME}/bin:${PATH}"
RUN mkdir -p /opt/spark/data-jars/
COPY [jar.jar] /opt/spark/data-jars/
ENTRYPOINT [ "/opt/spark/kubernetes/dockerfiles/spark/entrypoint.sh" ]
错误:
kubectl get pods; kubectl logs test-run-spark
NAME READY STATUS RESTARTS AGE
test-run-spark 0/1 ImagePullBackOff 0 2m36s
Error from server (BadRequest): container "spark-kubernetes-driver" in pod "test-run-spark" is waiting to start: trying and failing to pull image
请帮我处理这些家伙
您的minikube
环境与主机隔离,因此,如果您的主机上已经有映像,或者您可以提取映像,这并不意味着您可以在minikube
中执行相同的操作。
如果您想在minikube
上下文中构建图像:
# export minikube docker config
eval $(minikube docker-env)
# build your image directly in minikube
docker build
如果您在本地有图像,您可以通过以下方式将其加载到minikube
:
minikube image load IMAGE_NAME
如果您想让minikube
从专用远程注册表(例如:dockerhub(中提取映像,您可以按照以下说明将注册表凭据添加到minikube
中。