【问题标题】:kubernetes not able to pull image from spark master hostkubernetes 无法从 spark master 主机中提取图像
【发布时间】:2018-11-14 06:07:04
【问题描述】:

我有 3 个节点 [主机 a,主机 b,主机 c] kubernetes 集群(版本 1.12.2)。我正在尝试运行 kubernetes document 中提到的 spark-pi 示例 jar。

主机a是我的kubernetes Master。 >> kubectl get nodees 列出所有三个节点。

我已经使用 spark 2.3.0 二进制文件夹中提供的内容构建了 spark docker 映像。

>> sudo ./bin/docker-image-tool.sh -r docker.io/spark/spark -t spark230 build

我收到了图像构建成功的消息。

>> docker images ls

REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
docker.io/spark/spark                spark230            6a2b645d7efe        About an hour ago   346 MB
docker.io/weaveworks/weave-npc       2.5.0               d499500e93d3        7 days ago          49.5 MB
docker.io/weaveworks/weave-kube      2.5.0               a5103f96993a        7 days ago          148 MB
docker.io/openjdk                    8-alpine            97bc1352afde        2 weeks ago         103 MB
k8s.gcr.io/kube-proxy                v1.12.2             15e9da1ca195        2 weeks ago         96.5 MB
k8s.gcr.io/kube-apiserver            v1.12.2             51a9c329b7c5        2 weeks ago         194 MB
k8s.gcr.io/kube-controller-manager   v1.12.2             15548c720a70        2 weeks ago         164 MB
k8s.gcr.io/kube-scheduler            v1.12.2             d6d57c76136c        2 weeks ago         58.3 MB
k8s.gcr.io/etcd                      3.2.24              3cab8e1b9802        7 weeks ago         220 MB
k8s.gcr.io/coredns                   1.2.2               367cdc8433a4        2 months ago        39.2 MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        10 months ago       742 kB
> ./bin/spark-submit     
 --master k8s://https://<api-server>:<api
> server port>      --deploy-mode cluster      --name spark-pi     
> --class org.apache.spark.examples.SparkPi       --conf spark.executor.instances=5     --conf
> spark.kubernetes.container.image=spark/spark:spark230    --conf
> spark.kubernetes.authenticate.driver.serviceAccountName=spark   
> local:///opt/spark/examples/jars/spark-examples_2.11-2.3.0.jar

当我提交上述命令时,它有时会给出正确的输出。其他时候它会抛出错误。

>  code = Unknown desc = repository docker.io/spark/spark not found:
 does not exist or no pull access, reason=ErrImagePull

当我进一步调试它时,它看起来像,每当节点名称:主机 b 或主机 c 时,它都会抛出错误消息。

当 node name : host a 时,它运行良好。看起来其他节点无法找到图像。

问题:

  1. 我应该在所有节点上安装 spark 并在所有节点上构建 docker 映像吗?
  2. 是否可以将图像引用从单个节点 [host a] 传递到其他节点?即如何让其他节点从主机 a 引用相同的图像。

【问题讨论】:

    标签: docker apache-spark kubernetes


    【解决方案1】:

    是的,您需要在所有节点中构建 Spark 映像。您可以编写包装脚本以在所有节点上调用“rebuild-image.sh”,如下所示:

    for h in hostnames; do
        rsync -av /opt/spark ${h}:/opt
        ssh ${h} /opt/spark/rebuild-image.sh
    

    【讨论】:

      【解决方案2】:

      您始终可以将 docker 映像保存为 tar 文件,然后将该 tar 文件复制到其他主机并在那里加载映像。

      将 docker 镜像保存为 tar 文件:

      sudo docker save -o <path for generated tar file> <image name>
      

      现在使用 scp 或其他一些复制工具将您的 tar 文件复制到其他主机。并使用以下方式加载 docker 映像:

      sudo docker load -i <path to image tar file>
      

      希望对你有帮助

      【讨论】:

      • 谢谢。这澄清了。
      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 2019-07-24
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多