You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark Operator部署问题:spark-pi-driver运行但无Executor启动求助

Spark Operator部署问题:Spark Pi Driver运行但无法启动Executor

按照相关指南部署Spark Operator后,提交Spark Pi应用时出现异常:spark-pi-driver Pod持续处于运行状态,但始终无法启动Executor Pod。已尝试更换无法访问的原镜像、调整RBAC权限配置,问题仍未解决。

已配置的RBAC规则

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: spark-role
rules:
- apiGroups: ["", "sparkoperator.k8s.io"]
  resources: ["events", "pods", "services", "configmaps", "sparkapplications/status", "scheduledsparkapplications", "sparkapplications"]
  verbs: ["*"]

---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: spark-role-binding
subjects:
- kind: ServiceAccount
  name: spark
  namespace: spark-jobs
roleRef:
  kind: ClusterRole
  name: spark-role
  apiGroup: rbac.authorization.k8s.io

Spark Pi应用配置

apiVersion: "sparkoperator.k8s.io/v1beta2"
kind: SparkApplication
metadata:
  name: spark-pi
  namespace: spark-operator
spec:
  type: Scala
  mode: cluster
  image: "ghcr.io/googlecloudplatform/spark-operator:v1beta2-1.3.4-3.1.1"
  imagePullPolicy: Always
  mainClass: org.apache.spark.examples.SparkPi
  mainApplicationFile: "local:///opt/spark/examples/jars/spark-examples_2.12-3.1.1.jar"
  sparkVersion: "3.1.1"
  restartPolicy:
    type: Never
  volumes:
    - name: "test-volume"
      hostPath:
        path: "/tmp"
        type: Directory
  driver:
    cores: 1
    coreLimit: "1200m"
    memory: "512m"
    labels:
      version: 3.1.1
    serviceAccount: spark
    volumeMounts:
      - name: "test-volume"
        mountPath: "/tmp"
  executor:
    cores: 1
    instances: 1
    memory: "512m"
    labels:
      version: 3.1.1
    serviceAccount: spark
    volumeMounts:
      - name: "test-volume"
        mountPath: "/tmp"

Spark Pi Driver Pod日志

++ id -u
+ myuid=0
++ id -g
+ mygid=0
+ set +e
++ getent passwd 0
+ uidentry=root:x:0:0:root:/root:/bin/bash
+ set -e
+ echo 0
0
0
root:x:0:0:root:/root:/bin/bash
+ echo 0
+ echo root:x:0:0:root:/root:/bin/bash
+ [[ -z root:x:0:0:root:/root:/bin/bash ]]
+ exec /usr/bin/tini -s -- /usr/bin/spark-operator driver --properties-file /opt/spark/conf/spark.properties --class org.apache.spark.examples.SparkPi local:///opt/spark/examples/jars/spark-examples_2.12-3.1.1.jar

排查与解决建议

  • 修正ServiceAccount命名空间匹配:RBAC绑定中的spark ServiceAccount属于spark-jobs命名空间,但SparkApplication部署在spark-operator命名空间。需在spark-operator命名空间创建同名ServiceAccount,或修改ClusterRoleBinding的subjects字段指定目标命名空间。
  • 更换正确的Spark运行时镜像:当前使用的ghcr.io/googlecloudplatform/spark-operator是Operator自身镜像,而非Spark运行时镜像。需替换为包含Spark环境的镜像,例如ghcr.io/googlecloudplatform/spark:v3.1.1或国内镜像registry.cn-hangzhou.aliyuncs.com/apache/spark:3.1.1。
  • 检查Spark Operator日志:查看spark-operator Pod的日志,排查是否存在应用调度、权限校验或镜像拉取相关错误。
  • 验证资源配额:确认spark-operator命名空间有足够的CPU、内存配额,避免Executor因资源不足无法调度。
  • 测试RBAC权限有效性:执行以下命令验证ServiceAccount权限:
    kubectl auth can-i create pods --as=system:serviceaccount:spark-operator:spark
    kubectl auth can-i create services --as=system:serviceaccount:spark-operator:spark
    
  • 移除hostPath卷测试:先删除配置中的volumes和volumeMounts字段,排除宿主目录权限或节点一致性问题对应用的影响。

内容的提问来源于stack exchange,提问作者Dmitriy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:58:27