当前位置: 首页 > 知识库问答 >
问题:

Spark Kubernetes

吴胜
2023-03-14

我试图在Kubernetes上运行Spark作为调度程序。

当使用kubectl proxy从kubernetes集群外部运行时,它可以正常工作。

spark-shell --master k8s://http://localhost:8001 --conf spark.kubernetes.container.image=abdoumediaoptimise/spark

但是,每当我们尝试从pod中直接运行spark-shell或spark-submit时,它都不会起作用(即使使用--conf spark.kubernetes.authenticate.driver.ServiceAccountName=spark从spark文档中执行rbac也不会起作用。我们有授权执行异常:

io.fabric8.kubernetes.client.kubernetesclientException:执行:GET at:https://kubernetes/api/v1/namespaces/default/pods失败?LabelSelector=spark-app-selector%3dspark-application-1574714537374,spark-role%3dexecutor。消息:禁止!配置的服务帐户没有访问权限。服务帐户可能已被吊销。pods被禁止:用户“system:serviceaccount:default:default”无法在命名空间“default”中的API组“”中列出资源“pods”

知道如何从吊舱里发射火花吗?这实际上使得在笔记本电脑上使用spark K8s://是不可能的

火花RBAC YAML文件

apiVersion: v1
kind: ServiceAccount
metadata:
  name:  spark
  namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: spark
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit
subjects:
  - kind: ServiceAccount
    name: spark
    namespace: default

共有1个答案

柯昆
2023-03-14

Spark.Kubernetes.authenticate.driver.ServiceAccountName-是ServiceAccount名称,火花驱动程序的Kubernetes客户端使用它对Kubernetes API进行身份验证,以请求执行程序。

您正在查找spark.Kubernetes.authenticate.submission.*,它们用于配置sparksubmit应用程序的Kubernetes客户端,以通过身份验证到Kubernetes API以请求服务、ConfigMap和驱动程序Pod。

要使其正常工作,请使用感兴趣的ServiceAccount配置Pod:spec.ServiceAccountName: 。之后,使用挂载到Pod内的/var/run/secrets/kubernetes.io/serviceAccount目录文件来配置spark.kubernetes.authenticate.submission.*选项。

 类似资料:

相关问答

相关文章

相关阅读