【发布时间】:2019-10-22 09:27:14
【问题描述】:
我正在尝试在 EKS 上运行 Spark。创建了一个 EKS 集群,添加了节点,然后尝试从 EC2 实例提交 Spark 作业。
运行以下命令进行访问:
kubectl create serviceaccount spark
kubectl create clusterrolebinding spark-role --clusterrole=admin --serviceaccount=default:spark --namespace=default
使用的 spark-submit 命令:
bin/spark-submit \
--master k8s://https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.us-east-1.eks.amazonaws.com \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.executor.instances=2 \
--conf spark.app.name=spark-pi \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--conf spark.kubernetes.container.image=k8sspark:latest \
--conf spark.kubernetes.authenticate.submission.caCertFile=ca.pem \
local:////usr/spark-2.4.3-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.4.3.jar 100000
返回:
log4j:WARN 找不到记录器的附加程序(io.fabric8.kubernetes.client.Config)。 log4j:WARN 请正确初始化 log4j 系统。 log4j:WARN 请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig 了解更多信息。 使用 Spark 的默认 log4j 配置文件:org/apache/spark/log4j-defaults.properties 19/06/06 16:03:50 WARN WatchConnectionManager:在 close() 中关闭后,执行程序没有及时终止,将其杀死:io.fabric8.kubernetes.client.dsl.internal.WatchConnectionManager@5b43fbf6 线程“主”io.fabric8.kubernetes.client.KubernetesClientException 中的异常:执行失败:POST 在:https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.us-east-1.eks.amazonaws.com/api/v1/namespaces/default/pods。消息:pods 被禁止:用户“system:anonymous”无法在命名空间“default”中的 API 组“”中创建资源“pods”。收到状态:Status(apiVersion=v1, code=403, details=StatusDetails(causes=[], group=null, kind=pods, name=null, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=状态,message=pods 被禁止:用户“system:anonymous”无法在命名空间“default”中的 API 组“”中创建资源“pods”,metadata=ListMeta(_continue=null, resourceVersion=null, selfLink=null, additionalProperties= {}),原因=禁止,状态=失败,附加属性={})。 在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:478) 在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport.java:417) 在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:381) 在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:344) 在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleCreate(OperationSupport.java:227) 在 io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleCreate(BaseOperation.java:787) 在 io.fabric8.kubernetes.client.dsl.base.BaseOperation.create(BaseOperation.java:357) 在 org.apache.spark.deploy.k8s.submit.Client$$anonfun$run$2.apply(KubernetesClientApplication.scala:141) 在 org.apache.spark.deploy.k8s.submit.Client$$anonfun$run$2.apply(KubernetesClientApplication.scala:140) 在 org.apache.spark.util.Utils$.tryWithResource(Utils.scala:2543) 在 org.apache.spark.deploy.k8s.submit.Client.run(KubernetesClientApplication.scala:140) 在 org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:250) 在 org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:241) 在 org.apache.spark.util.Utils$.tryWithResource(Utils.scala:2543) 在 org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.run(KubernetesClientApplication.scala:241) 在 org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.start(KubernetesClientApplication.scala:204) 在 org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:849) 在 org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167) 在 org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195) 在 org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86) 在 org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 19/06/06 16:03:50 信息 ShutdownHookManager:调用了关闭挂钩 19/06/06 16:03:50 INFO ShutdownHookManager:删除目录 /tmp/spark-0060fe01-33eb-4cb4-b96b-d5be687016bc
尝试使用管理员权限创建不同的集群角色。但它没有用。
知道如何解决这个问题吗?
【问题讨论】:
-
你是如何创建 pod 的?您是否将服务帐户附加到它?您的 pod 似乎没有被分配您创建的服务帐户。
-
对我来说这更像是身份验证问题,因为您与 k8s 集群的连接转向
system:anonymous,可能建议还添加--conf spark.kubernetes.authenticate.submission.oauthToken属性并提供适当的令牌。 -
sudo ./bin/spark-submit 对你有用吗?
-
您好,您找到问题了吗?我也被困在同一点上。
标签: apache-spark kubernetes amazon-eks