【问题标题】:Spark Kubernetes Error : Pod Already ExistsSpark Kubernetes 错误:Pod 已经存在
【发布时间】:2020-08-21 17:56:35
【问题描述】:

当我尝试通过 spark-submit 提交我的应用程序时,我收到以下错误: 请帮我解决问题

错误:

pod name: newdriver
         namespace: default
         labels: spark-app-selector -> spark-a17960c79886423383797eaa77f9f706, spark-role -> driver
         pod uid: 0afa41ae-4e4c-47be-86a3-1ef77739506c
         creation time: 2020-05-06T14:11:29Z
         service account name: spark
         volumes: spark-local-dir-1, spark-conf-volume, spark-token-tks2g
         node name: minikube
         start time: 2020-05-06T14:11:29Z
         phase: Running
         container status:
                 container name: spark-kubernetes-driver
                 container image: spark-py:v3.0
                 container state: running
                 container started at: 2020-05-06T14:11:31Z
Exception in thread "main" io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: POST at: https://172.17.0.2:8443/api/v1/namespaces/default/pods. Message: pods "newtrydriver" already exists. Received status: Status(apiVersion=v1, code=409, details=StatusDetails(causes=[], group=null, kind=pods, name=newtrydriver, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=Status, message=pods "newtrydriver" already exists, metadata=ListMeta(_continue=null, remainingItemCount=null, resourceVersion=null, selfLink=null, additionalProperties={}), reason=AlreadyExists, status=Failure, additionalProperties={}).
        at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:510)
        at io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport.java:449)
        at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:413)
        at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:372)
        at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleCreate(OperationSupport.java:241)
        at io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleCreate(BaseOperation.java:819)
        at io.fabric8.kubernetes.client.dsl.base.BaseOperation.create(BaseOperation.java:334)
        at io.fabric8.kubernetes.client.dsl.base.BaseOperation.create(BaseOperation.java:330)
        at org.apache.spark.deploy.k8s.submit.Client.$anonfun$run$2(KubernetesClientApplication.scala:130)
        at org.apache.spark.deploy.k8s.submit.Client.$anonfun$run$2$adapted(KubernetesClientApplication.scala:129)
        at org.apache.spark.util.Utils$.tryWithResource(Utils.scala:2539)
        at org.apache.spark.deploy.k8s.submit.Client.run(KubernetesClientApplication.scala:129)
        at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.$anonfun$run$4(KubernetesClientApplication.scala:221)
        at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.$anonfun$run$4$adapted(KubernetesClientApplication.scala:215)
        at org.apache.spark.util.Utils$.tryWithResource(Utils.scala:2539)
        at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.run(KubernetesClientApplication.scala:215)
        at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.start(KubernetesClientApplication.scala:188)
        at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:928)
        at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
        at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
        at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
        at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1007)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1016)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
20/05/06 14:11:34 INFO ShutdownHookManager: Shutdown hook called
20/05/06 14:11:34 INFO ShutdownHookManager: Deleting directory /tmp/spark-b7ea9c80-6040-460a-ba43-5c6e656d3039
  • 提交作业到k8s的配置

    ./spark-submit --master k8s://https://172.17.0.2:8443 --deploy-mode 集群 --conf spark.executor.instances=3 --conf spark.kubernetes.container.image=spark-py:v3.0 --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --name 新尝试 --conf spark.kubernetes.driver.pod.name=newdriver local:///opt/spark/examples/src/main/python/spark-submit-old.py

  • 在集群模式下在 k8s 上运行 spark
  • 我的 minikube 上没有运行名为 newdriver 的其他 Pod

【问题讨论】:

  • 这个错误很明显,因为您在 Minikube 中确实有一个同名的 pod。尝试添加restartPolicy: Never
  • @Gupta 感谢您的回复,不,我没有任何要在此处创建的同名 pod,您能否告诉我如何添加 restartPolicy 我是 spark 新手和 Kubernetes。我刚刚查看了spark官方文档,没有可以添加到kubernetes客户端的restartPolicy之类的东西。
  • 你能分享你的清单文件吗?

标签: apache-spark kubernetes pyspark


【解决方案1】:

请通过运行kubectl get pods --namespace default --show-all 检查命名空间default 中是否有一个名为newdriver 的Pod。您可能已经拥有 TerminatedCompleted Spark Driver Pod,该名称是之前运行留下的。如果是这样,请运行 kubectl delete pod newdriver --namespace default 将其删除,然后再次尝试启动新的 Spark 作业。

【讨论】:

  • 我检查了默认 namespace 中没有这样名称的 pod,我确实删除了 pod new driver 但没有成功。
  • 那么newtrydriver 呢?基本上思路是你应该有,否则异常信息没有意义,需要更多的调试信息。
猜你喜欢
  • 2019-02-09
  • 1970-01-01
  • 2021-10-04
  • 2019-05-14
  • 2016-09-20
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多